diff --git a/.superpowers/brainstorm/27310-1785154470/content/001-batch-print-merge-demo.html b/.superpowers/brainstorm/27310-1785154470/content/001-batch-print-merge-demo.html new file mode 100644 index 000000000..836a1603d --- /dev/null +++ b/.superpowers/brainstorm/27310-1785154470/content/001-batch-print-merge-demo.html @@ -0,0 +1,586 @@ + + + + + + 运输计划 · 多选合打单据 Demo + + + +
+

运输计划 · 多选合打单据 Demo

+

+ 勾选多条计划 →「打印单据」→ 按规则校验 → 右侧预览「产品合并到一张单据」。 + 本页仅演示交互与合打规则,非最终生产版式。 +

+ +
+

合打规则(客户确认稿)

+
+
+ 入库单 + 勾选计划的客户名称一致且计划日期一致才可合打;产品行合并到一张入库单。 +
+
+ 送(提)货单 + 同入库单:客户名称 + 计划日期均须一致。 +
+
+ 分装单 + 不校验客户名称、计划日期;勾选即可合打产品到一张分装单。 +
+
+

+ 演示数据已覆盖:同客户同日可合打、跨客户/跨日拦截、分装单放行。另按现有能力:入库类计划只能打入库单,出库类只能打送(提)货单/分装单。 +

+
+ +
+
+

运输计划列表(多选)

+
+ 已选 0 项 + + +
+ + + + + + + + + + + + + +
计划号计划日期客户名称类型产品摘要
+
+
+ +
+

合打预览

+
+
勾选计划并选择打印类型后,在此预览合并产品明细
+
+
+
+
+ + + + diff --git a/.superpowers/brainstorm/27310-1785154470/content/002-batch-print-inbound-template.html b/.superpowers/brainstorm/27310-1785154470/content/002-batch-print-inbound-template.html new file mode 100644 index 000000000..82b701c5b --- /dev/null +++ b/.superpowers/brainstorm/27310-1785154470/content/002-batch-print-inbound-template.html @@ -0,0 +1,748 @@ + + + + + + 运输计划 · 多选合打单据 Demo + + + +
+

运输计划 · 多选合打单据 Demo

+

+ 勾选多条计划 →「打印单据」→ 按规则校验 → 右侧预览「产品合并到一张单据」。 + 本页仅演示交互与合打规则,非最终生产版式。 +

+ +
+

合打规则(客户确认稿)

+
+
+ 入库单 + 勾选计划的客户名称一致且计划日期一致才可合打;产品行合并到一张入库单。 +
+
+ 送(提)货单 + 同入库单:客户名称 + 计划日期均须一致。 +
+
+ 分装单 + 不校验客户名称、计划日期;勾选即可合打产品到一张分装单。 +
+
+

+ 演示数据已覆盖:同客户同日可合打、跨客户/跨日拦截、分装单放行。另按现有能力:入库类计划只能打入库单,出库类只能打送(提)货单/分装单。 +

+
+ +
+
+

运输计划列表(多选)

+
+ 已选 0 项 + + +
+ + + + + + + + + + + + + +
计划号计划日期客户名称类型产品摘要
+
+
+ +
+

合打预览

+
+
勾选计划并选择打印类型后,在此预览合并产品明细
+
+
+
+
+ + + + diff --git a/.superpowers/brainstorm/27310-1785154470/content/003-all-slips-template.html b/.superpowers/brainstorm/27310-1785154470/content/003-all-slips-template.html new file mode 100644 index 000000000..ebff60e40 --- /dev/null +++ b/.superpowers/brainstorm/27310-1785154470/content/003-all-slips-template.html @@ -0,0 +1,865 @@ + + + + + + 运输计划 · 多选合打单据 Demo + + + +
+

运输计划 · 多选合打单据 Demo

+

+ 勾选多条计划 →「打印单据」→ 按规则校验 → 右侧预览「产品合并到一张单据」。 + 本页仅演示交互与合打规则,非最终生产版式。 +

+ +
+

合打规则(客户确认稿)

+
+
+ 入库单 + 勾选计划的客户名称一致且计划日期一致才可合打;产品行合并到一张入库单。 +
+
+ 送(提)货单 + 同入库单:客户名称 + 计划日期均须一致。 +
+
+ 分装单 + 不校验客户名称、计划日期;勾选即可合打产品到一张分装单。 +
+
+

+ 合打产品行策略:分行列出(不合并数量);入库单/送(提)货单第一列为「单据编号」填各计划号;分装单第一列为「序号」按行递增。 + 演示数据已覆盖:同客户同日可合打、跨客户/跨日拦截、分装单放行。另按现有能力:入库类计划只能打入库单,出库类只能打送(提)货单/分装单。 +

+
+ +
+
+

运输计划列表(多选)

+
+ 已选 0 项 + + +
+ + + + + + + + + + + + + +
计划号计划日期客户名称类型产品摘要
+
+
+ +
+

合打预览

+
+
勾选计划并选择打印类型后,在此预览合并产品明细
+
+
+
+
+ + + + diff --git a/.superpowers/brainstorm/27310-1785154470/content/004-remark-merge.html b/.superpowers/brainstorm/27310-1785154470/content/004-remark-merge.html new file mode 100644 index 000000000..26ef8f53a --- /dev/null +++ b/.superpowers/brainstorm/27310-1785154470/content/004-remark-merge.html @@ -0,0 +1,881 @@ + + + + + + 运输计划 · 多选合打单据 Demo + + + +
+

运输计划 · 多选合打单据 Demo

+

+ 勾选多条计划 →「打印单据」→ 按规则校验 → 右侧预览「产品合并到一张单据」。 + 本页仅演示交互与合打规则,非最终生产版式。 +

+ +
+

合打规则(客户确认稿)

+
+
+ 入库单 + 勾选计划的客户名称一致且计划日期一致才可合打;产品行合并到一张入库单。 +
+
+ 送(提)货单 + 同入库单:客户名称 + 计划日期均须一致。 +
+
+ 分装单 + 不校验客户名称、计划日期;勾选即可合打产品到一张分装单。 +
+
+

+ 合打策略:沿用现网三类单据模版,只合并物料表格行(分行列出,不合并数量); + 入库/送货「单据编号」= 各计划号;分装「序号」递增。 + 表头:客户/日期取共有值(入库、送货须一致);备注= 各计划备注换行拼接(一行一计划); + 收货联系方式留空;不填车辆信息。 +

+
+ +
+
+

运输计划列表(多选)

+
+ 已选 0 项 + + +
+ + + + + + + + + + + + + +
计划号计划日期客户名称类型产品摘要
+
+
+ +
+

合打预览

+
+
勾选计划并选择打印类型后,在此预览合并产品明细
+
+
+
+
+ + + + diff --git a/backend/app.pid b/backend/app.pid deleted file mode 100644 index 296b912f0..000000000 --- a/backend/app.pid +++ /dev/null @@ -1 +0,0 @@ -87807 diff --git a/backend/graphify-out/cache/ast/v0.9.4/065d84b86eae1b304ba84b48f5a77de89b4fef14fe714a61b31343c531887e1a.json b/backend/graphify-out/cache/ast/v0.9.4/065d84b86eae1b304ba84b48f5a77de89b4fef14fe714a61b31343c531887e1a.json new file mode 100644 index 000000000..d69675e22 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/065d84b86eae1b304ba84b48f5a77de89b4fef14fe714a61b31343c531887e1a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "label": "contract_product.py", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L21"}, {"id": "crmcontractproduct", "label": "CrmContractProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "label": "_tier_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L54"}, {"id": "crmcontractproductpricetier", "label": "CrmContractProductPriceTier", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "label": "list_contract_products()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L78"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "label": "_decimal_value()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L122"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "label": "_get_field()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L130"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "label": "_parse_optional_date()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L137"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "label": "calculate_subtotal()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "label": "_letter_oss_ids_to_json()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L164"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "label": "insert_contract_product()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L174"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "label": "batch_insert_contract_products()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L262"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "label": "delete_price_tiers_by_contract_id()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L306"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "label": "delete_products_by_contract_id()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L323"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "label": "save_price_tiers_for_product()", "file_type": "code", "source_file": "app/crud/crm/contract_product.py", "source_location": "L339"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_1", "label": "CRM \u5408\u540c\u4ea7\u54c1\u660e\u7ec6 CRUD \u2014 \u5bf9\u7167 CrmContractProductServiceImpl.java", "file_type": "rationale", "source_file": "app/crud/crm/contract_product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_324", "label": "Java: deleteByContractId \u2014 \u8f6f\u5220\u9664\u4ea7\u54c1\u660e\u7ec6\u53ca\u8c03\u4ef7\u533a\u95f4", "file_type": "rationale", "source_file": "app/crud/crm/contract_product.py", "source_location": "L324"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_349", "label": "Java: savePriceTiersForProduct", "file_type": "rationale", "source_file": "app/crud/crm/contract_product.py", "source_location": "L349"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "app_crud_crm_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "app_crud_crm_quote_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "app_services_crm_supplier_hazard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "target": "crmcontractproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "target": "crmcontractproductpricetier", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L130", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "crmcontractproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "target": "crmcontractproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L323", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L323", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L184", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L184", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L184", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L189", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "crmcontractproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L196", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L291", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L325", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L355", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L355", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "crmcontractproductpricetier", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L367", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_324", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L324", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_rationale_349", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract_product.py", "source_location": "L349", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L41", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L41"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L49", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L49"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "loads", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L59", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L60"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L68", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L68"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L69", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L69"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "_get_contract_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L89", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L90", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "CrmContractProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L90"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L96", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L101", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "CrmContractProductPriceTier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L101"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L103", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L108", "receiver": "tier_q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L114", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L114", "receiver": "tier_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L116", "receiver": "tier_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "callee": "enrich_products_with_hazard_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "callee": "Decimal", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L125"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "date", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L140"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L140"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L144", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L147"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L147"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "callee": "strptime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L149", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L167"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L168", "receiver": "letter_oss_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L169"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L170", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L195", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "get_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L229", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L241", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L245", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "_resolve_line_brand_fields", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L257", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L258", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L279", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L281", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L302", "receiver": "entities"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L308", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "callee": "CrmContractProductPriceTier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L308"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L315", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L319", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L327", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "callee": "CrmContractProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L327"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L331", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L335", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L352", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L358", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L361", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L380", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py", "source_location": "L381", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_batch_insert_contract_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_calculate_subtotal", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_decimal_value", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_price_tiers_by_contract_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_delete_products_by_contract_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_get_field", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_insert_contract_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_letter_oss_ids_to_json", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_list_contract_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_parse_optional_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_save_price_tiers_for_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_product_tier_row_to_dict"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/176c4977968144575972e4e3771ccd59261bd7d27cdcbf22611e9b7f425489d1.json b/backend/graphify-out/cache/ast/v0.9.4/176c4977968144575972e4e3771ccd59261bd7d27cdcbf22611e9b7f425489d1.json new file mode 100644 index 000000000..7ec4633f4 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/176c4977968144575972e4e3771ccd59261bd7d27cdcbf22611e9b7f425489d1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "label": "io_order.py", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitemread", "label": "IoOrderItemRead", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L11"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitempatch", "label": "IoOrderItemPatch", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L30"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderpatch", "label": "IoOrderPatch", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L36"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderread", "label": "IoOrderRead", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderlistresponse", "label": "IoOrderListResponse", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderitemfeedback", "label": "PublicIoOrderItemFeedback", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L89"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderfeedback", "label": "PublicIoOrderFeedback", "file_type": "code", "source_file": "app/schemas/pl/io_order.py", "source_location": "L95"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_rationale_1", "label": "\u5165\u5e93\u5355 / \u51fa\u5e93\u5355 Pydantic schemas", "file_type": "rationale", "source_file": "app/schemas/pl/io_order.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitemread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitemread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitempatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitempatch", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderpatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderpatch", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderitemfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderitemfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/io_order.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitempatch", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderitemread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderpatch", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_ioorderread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_io_order_publicioorderitemfeedback"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/198aa8528d1233c4cefd15ae356a2517d0a91539d0c127728aa3255f8c5af151.json b/backend/graphify-out/cache/ast/v0.9.4/198aa8528d1233c4cefd15ae356a2517d0a91539d0c127728aa3255f8c5af151.json new file mode 100644 index 000000000..d2164d300 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/198aa8528d1233c4cefd15ae356a2517d0a91539d0c127728aa3255f8c5af151.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": "L83"}, {"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": "L117"}, {"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": "L141"}, {"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": "L167"}, {"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": "L193"}, {"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": "L214"}, {"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": "L239"}, {"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": "L339"}, {"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": "L398"}, {"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": "L420"}, {"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": "L447"}, {"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": "L509"}, {"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": "L532"}, {"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": "L551"}, {"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": "L584"}, {"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": "L614"}, {"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": "L640"}, {"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": "L670"}, {"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": "L696"}, {"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": "L725"}, {"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": "L757"}, {"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": "L784"}, {"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": "L804"}, {"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": "L831"}, {"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": "L865"}, {"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": "L896"}, {"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": "L923"}, {"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": "L951"}, {"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": "L976"}, {"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": "L1004"}, {"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": "L1028"}, {"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": "L1055"}, {"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": "L1079"}, {"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": "L1098"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_118", "label": "\u8fd0\u8f93\u901a\u7528\u5730\u5740\u5e93 pl_transport_address", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L118"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_168", "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": "L168"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_194", "label": "\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u8868 pl_vehicle_personnel", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_215", "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": "L215"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_340", "label": "\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6\u8868 pl_plan_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L340"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_399", "label": "\u8ba1\u5212\u4ea7\u54c1\u5f52\u6863\u54c1\u724c\u6570\u91cf pl_plan_product_brand_qty", "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_421", "label": "\u8ba1\u5212\u53d8\u66f4\u8bb0\u5f55\u8868 pl_plan_change", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L421"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_510", "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": "L510"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_533", "label": "\u8ba1\u5212-\u8fd0\u8f93\u5173\u8054\u8868 pl_plan_transport", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L533"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_552", "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": "L552"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_585", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355 pl_inbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L585"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_615", "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": "L615"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_641", "label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355 pl_outbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L641"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_671", "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": "L671"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_697", "label": "\u8fd0\u8f93\u5ba1\u6279\u8bb0\u5f55\u8868 pl_transport_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L697"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_726", "label": "\u8fd0\u8d39\u7ed3\u7b97\u8868 pl_freight_settlement", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L726"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_758", "label": "\u8fd0\u8d39\u7ed3\u7b97\u5ba1\u6279 pl_freight_settlement_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L758"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_785", "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": "L785"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_805", "label": "\u6c47\u6b3e\u51ed\u8bc1\u8868 pl_remittance_voucher", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L805"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_866", "label": "\u5e93\u5b58\u6d41\u6c34\u8868 pl_inventory_transaction", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L866"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_897", "label": "\u5e93\u5b58\u9884\u8b66\u8868 pl_inventory_warning", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L897"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_924", "label": "\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u8868 pl_document_reminder", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L924"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_952", "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": "L952"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_977", "label": "\u8f66\u8f86\u7ef4\u4fdd\u7533\u8bf7 pl_vehicle_maintenance_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L977"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1005", "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": "L1005"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1029", "label": "\u8f66\u8f86\u5c3f\u7d20\u7533\u8bf7 pl_vehicle_urea_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1029"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1056", "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": "L1056"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1080", "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": "L1080"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1099", "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": "L1099"}], "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": "L83", "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": "L83", "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": "L117", "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": "L117", "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": "L141", "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": "L141", "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": "L167", "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": "L167", "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": "L193", "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": "L193", "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": "L214", "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": "L214", "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": "L239", "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": "L239", "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": "L339", "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": "L339", "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": "L398", "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": "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_plplanchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L420", "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": "L420", "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": "L447", "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": "L447", "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": "L509", "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": "L509", "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": "L532", "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": "L532", "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": "L551", "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": "L551", "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": "L584", "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": "L584", "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": "L614", "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": "L614", "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": "L640", "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": "L640", "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": "L670", "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": "L670", "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": "L696", "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": "L696", "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": "L725", "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": "L725", "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": "L757", "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": "L757", "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": "L784", "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": "L784", "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": "L804", "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": "L804", "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": "L831", "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": "L831", "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": "L865", "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": "L865", "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": "L896", "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": "L896", "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": "L923", "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": "L923", "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": "L951", "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": "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_plvehiclemaintenanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L976", "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": "L976", "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": "L1004", "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": "L1004", "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": "L1028", "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": "L1028", "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": "L1055", "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": "L1055", "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": "L1079", "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": "L1079", "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": "L1098", "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": "L1098", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_118", "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": "L118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_168", "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": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_194", "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": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_215", "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": "L215", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_340", "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": "L340", "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_plplanproductbrandqty", "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_421", "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": "L421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_510", "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": "L510", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_533", "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": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_552", "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": "L552", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_585", "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": "L585", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_615", "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": "L615", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_641", "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": "L641", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_671", "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": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_697", "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": "L697", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_726", "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": "L726", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_758", "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": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_785", "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": "L785", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_805", "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": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_866", "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": "L866", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_897", "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": "L897", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_924", "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": "L924", "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_plvehiclerechargeapply", "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_977", "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": "L977", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1005", "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": "L1005", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1029", "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": "L1029", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1056", "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": "L1056", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1080", "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": "L1080", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1099", "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": "L1099", "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_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_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_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_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_pltransportsitelink", "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/1ceaae1f5ddf7816391545c9ad220986c7f67fc6ef5c268bea04b29d35c001b0.json b/backend/graphify-out/cache/ast/v0.9.4/1ceaae1f5ddf7816391545c9ad220986c7f67fc6ef5c268bea04b29d35c001b0.json new file mode 100644 index 000000000..2a33acc64 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/1ceaae1f5ddf7816391545c9ad220986c7f67fc6ef5c268bea04b29d35c001b0.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_validate_brand_qty_rows", "label": "validate_brand_qty_rows()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L11"}, {"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": "L36"}, {"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_rationale_47", "label": "\u8f6f\u5220\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", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L47"}], "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_orm", "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": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L7", "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": "L8", "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": "L11", "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": "L11", "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": "L36", "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": "L36", "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": "L36", "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": "L18", "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": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_47", "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": "L47", "weight": 1.0}], "raw_calls": [{"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": "L21", "receiver": "r"}, {"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": "L23", "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": "L24", "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": "L26", "receiver": null}, {"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": "L29", "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": "L31", "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": "L33", "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": "L49", "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": "L49"}, {"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": "L65", "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": "L68", "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": "L68", "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": "L69", "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": "L69", "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": "L70", "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, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L71", "receiver": null}, {"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": "L72", "receiver": null}], "callable_nids": ["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_validate_brand_qty_rows"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/20f79ad1a386d9f3d5192d154132b799380e754778f98cf5c940a782626fc8bd.json b/backend/graphify-out/cache/ast/v0.9.4/20f79ad1a386d9f3d5192d154132b799380e754778f98cf5c940a782626fc8bd.json new file mode 100644 index 000000000..1a6a11188 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/20f79ad1a386d9f3d5192d154132b799380e754778f98cf5c940a782626fc8bd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "label": "quote_product.py", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "label": "_ensure_quote_parent_scope()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L18"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "label": "_decimal_value()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L26"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "label": "_get_field()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L34"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "label": "calculate_subtotal()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "label": "normalize_line_brand()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "label": "product_has_brands()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L64"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "label": "_resolve_line_brand_fields()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L76"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L97"}, {"id": "crmquoteproduct", "label": "CrmQuoteProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "label": "product_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L128"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "label": "list_quote_products()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "label": "get_quote_product()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L154"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "label": "insert_quote_product()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L162"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "label": "update_quote_product()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L241"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "label": "soft_delete_quote_products()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L305"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "label": "batch_insert_quote_products()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L339"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "label": "delete_products_by_quote_id()", "file_type": "code", "source_file": "app/crud/crm/quote_product.py", "source_location": "L367"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_1", "label": "CRM \u62a5\u4ef7\u5355\u4ea7\u54c1\u660e\u7ec6 CRUD \u2014 \u5bf9\u7167 CrmQuoteProductServiceImpl.java", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_46", "label": "Java: calculateSubtotal", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L46"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_98", "label": "ORM \u2192 camelCase\uff08\u5355\u70b9\u771f\u76f8\uff09", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L98"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_139", "label": "Java: queryListByQuoteId", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_312", "label": "Java: deleteWithValidByIds", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L312"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_368", "label": "Java: deleteByQuoteId \u2014 \u8f6f\u5220\u9664\u8be5\u62a5\u4ef7\u5355\u4e0b\u5168\u90e8\u660e\u7ec6", "file_type": "rationale", "source_file": "app/crud/crm/quote_product.py", "source_location": "L368"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_crud_crm_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_services_crm_supplier_hazard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "target": "crmquoteproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "target": "crmquoteproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "target": "crmquoteproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "crmquoteproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "crmquoteproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L367", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L367", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L129", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "crmquoteproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L180", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L254", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L276", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L286", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L315", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_46", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_98", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_139", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_312", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_rationale_368", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/quote_product.py", "source_location": "L368", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "callee": "_get_quote_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L22", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "callee": "Decimal", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L29"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L57", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L67", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L73", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L123", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L123"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L142", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "CrmQuoteProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "callee": "enrich_products_with_hazard_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L156", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L156", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "callee": "CrmQuoteProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L156"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "get_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L208", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L224", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L236", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L237", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L252", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L300", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L301", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L322", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "CrmQuoteProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L322"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L331", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L333", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L335", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L354", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L356", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L370", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "callee": "CrmQuoteProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L370"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L374", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L378", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_batch_insert_quote_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_calculate_subtotal", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_decimal_value", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_delete_products_by_quote_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_ensure_quote_parent_scope", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_field", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_get_quote_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_insert_quote_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_list_quote_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_normalize_line_brand", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_has_brands", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_product_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_resolve_line_brand_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_soft_delete_quote_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_update_quote_product"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/3100cf45f9f35468dc79438b4a57e3cea3dd22cf18c8d609a714d49b5644b3d9.json b/backend/graphify-out/cache/ast/v0.9.4/3100cf45f9f35468dc79438b4a57e3cea3dd22cf18c8d609a714d49b5644b3d9.json new file mode 100644 index 000000000..152f04cfd --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/3100cf45f9f35468dc79438b4a57e3cea3dd22cf18c8d609a714d49b5644b3d9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "label": "pl_inventory_service.py", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "label": "qty_delta_for_plan()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L24"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "label": "assert_outbound_enough()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L32"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "label": "get_or_create_inventory()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L37"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py"}, {"id": "plinventory", "label": "PlInventory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "label": "apply_brand_stock_change()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "label": "reverse_plan_inventory_postings()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L154"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "label": "apply_archive_inventory_for_plan()", "file_type": "code", "source_file": "app/services/pl_inventory_service.py", "source_location": "L193"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_1", "label": "\u8ba1\u5212\u5f52\u6863\u6309\u4ea7\u54c1+\u54c1\u724c\u5199\u5165\u5e93\u5b58\u53f0\u8d26\u4e0e\u6d41\u6c34\u3002 \u76f4\u9500\u5355 (direct) \u9996\u671f\u4e0d\u8bb0\u8d26\uff1b\u5165\u5e93\u589e\u52a0\u3001\u51fa\u5e93\u6263\u51cf\uff1b\u51fa\u5e93\u4e0d\u8db3\u786c\u62e6\u622a\u3002 \u8c03\u6574\u5f52\u6863\u65f6\u5148\u6309 plan_id \u51b2\u9500\u65e7\u6d41", "file_type": "rationale", "source_file": "app/services/pl_inventory_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_161", "label": "\u51b2\u9500\u8be5\u8ba1\u5212\u5df2\u4ea7\u751f\u7684\u5e93\u5b58\u6d41\u6c34\uff08\u8c03\u6574\u5f52\u6863\u524d\u8c03\u7528\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_inventory_service.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_201", "label": "\u5f52\u6863\u540e\u6309\u54c1\u724c\u91cf\uff08\u6216\u65e0\u54c1\u724c actual_qty\uff09\u843d\u8d26\uff1b\u5148\u51b2\u9500\u65e7\u6d41\u6c34\u518d\u91cd\u8bb0\u3002", "file_type": "rationale", "source_file": "app/services/pl_inventory_service.py", "source_location": "L201"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "target": "plinventory", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "target": "plinventory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L74", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L185", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L205", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L205", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L231", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_161", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_rationale_201", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_inventory_service.py", "source_location": "L201", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L34", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L53", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L53", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L53"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L80", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L81", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L121", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L121"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L132", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "callee": "PlInventoryTransaction", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L133", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L134", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L163", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "PlInventoryTransaction", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L163"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L175", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L175"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L209", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L209", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L209"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L215", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L220", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L220"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L226", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "callee": "EMPTY_BRAND_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py", "source_location": "L251"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_archive_inventory_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_apply_brand_stock_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_assert_outbound_enough", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_get_or_create_inventory", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_qty_delta_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_inventory_service_reverse_plan_inventory_postings"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/63ec5922aa1e9bdf8c3b7dfc5b0ccb555535cbf949e32a1055237ba86faaa146.json b/backend/graphify-out/cache/ast/v0.9.4/63ec5922aa1e9bdf8c3b7dfc5b0ccb555535cbf949e32a1055237ba86faaa146.json new file mode 100644 index 000000000..07684da49 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/63ec5922aa1e9bdf8c3b7dfc5b0ccb555535cbf949e32a1055237ba86faaa146.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryread", "label": "InventoryRead", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionread", "label": "InventoryTransactionRead", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L38"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L61"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L78"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L98"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L116"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderstatsread", "label": "DocumentReminderStatsRead", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L122"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerquery", "label": "InventoryLedgerQuery", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionquery", "label": "InventoryTransactionQuery", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L144"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L154"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryquery", "label": "InventorySummaryQuery", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L159"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryitem", "label": "InventorySummaryItem", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L167"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L176"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsquery", "label": "TransportStatsQuery", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L180"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsitem", "label": "TransportStatsItem", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L187"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsresponse", "label": "TransportStatsResponse", "file_type": "code", "source_file": "app/schemas/pl/inventory.py", "source_location": "L194"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningthreshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningthreshold", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderstatsread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderstatsread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L144", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L144", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L167", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L167", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L180", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L180", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/inventory.py", "source_location": "L194", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderstatsread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_documentreminderupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryledgerresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventoryread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorysummaryresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorytransactionresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningthreshold", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_inventorywarningupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_transportstatsresponse"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/6aed7c349c7ba7fedddda30eb8ad79837796376d36893f96da57b8770f8d2619.json b/backend/graphify-out/cache/ast/v0.9.4/6aed7c349c7ba7fedddda30eb8ad79837796376d36893f96da57b8770f8d2619.json new file mode 100644 index 000000000..2b015854e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/6aed7c349c7ba7fedddda30eb8ad79837796376d36893f96da57b8770f8d2619.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": "L43"}, {"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": "L51"}, {"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": "L58"}, {"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": "L68"}, {"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": "L74"}, {"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": "L80"}, {"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": "L84"}, {"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": "L88"}, {"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": "L99"}, {"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": "L149"}, {"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": "L167"}, {"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": "L212"}, {"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": "L233"}, {"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": "L259"}, {"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": "L287"}, {"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": "L295"}, {"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": "L320"}, {"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": "L326"}, {"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": "L335"}, {"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": "L347"}, {"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": "L380"}, {"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": "L398"}, {"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": "L416"}, {"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": "L466"}, {"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": "L542"}, {"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": "L560"}, {"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": "L617"}, {"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": "L654"}, {"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": "L777"}, {"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": "L818"}, {"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": "L840"}, {"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": "L862"}, {"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": "L977"}, {"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": "L999"}, {"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": "L1021"}, {"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": "L1032"}, {"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": "L1056"}, {"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": "L1105"}, {"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": "L1173"}, {"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": "L1267"}, {"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": "L1293"}, {"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": "L1330"}, {"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_238", "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": "L238"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_266", "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": "L266"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_352", "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": "L352"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_388", "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": "L388"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_664", "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": "L664"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_828", "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": "L828"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1063", "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": "L1063"}], "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_orm", "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": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L10", "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": "L11", "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": "L25", "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": "L34", "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": "L35", "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": "L36", "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": "L43", "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": "L51", "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": "L58", "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": "L58", "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": "L58", "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": "L68", "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": "L68", "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": "L68", "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": "L74", "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": "L74", "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": "L74", "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": "L80", "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": "L80", "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": "L80", "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": "L84", "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": "L84", "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": "L84", "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": "L88", "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": "L88", "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": "L99", "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": "L99", "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": "L99", "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": "L149", "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": "L149", "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": "L149", "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": "L149", "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": "L149", "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": "L167", "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": "L167", "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": "L212", "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": "L212", "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": "L212", "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": "L212", "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": "L212", "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": "L212", "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": "L233", "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": "L233", "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": "L259", "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": "L259", "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": "L287", "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": "L287", "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": "L287", "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": "L295", "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": "L295", "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": "L295", "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": "L295", "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": "L320", "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": "L320", "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": "L326", "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": "L335", "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": "L335", "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": "L347", "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": "L347", "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": "L347", "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": "L380", "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": "L380", "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": "L380", "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": "L380", "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": "L398", "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": "L398", "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": "L398", "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": "L398", "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": "L416", "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": "L416", "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": "L416", "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": "L466", "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": "L466", "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": "L466", "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": "L542", "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": "L542", "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": "L560", "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": "L560", "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": "L560", "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": "L560", "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": "L560", "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": "L560", "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": "L560", "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": "L560", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L654", "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": "L654", "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": "L654", "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": "L654", "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": "L654", "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": "L777", "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": "L777", "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": "L777", "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": "L818", "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": "L818", "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": "L818", "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": "L818", "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": "L818", "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": "L840", "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": "L840", "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": "L840", "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": "L840", "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": "L840", "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": "L862", "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": "L862", "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": "L862", "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": "L862", "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": "L862", "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": "L862", "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": "L977", "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": "L977", "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": "L999", "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": "L999", "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": "L1021", "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": "L1021", "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": "L1021", "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": "L1032", "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": "L1032", "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": "L1056", "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": "L1056", "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": "L1056", "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": "L1056", "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": "L1056", "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": "L1105", "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": "L1105", "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": "L1105", "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": "L1105", "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": "L1173", "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": "L1173", "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": "L1173", "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": "L1173", "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": "L1267", "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": "L1267", "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": "L1293", "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": "L1293", "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": "L1293", "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": "L1293", "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": "L1293", "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": "L1330", "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": "L1330", "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": "L1330", "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": "L1330", "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": "L1330", "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": "L60", "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": "L70", "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": "L76", "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": "L81", "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": "L85", "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": "L109", "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": "L110", "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": "L112", "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": "L128", "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": "L220", "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": "L224", "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": "L292", "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": "L303", "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": "L309", "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": "L341", "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": "L355", "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": "L362", "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": "L371", "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": "L391", "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": "L404", "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": "L408", "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": "L449", "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": "L458", "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": "L497", "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": "L517", "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": "L528", "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": "L580", "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": "L594", "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": "L603", "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": "L674", "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": "L695", "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": "L712", "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": "L713", "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": "L756", "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": "L770", "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": "L829", "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": "L851", "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": "L885", "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": "L887", "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": "L902", "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": "L912", "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": "L915", "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": "L960", "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": "L1011", "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": "L1013", "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": "L1022", "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": "L1089", "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": "L1099", "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": "L1115", "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": "L1128", "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": "L1186", "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": "L1189", "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": "L1250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_238", "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": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_266", "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": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_352", "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": "L352", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_388", "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": "L388", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_664", "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": "L664", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_828", "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": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1063", "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": "L1063", "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": "L52", "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": "L113", "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": "L158", "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": "L164", "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": "L175", "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": "L175", "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": "L175"}, {"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": "L187", "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": "L187", "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": "L187", "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": "L187"}, {"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": "L194", "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": "L194", "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": "L199", "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": "L199", "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": "L199"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L209", "receiver": null}, {"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": "L245", "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": "L247", "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": "L270", "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": "L274", "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": "L274", "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": "L274"}, {"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": "L300"}, {"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": "L302", "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": "L306"}, {"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": "L316", "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": "L317", "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": "L329", "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": "L331", "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": "L342", "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": "L395", "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": "L410", "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": "L425", "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": "L425", "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": "L425"}, {"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": "L434", "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": "L436", "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": "L438", "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": "L441", "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": "L441"}, {"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": "L453", "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": "L456", "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": "L461", "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": "L462", "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": "L475", "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": "L475", "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": "L475"}, {"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": "L484", "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": "L486", "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": "L489", "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": "L489"}, {"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": "L506", "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": "L506", "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": "L506"}, {"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": "L516", "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": "L521", "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": "L522", "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": "L523", "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": "L524", "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": "L526", "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": "L536", "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": "L538", "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": "L543", "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": "L544", "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": "L546", "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": "L546", "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": "L546", "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": "L546"}, {"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": "L547", "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": "L548", "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": "L569", "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": "L569", "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": "L569"}, {"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": "L578", "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": "L587", "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": "L587", "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": "L587"}, {"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": "L685", "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": "L685", "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": "L685"}, {"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": "L714", "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": "L723", "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": "L724", "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": "L725", "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": "L726", "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": "L727", "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": "L766", "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": "L788", "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": "L788", "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": "L788"}, {"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": "L799", "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": "L799", "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": "L799"}, {"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": "L812", "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": "L874", "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": "L874", "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": "L874"}, {"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": "L883", "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": "L895", "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": "L895", "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": "L895"}, {"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": "L914", "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": "L916", "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": "L941", "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": "L943", "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": "L944", "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": "L945", "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": "L985", "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": "L985", "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": "L985"}, {"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": "L994", "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": "L996", "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": "L1001", "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": "L1003", "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": "L1012", "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": "L1015", "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": "L1018", "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": "L1038", "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": "L1038", "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": "L1040"}, {"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": "L1038", "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": "L1049", "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": "L1049"}, {"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": "L1071", "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": "L1071", "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": "L1071", "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": "L1078", "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": "L1084", "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": "L1097", "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": "L1099", "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": "L1101", "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": "L1118", "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": "L1118"}, {"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": "L1125", "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": "L1127", "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": "L1153", "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": "L1160", "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": "L1160"}, {"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": "L1161", "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": "L1169"}, {"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": "L1190", "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": "L1192", "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": "L1192", "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": "L1192"}, {"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": "L1201", "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": "L1206", "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": "L1216", "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": "L1218", "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": "L1221", "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": "L1221", "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": "L1221"}, {"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": "L1230", "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": "L1239", "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": "L1239"}, {"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": "L1252", "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": "L1258", "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": "L1278", "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": "L1279", "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": "L1280", "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": "L1302", "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": "L1305", "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": "L1308", "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": "L1308", "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": "L1308"}, {"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": "L1317", "receiver": null}, {"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": "L1322", "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": "L1324", "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": "L1325", "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": "L1340", "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": "L1343", "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": "L1343", "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": "L1343"}, {"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": "L1353", "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": "L1357", "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": "L1360", "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": "L1361", "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_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_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_maybe_auto_set_hazard_cert_ready", "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_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_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_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"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/77c5fe682169a9ebb104de71797b05ce6057fd99499f34a903107d707c408325.json b/backend/graphify-out/cache/ast/v0.9.4/77c5fe682169a9ebb104de71797b05ce6057fd99499f34a903107d707c408325.json new file mode 100644 index 000000000..dd29407fb --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/77c5fe682169a9ebb104de71797b05ce6057fd99499f34a903107d707c408325.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_create_date", "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L91"}, {"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": "L95"}, {"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": "L127"}, {"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": "L131"}, {"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": "L156"}, {"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": "L164"}, {"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": "L196"}, {"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": "L201"}, {"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": "L210"}, {"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": "L231"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L358"}, {"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": "L386"}, {"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": "L470"}, {"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": "L578"}, {"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": "L692"}, {"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": "L739"}, {"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": "L867"}, {"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": "L899"}, {"id": "hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L930"}, {"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": "L936"}, {"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_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1079"}, {"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": "L1141"}, {"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": "L1217"}, {"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": "L1248"}, {"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": "L1287"}, {"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": "L1298"}, {"id": "planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "label": "get_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1321"}, {"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": "L1332"}, {"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": "L1355"}, {"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": "L1366"}, {"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": "L1403"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_96", "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": "L96"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_132", "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": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_165", "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": "L165"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_475", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\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": "L475"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_873", "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": "L873"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_941", "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": "L941"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1084", "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": "L1084"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L50", "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": "L56", "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": "L57", "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": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_site_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L59", "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": "L60", "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": "L61", "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": "L62", "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": "L91", "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": "L91", "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": "L91", "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": "L95", "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": "L95", "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": "L127", "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": "L131", "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": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_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_ensure_subpack_slip_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_ensure_subpack_slip_no", "target": "plplan", "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_determine_plan_type", "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_get_plan_type_label", "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_generate_notify_message", "relation": "contains", "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_generate_notify_message", "target": "plplan", "relation": "references", "context": "parameter_type", "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_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": "L231", "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": "L231", "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": "L231", "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": "L231", "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": "L231", "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": "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_count_plans_by_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L358", "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": "L358", "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": "L358", "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": "L386", "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": "L386", "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": "L386", "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": "L386", "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": "L386", "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": "L470", "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": "L470", "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": "L470", "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": "L470", "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": "L470", "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": "L578", "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": "L578", "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": "L578", "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": "L578", "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": "L578", "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": "L692", "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": "L692", "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": "L692", "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": "L692", "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": "L739", "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": "L739", "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": "L739", "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": "L739", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L739", "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": "L867", "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": "L867", "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": "L867", "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": "L867", "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": "L867", "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": "L899", "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": "L899", "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": "L899", "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": "L899", "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": "L899", "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": "L930", "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": "L936", "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": "L936", "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": "L936", "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": "L936", "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": "L1079", "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": "L1079", "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": "L1079", "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": "L1079", "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": "L1141", "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": "L1141", "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": "L1141", "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": "L1141", "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": "L1141", "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": "L1217", "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": "L1217", "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": "L1217", "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": "L1217", "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": "L1217", "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": "L1248", "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": "L1248", "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": "L1248", "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": "L1248", "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": "L1248", "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": "L1287", "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": "L1287", "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": "L1287", "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": "L1298", "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": "L1298", "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": "L1298", "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": "L1298", "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": "L1321", "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": "L1321", "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": "L1321", "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": "L1332", "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": "L1332", "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": "L1332", "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": "L1332", "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": "L1355", "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": "L1355", "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": "L1355", "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": "L1366", "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": "L1366", "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": "L1366", "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": "L1366", "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": "L1382", "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": "L1382", "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": "L1382", "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": "L1403", "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": "L1403", "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": "L1403", "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": "L1442", "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": "L1442", "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": "L1442", "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": "L1442", "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": "L140", "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": "L157", "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": "L168", "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": "L189", "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": "L354", "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": "L394", "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_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L399", "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": "L401", "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": "L405", "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": "L479", "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_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L481", "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": "L484", "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": "L488", "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": "L600", "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": "L603", "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": "L605", "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": "L609", "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": "L945", "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": "L962", "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": "L1176", "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": "L1244", "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": "L1278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_96", "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": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_132", "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": "L132", "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_ensure_subpack_slip_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_475", "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": "L475", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_873", "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": "L873", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_941", "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": "L941", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1084", "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": "L1084", "weight": 1.0}], "raw_calls": [{"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": "L92", "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": "L97", "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": "L98", "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": "L102", "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": "L103", "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": "L110", "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": "L133", "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": "L137", "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": "L139", "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": "L142", "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": "L144", "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": "L148", "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": "L150", "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": "L158", "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": "L161", "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": "L166", "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": "L168"}, {"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": "L171"}, {"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": "L172"}, {"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": "L174", "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": "L175", "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": "L178", "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": "L181", "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": "L189"}, {"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": "L189"}, {"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": "L192"}, {"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": "L193"}, {"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": "L198", "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": "L207", "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": "L212", "receiver": null}, {"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": "L247", "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": "L247", "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": "L248", "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": "L248"}, {"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": "L255", "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": "L256", "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": "L257", "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": "L257", "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": "L257", "receiver": "q"}, {"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": "L262", "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": "L277", "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": "L277", "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": "L277", "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": "L280", "receiver": "product_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "exists", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L283", "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": "L283", "receiver": "db"}, {"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": "L288", "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": "L288", "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": "L288", "receiver": "product_name_kw"}, {"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": "L299", "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": "L299"}, {"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": "L302", "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": "L306", "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": "L306", "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": "L306", "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": "L306", "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": "L313", "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": "L313", "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": "L313"}, {"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": "L315", "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": "L322", "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": "L322", "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": "L324", "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": "L333", "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": "L334", "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": "L340", "receiver": "PlanProductRead"}, {"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": "L341", "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": "L342", "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": "L344", "receiver": "PlanWithProducts"}, {"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": "L346", "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": "L352", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L363", "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": "L363", "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": "L364", "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": "L364", "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": "L364", "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": "L369", "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": "L369", "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": "L373", "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": "L376", "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": "L376", "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": "L376"}, {"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": "L391", "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": "L391", "receiver": "user"}, {"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": "L402", "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": "L446", "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": "L451", "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": "L460", "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": "L462", "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": "L464", "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": "L465", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_create_full", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L476", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L477", "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": "L477", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "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": "L478", "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": "L485", "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": "L523", "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": "L530", "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": "L531", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L535", "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": "L540", "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": "L541", "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": "L550", "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": "L551", "receiver": "plan_products"}, {"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": "L554", "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": "L564", "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": "L565", "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": "L567", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L586", "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": "L586", "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": "L590", "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": "L590", "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": "L590"}, {"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": "L595", "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": "L597", "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": "L606", "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": "L620", "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": "L623", "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": "L625", "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": "L640", "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": "L644", "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": "L644"}, {"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": "L654", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "PlPlanProduct", "is_member_call": false, "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_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": "L660", "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": "L679", "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": "L681", "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": "L682", "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": "L697", "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": "L697", "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": "L698", "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": "L698"}, {"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": "L701", "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": "L701", "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": "L701"}, {"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": "L710", "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": "L718", "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": "L722"}, {"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": "L724", "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": "L724"}, {"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": "L725", "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": "L725"}, {"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": "L725"}, {"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": "L726", "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": "L726"}, {"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": "L728", "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": "L729"}, {"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": "L730"}, {"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": "L745", "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": "L745", "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": "L746", "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": "L749", "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": "L752", "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": "L758", "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": "L759", "receiver": "update_data"}, {"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": "L767", "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": "L767"}, {"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": "L774", "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": "L784", "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": "L784", "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": "L784"}, {"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": "L791", "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": "L799", "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": "L804", "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": "L813", "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": "L822", "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": "L823", "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": "L825", "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": "L827", "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": "L829", "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": "L832", "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": "L832"}, {"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": "L843", "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": "L853", "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": "L861", "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": "L862", "receiver": "db"}, {"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": "L874", "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": "L874", "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": "L875", "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": "L876", "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": "L883", "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": "L885", "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": "L885", "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": "L885"}, {"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": "L893", "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": "L906", "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": "L906", "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": "L907", "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": "L908", "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": "L915", "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": "L917", "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": "L917", "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": "L917"}, {"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": "L925", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L931", "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": "L942", "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": "L942", "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": "L943", "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": "L950", "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": "L950", "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": "L950"}, {"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": "L961", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L965", "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": "L965", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportSiteLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L965"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L972", "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": "L978", "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": "L978"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_site_link_read_from_row", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L987", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L989", "receiver": "product_name_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L995", "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": "L995"}, {"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": "L1008", "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": "L1008", "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": "L1008"}, {"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": "L1016", "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": "L1016", "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": "L1016"}, {"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": "L1024", "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": "L1025", "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": "L1037", "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": "L1042", "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": "L1043", "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": "L1048", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportSiteLinkRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1053", "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": "L1060", "receiver": null}, {"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": "L1085", "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": "L1085", "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": "L1086", "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": "L1089", "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": "L1092", "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": "L1096", "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": "L1096", "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": "L1096"}, {"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": "L1106", "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": "L1113", "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": "L1113"}, {"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": "L1114", "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": "L1123", "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": "L1130", "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": "L1131", "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": "L1147", "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": "L1147", "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": "L1148", "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": "L1151", "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": "L1157", "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": "L1157", "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": "L1157"}, {"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": "L1166", "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": "L1170", "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": "L1175", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_product_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1178", "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": "L1181", "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": "L1189", "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": "L1194", "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": "L1202", "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": "L1212", "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": "L1223", "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": "L1223", "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": "L1224", "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": "L1225", "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": "L1232", "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": "L1243", "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": "L1255", "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": "L1255", "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": "L1256", "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": "L1257", "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": "L1265", "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": "L1266", "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": "L1277", "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": "L1292", "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": "L1292", "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": "L1293", "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": "L1304", "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": "L1304", "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": "L1305", "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": "L1307", "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": "L1309", "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": "L1312", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1326", "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": "L1326", "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": "L1327", "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": "L1338", "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": "L1338", "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": "L1339", "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": "L1341", "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": "L1343", "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": "L1346", "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": "L1360", "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": "L1360", "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": "L1361", "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": "L1372", "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": "L1372", "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": "L1373", "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": "L1375", "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": "L1378", "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": "L1387", "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": "L1387", "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": "L1388", "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": "L1390", "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": "L1393", "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": "L1408", "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": "L1408", "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": "L1409", "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": "L1412", "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": "L1414", "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": "L1416", "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": "L1418", "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": "L1418", "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": "L1422", "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": "L1422", "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": "L1422"}, {"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": "L1428", "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": "L1428", "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": "L1428"}, {"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": "L1434", "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": "L1444", "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": "L1444", "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": "L1444"}, {"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": "L1453", "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": "L1454", "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": "L1454"}], "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_count_plans_by_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "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/86879f2620af97a1ae324ff812fb9ae23c09a3773418f66d3fed59d1c0f3aae5.json b/backend/graphify-out/cache/ast/v0.9.4/86879f2620af97a1ae324ff812fb9ae23c09a3773418f66d3fed59d1c0f3aae5.json new file mode 100644 index 000000000..89a0ca390 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/86879f2620af97a1ae324ff812fb9ae23c09a3773418f66d3fed59d1c0f3aae5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "label": "test_pl_brand_archive.py", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "label": "test_required_allows_only_that_brand()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L8"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "label": "test_any_sum_must_match()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L18"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "label": "test_any_ok()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L31"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_no_brand_ignores_rows", "label": "test_no_brand_ignores_rows()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L43"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "label": "test_apply_stock_change_outbound_insufficient()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L52"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "label": "test_delta_for_plan_type()", "file_type": "code", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L59"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_no_brand_ignores_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_brand_archive.py", "source_location": "L59", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L9", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L9"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L10", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L13", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L14", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L19", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L19"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L20", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L23", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L25", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L26", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L32", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L38", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_no_brand_ignores_rows", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_no_brand_ignores_rows", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L55", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L55"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "callee": "assert_outbound_enough", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "qty_delta_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "qty_delta_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "qty_delta_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py", "source_location": "L64", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_ok", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_any_sum_must_match", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_apply_stock_change_outbound_insufficient", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_delta_for_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_no_brand_ignores_rows", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_brand_archive_test_required_allows_only_that_brand"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/8b0054a923ef62d6e336e2fb16e458ad0885358fcb3897c3c8df55122ad3fb7a.json b/backend/graphify-out/cache/ast/v0.9.4/8b0054a923ef62d6e336e2fb16e458ad0885358fcb3897c3c8df55122ad3fb7a.json new file mode 100644 index 000000000..b5a658362 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/8b0054a923ef62d6e336e2fb16e458ad0885358fcb3897c3c8df55122ad3fb7a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "label": "pl_io_order_service.py", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_ioordercreateresult", "label": "IoOrderCreateResult", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L37"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "label": "build_io_order_site_url()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "label": "_normalize_plan_date()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L51"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "label": "_next_order_no()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L62"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "label": "_dibang_qty_by_plan_product()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L80"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "label": "create_io_order_for_transport()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_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_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "label": "apply_dibang_prefill_to_order()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "label": "void_io_orders_for_plan()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "label": "get_active_io_order_for_plan()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L263"}, {"id": "orderheader", "label": "OrderHeader", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "label": "parse_feedback_images()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L293"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dump_feedback_images", "label": "dump_feedback_images()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L305"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "label": "apply_site_feedback()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312"}, {"id": "orderitem", "label": "OrderItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "label": "resolve_unit_label()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L353"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "label": "merge_plan_logistics_into_order()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L360"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "label": "merge_plan_product_into_item()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L391"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "label": "enrich_io_order_dict()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L418"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "label": "order_header_to_dict()", "file_type": "code", "source_file": "app/services/pl_io_order_service.py", "source_location": "L536"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u5165\u5e93\u5355 / \u51fa\u5e93\u5355\uff08\u5b89\u6392\u8fd0\u8f93\u843d\u5355\u3001\u73b0\u573a\u56de\u4f20\u3001\u4f5c\u5e9f\uff09", "file_type": "rationale", "source_file": "app/services/pl_io_order_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_123", "label": "\u5b89\u6392\u8fd0\u8f93\u540e\u521b\u5efa\u5165\u5e93/\u51fa\u5e93\u5355\u3002\u76f4\u9500\u8fd4\u56de None\u3002", "file_type": "rationale", "source_file": "app/services/pl_io_order_service.py", "source_location": "L123"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_201", "label": "\u5730\u78c5\u5355\u751f\u6210\u540e\uff0c\u7528\u6570\u91cf\u9884\u586b\u5c1a\u672a\u88ab\u73b0\u573a\u6539\u8fc7\u7684\u660e\u7ec6 actual_qty\u3002", "file_type": "rationale", "source_file": "app/services/pl_io_order_service.py", "source_location": "L201"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "secrets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_services_db_mappers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "app_services_pl_dibang_bridge_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_ioordercreateresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "target": "date", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_ioordercreateresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "target": "orderheader", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dump_feedback_images", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "target": "orderheader", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "target": "orderitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "target": "plplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "orderheader", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_ioordercreateresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L185", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dump_feedback_images", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L335", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L402", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L441", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L504", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L520", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L556", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L558", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L586", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L588", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_123", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_rationale_201", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_io_order_service.py", "source_location": "L201", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L46", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L53"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L55"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "parse_date_str", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L56", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "date", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L57"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L59", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L63", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L66", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L66", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L66", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L67", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L68", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L84", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "PlTransportDbLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L84"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L98", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "DbInboundOutbound", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L98"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L105", "receiver": "inv_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "resolve_partner_company", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L134", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "token_urlsafe", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L136", "receiver": "secrets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L139", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "header_model", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L143", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L157", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "_product_quantity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L160", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L161", "receiver": "dibang_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L165", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "item_model", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L167", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L184", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L207", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L215", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L224", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L229", "receiver": "dibang_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L236", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "callee": "PlInboundOrder", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L246"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "callee": "PlOutboundOrder", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L246"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L248", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L260", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L268", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "PlInboundOrder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L268"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L274", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L280", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "PlOutboundOrder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L280"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L286", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "loads", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L297", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L298"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L300"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L302", "receiver": "part"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L302", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L302", "receiver": "part"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dump_feedback_images", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L306", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L327", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L341", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L357", "receiver": "unit_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L362", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L363", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L364", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L365", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L366", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L367", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L368", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L369", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L370", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L371", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L372", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L373", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L374", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L376", "receiver": "PLAN_TYPE_BUSINESS_LABEL"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L377", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L399", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L400", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L401", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L402", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L405", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L406", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L407", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L413", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L415", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L433", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L433", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L433"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "CRM_PRODUCT_UNIT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L445"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "load_dict_label_maps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "CRM_PRODUCT_UNIT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L444"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L447", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L452", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L454", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L459", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L459"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L471", "receiver": "products_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L472", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L475", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L475", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L477", "receiver": "crm_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L481", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L483", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L490", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L495", "receiver": "products_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L495", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L496", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L496", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L501", "receiver": "crm_no_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L504", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L504", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L509", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L509"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "format", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L525", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "normalize", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L525", "receiver": "qty"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L526", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L527", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L530", "receiver": "it"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L531", "receiver": "brand_summary_by_pp"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L554", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L583", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py", "source_location": "L584", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_dibang_prefill_to_order", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_apply_site_feedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_build_io_order_site_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_create_io_order_for_transport", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dibang_qty_by_plan_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_dump_feedback_images", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_enrich_io_order_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_get_active_io_order_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_ioordercreateresult", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_logistics_into_order", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_merge_plan_product_into_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_next_order_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_normalize_plan_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_order_header_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_parse_feedback_images", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_resolve_unit_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_io_order_service_void_io_orders_for_plan"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/b14a59968214a71d272cc6fbfc2555a9ea39eb8174697a75bec673bdfda1b074.json b/backend/graphify-out/cache/ast/v0.9.4/b14a59968214a71d272cc6fbfc2555a9ea39eb8174697a75bec673bdfda1b074.json new file mode 100644 index 000000000..8ff2ddc4c --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/b14a59968214a71d272cc6fbfc2555a9ea39eb8174697a75bec673bdfda1b074.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "label": "get_inventory_ledger()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L50"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "label": "set_warning_threshold()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L81"}, {"id": "inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "label": "list_warnings()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L136"}, {"id": "inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "label": "update_warning()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L155"}, {"id": "inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "label": "list_transactions()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L195"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "label": "get_summary()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L238"}, {"id": "inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "label": "document_reminder_stats()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L300"}, {"id": "documentreminderstatsread", "label": "DocumentReminderStatsRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "label": "list_document_reminders()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L320"}, {"id": "documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "label": "update_document_reminder()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L342"}, {"id": "documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "label": "check_document_expiry()", "file_type": "code", "source_file": "app/api/pl/inventory.py", "source_location": "L379"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "target": "inventorywarningthreshold", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "target": "inventorywarningread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "target": "inventorywarningupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "target": "inventorywarningread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L300", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L300", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L300", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "target": "documentreminderstatsread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L300", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "target": "documentreminderread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "target": "documentreminderupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "target": "documentreminderread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L291", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "target": "documentreminderstatsread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/inventory.py", "source_location": "L316", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L57", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L57", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L58", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L58"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L68", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L70", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L70", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L70", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L86", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L86", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L90", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L90", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L90"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "assert_pl_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L101"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L126", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L141", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "PlInventoryWarning", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "PlInventoryWarning", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L150"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L161", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L164", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L164", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "PlInventoryWarning", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L164"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L174", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "assert_pl_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "PlInventoryWarning", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L175"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L184", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L185", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L205", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L206", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "PlInventoryTransaction", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L206"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L223", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "PlInventoryTransaction", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L223"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L225", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L227", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L246", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L246", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L248", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "PlInventoryTransaction", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L248"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "PlInventoryTransaction", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L271", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L280", "receiver": "summary_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L282", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "callee": "InventorySummaryItem", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L304", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L304", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "scan_cert_expiry", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L305", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L306", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L308", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L308"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L314", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L314"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L315", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L325", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "scan_cert_expiry", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L327", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L329", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L329"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L338", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L348", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L348", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L351", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L351", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L351"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L361", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "assert_pl_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L362", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L362"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L368", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L369", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "callee": "scan_cert_expiry", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L382", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_check_document_expiry", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_document_reminder_stats", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_inventory_ledger", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_get_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_document_reminders", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_transactions", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_list_warnings", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_set_warning_threshold", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_document_reminder", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_inventory_update_warning"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/b33aaed50e3695908462428a69b972229cb7315a9cc42b9681083951e72a4794.json b/backend/graphify-out/cache/ast/v0.9.4/b33aaed50e3695908462428a69b972229cb7315a9cc42b9681083951e72a4794.json new file mode 100644 index 000000000..bc354dd7b --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/b33aaed50e3695908462428a69b972229cb7315a9cc42b9681083951e72a4794.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "label": "crm_models.py", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductcategory", "label": "CrmProductCategory", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L21"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproduct", "label": "CrmProduct", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L43"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductbrand", "label": "CrmProductBrand", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L78"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductalias", "label": "CrmProductAlias", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L98"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_sysoss", "label": "SysOss", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L117"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomer", "label": "CrmCustomer", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L149"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontact", "label": "CrmContact", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L232"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crminvoiceinfo", "label": "CrmInvoiceInfo", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L267"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerfollow", "label": "CrmCustomerFollow", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L295"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpool", "label": "CrmCustomerPool", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L326"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpoolrule", "label": "CrmCustomerPoolRule", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L352"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunity", "label": "CrmOpportunity", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L375"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityfollow", "label": "CrmOpportunityFollow", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L418"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityproduct", "label": "CrmOpportunityProduct", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L449"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunitystagelog", "label": "CrmOpportunityStageLog", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L479"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontract", "label": "CrmContract", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L510"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractapproval", "label": "CrmContractApproval", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L593"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractchange", "label": "CrmContractChange", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L624"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontracttemplate", "label": "CrmContractTemplate", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L655"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproduct", "label": "CrmContractProduct", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L689"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproductpricetier", "label": "CrmContractProductPriceTier", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L730"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquote", "label": "CrmQuote", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L755"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteproduct", "label": "CrmQuoteProduct", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L813"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteapproval", "label": "CrmQuoteApproval", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L851"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquotesharelog", "label": "CrmQuoteShareLog", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L876"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmclue", "label": "CrmClue", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L902"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcluefollow", "label": "CrmClueFollow", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L952"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmpriceletter", "label": "CrmPriceLetter", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L976"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmsupplierinfo", "label": "CrmSupplierInfo", "file_type": "code", "source_file": "app/models/crm_models.py", "source_location": "L1007"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_rationale_1", "label": "CRM \u6a21\u5757\u6570\u636e\u6a21\u578b\uff08\u4ea7\u54c1\u5206\u7c7b\u3001\u4ea7\u54c1\u4e3b\u8868\u3001\u7edf\u4e00\u9644\u4ef6\u8868\u3001\u5ba2\u6237\u7ba1\u7406\u3001\u516c\u6d77\u6c60\u3001\u7ebf\u7d22\u7ba1\u7406\uff09", "file_type": "rationale", "source_file": "app/models/crm_models.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_rationale_977", "label": "CRM-\u8c03\u4ef7\u51fd\u6863\u6848\uff08\u72ec\u7acb\uff0c\u4e0d\u5173\u8054\u5408\u540c/\u62a5\u4ef7\u5355\uff09", "file_type": "rationale", "source_file": "app/models/crm_models.py", "source_location": "L977"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductcategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductcategory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductbrand", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductbrand", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductalias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductalias", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_sysoss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_sysoss", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomer", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontact", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L232", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontact", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L232", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crminvoiceinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crminvoiceinfo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerfollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerfollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpool", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L326", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpool", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L326", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpoolrule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L352", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpoolrule", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L352", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunity", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityfollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityfollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L449", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L449", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunitystagelog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunitystagelog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L510", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontract", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L510", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L593", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L593", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L624", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractchange", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L624", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontracttemplate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontracttemplate", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L689", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L689", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproductpricetier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L730", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproductpricetier", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L730", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquote", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L755", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquote", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L755", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L813", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L813", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L851", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L851", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquotesharelog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L876", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquotesharelog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L876", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmclue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L902", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmclue", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L902", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcluefollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcluefollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmpriceletter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L976", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmpriceletter", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L976", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmsupplierinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L1007", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmsupplierinfo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L1007", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_rationale_977", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmpriceletter", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/crm_models.py", "source_location": "L977", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmclue", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcluefollow", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontact", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontract", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractchange", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontractproductpricetier", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcontracttemplate", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomer", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerfollow", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpool", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmcustomerpoolrule", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crminvoiceinfo", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunity", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityfollow", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunityproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmopportunitystagelog", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmpriceletter", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductalias", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductbrand", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmproductcategory", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquote", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquoteproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmquotesharelog", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_crmsupplierinfo", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_crm_models_sysoss"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/c30d4eda6a95a713dd0598c5d4eb4163579510db58887ed8e74b489dcd6a4a7f.json b/backend/graphify-out/cache/ast/v0.9.4/c30d4eda6a95a713dd0598c5d4eb4163579510db58887ed8e74b489dcd6a4a7f.json new file mode 100644 index 000000000..150c536cf --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/c30d4eda6a95a713dd0598c5d4eb4163579510db58887ed8e74b489dcd6a4a7f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "label": "crm.py", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "label": "category_tree()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L328"}, {"id": "productcategorytreebody", "label": "ProductCategoryTreeBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "label": "customer_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L356"}, {"id": "customerlistbody", "label": "CustomerListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "label": "customer_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L390"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "label": "customer_create()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L417"}, {"id": "customercreatebody", "label": "CustomerCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "label": "customer_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L447"}, {"id": "customerupdatebody", "label": "CustomerUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "label": "customer_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L474"}, {"id": "customerdeletebody", "label": "CustomerDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "label": "customer_generate_no()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L502"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "label": "category_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L518"}, {"id": "productcategorycreatebody", "label": "ProductCategoryCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "label": "category_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L537"}, {"id": "productcategoryupdatebody", "label": "ProductCategoryUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "label": "category_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L557"}, {"id": "categorydeletebody", "label": "CategoryDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "label": "product_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L577"}, {"id": "productlistbody", "label": "ProductListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "label": "product_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L614"}, {"id": "productdetailbody", "label": "ProductDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "label": "product_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L635"}, {"id": "productcreatebody", "label": "ProductCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "label": "product_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L659"}, {"id": "productupdatebody", "label": "ProductUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "label": "product_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L680"}, {"id": "productdeletebody", "label": "ProductDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "label": "product_update_status()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L708"}, {"id": "productupdatestatusbody", "label": "ProductUpdateStatusBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "label": "product_options()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L729"}, {"id": "productoptionsbody", "label": "ProductOptionsBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "label": "product_import()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L756"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "label": "product_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L847"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "label": "product_import_template()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L882"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "label": "customer_transfer()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L926"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "label": "customer_into_pool()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L952"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "label": "customer_deal()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L977"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "label": "customer_check_duplicate()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1006"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "label": "customer_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1029"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "label": "customer_import_template()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1065"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "label": "customer_mine()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1104"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "label": "customer_to_follow()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1138"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "label": "customer_key()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1172"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "label": "customer_dealed()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1206"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "label": "customer_week_new()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1238"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "label": "customer_long_time_no_follow()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1270"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "label": "customer_park_area_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1302"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "label": "pool_customer_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1322"}, {"id": "poolcustomerlistbody", "label": "PoolCustomerListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "label": "pool_customer_assign()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1354"}, {"id": "poolassignbody", "label": "PoolAssignBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "label": "pool_customer_claim()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1373"}, {"id": "poolclaimbody", "label": "PoolClaimBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "label": "pool_record_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1391"}, {"id": "poolrecordlistbody", "label": "PoolRecordListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "label": "pool_record_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1421"}, {"id": "poolrecorddetailbody", "label": "PoolRecordDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "label": "contact_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1443"}, {"id": "contactlistbody", "label": "ContactListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "label": "contact_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1479"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "label": "contact_by_customer()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1503"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "label": "contact_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1524"}, {"id": "contactcreatebody", "label": "ContactCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "label": "contact_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1547"}, {"id": "contactupdatebody", "label": "ContactUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "label": "contact_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1568"}, {"id": "contactdeletebody", "label": "ContactDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "label": "contact_set_primary()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1588"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "label": "contact_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1610"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "label": "contact_decision()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1640"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "label": "contact_primary()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1671"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "label": "contact_birthday()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1702"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "label": "follow_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1736"}, {"id": "followlistbody", "label": "FollowListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "label": "follow_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1768"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "label": "follow_by_customer()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1794"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "label": "follow_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1815"}, {"id": "followcreatebody", "label": "FollowCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "label": "follow_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1839"}, {"id": "followupdatebody", "label": "FollowUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "label": "follow_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1858"}, {"id": "followdeletebody", "label": "FollowDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "label": "follow_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1875"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "label": "pool_rule_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1908"}, {"id": "poolrulelistbody", "label": "PoolRuleListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "label": "pool_rule_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1939"}, {"id": "poolruledetailbody", "label": "PoolRuleDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "label": "pool_rule_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1960"}, {"id": "poolruleaddbody", "label": "PoolRuleAddBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "label": "pool_rule_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1987"}, {"id": "poolruleupdatebody", "label": "PoolRuleUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "label": "pool_rule_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2016"}, {"id": "poolruledeletebody", "label": "PoolRuleDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "label": "pool_rule_update_status()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2033"}, {"id": "poolruleupdatestatusbody", "label": "PoolRuleUpdateStatusBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "label": "pool_rule_execute()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2053"}, {"id": "poolruleexecutebody", "label": "PoolRuleExecuteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "label": "statistics_overview()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2072"}, {"id": "statisticsbody", "label": "StatisticsBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "label": "statistics_source()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2092"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "label": "statistics_level()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2110"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "label": "statistics_industry()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2128"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "label": "statistics_trend()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2146"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "label": "statistics_owner()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "label": "statistics_follow()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2187"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "label": "_opp_list_kwargs()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2212"}, {"id": "opportunitylistbody", "label": "OpportunityListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "label": "opportunity_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2241"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "label": "opportunity_mine_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2274"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "label": "opportunity_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2307"}, {"id": "opportunitydetailbody", "label": "OpportunityDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "label": "opportunity_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2337"}, {"id": "opportunitycreatebody", "label": "OpportunityCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "label": "opportunity_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2361"}, {"id": "opportunityupdatebody", "label": "OpportunityUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "label": "opportunity_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2382"}, {"id": "opportunitydeletebody", "label": "OpportunityDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "label": "opportunity_assign()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2403"}, {"id": "opportunityassignbody", "label": "OpportunityAssignBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "label": "opportunity_change_stage()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2430"}, {"id": "opportunitychangestagebody", "label": "OpportunityChangeStageBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "label": "opportunity_mark_won()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2460"}, {"id": "opportunitymarkwonbody", "label": "OpportunityMarkWonBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "label": "opportunity_mark_lost()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2488"}, {"id": "opportunitymarklostbody", "label": "OpportunityMarkLostBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "label": "opportunity_batch_update_stage()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2517"}, {"id": "opportunitybatchupdatestagebody", "label": "OpportunityBatchUpdateStageBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "label": "opportunity_batch_update_expect_date()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2546"}, {"id": "opportunitybatchupdateexpectdatebody", "label": "OpportunityBatchUpdateExpectDateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "label": "opportunity_stage_log_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2574"}, {"id": "opportunitystageloglistbody", "label": "OpportunityStageLogListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "label": "opportunity_kanban()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2592"}, {"id": "opportunitykanbanbody", "label": "OpportunityKanbanBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "label": "opportunity_statistics_overview()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2623"}, {"id": "opportunitystatisticsbody", "label": "OpportunityStatisticsBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "label": "opportunity_statistics_stage()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2649"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "label": "opportunity_statistics_win_rate()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2665"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "label": "opportunity_statistics_owner()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2691"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "label": "opportunity_statistics_funnel()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2716"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "label": "opportunity_follow_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2742"}, {"id": "opportunityfollowlistbody", "label": "OpportunityFollowListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "label": "opportunity_follow_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2774"}, {"id": "opportunityfollowcreatebody", "label": "OpportunityFollowCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "label": "opportunity_follow_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2799"}, {"id": "opportunityfollowupdatebody", "label": "OpportunityFollowUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "label": "opportunity_follow_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2822"}, {"id": "opportunityfollowdeletebody", "label": "OpportunityFollowDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "label": "opportunity_follow_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2846"}, {"id": "opportunityfollowdetailbody", "label": "OpportunityFollowDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "label": "opportunity_product_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2866"}, {"id": "opportunityproductlistbody", "label": "OpportunityProductListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "label": "opportunity_product_list_by_opportunity()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2899"}, {"id": "opportunityproductbyopportunitybody", "label": "OpportunityProductByOpportunityBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "label": "opportunity_product_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2920"}, {"id": "opportunityproductcreatebody", "label": "OpportunityProductCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "label": "opportunity_product_batch_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2945"}, {"id": "opportunityproductbatchaddbody", "label": "OpportunityProductBatchAddBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "label": "opportunity_product_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2975"}, {"id": "opportunityproductupdatebody", "label": "OpportunityProductUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "label": "opportunity_product_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L2998"}, {"id": "opportunityproductdeletebody", "label": "OpportunityProductDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "label": "opportunity_product_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3019"}, {"id": "opportunityproductdetailbody", "label": "OpportunityProductDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "label": "opportunity_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3039"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "label": "supplier_info_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3081"}, {"id": "supplierinfolistbody", "label": "SupplierInfoListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "label": "supplier_info_list_all()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3116"}, {"id": "supplierinfolistallbody", "label": "SupplierInfoListAllBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "label": "supplier_info_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3141"}, {"id": "supplierinfodetailbody", "label": "SupplierInfoDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "label": "supplier_info_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3164"}, {"id": "supplierinfocreatebody", "label": "SupplierInfoCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "label": "supplier_info_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3190"}, {"id": "supplierinfoupdatebody", "label": "SupplierInfoUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "label": "supplier_info_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3218"}, {"id": "supplierinfodeletebody", "label": "SupplierInfoDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "label": "supplier_info_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3247"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "label": "_invoice_info_by_customer_impl()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3284"}, {"id": "invoiceinfobycustomerbody", "label": "InvoiceInfoByCustomerBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "label": "invoice_info_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3298"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "label": "invoice_info_by_customer()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3313"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "label": "invoice_info_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3328"}, {"id": "invoiceinfocreatebody", "label": "InvoiceInfoCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "label": "invoice_info_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3353"}, {"id": "invoiceinfoupdatebody", "label": "InvoiceInfoUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "label": "invoice_info_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3381"}, {"id": "invoiceinfodeletebody", "label": "InvoiceInfoDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "label": "invoice_info_set_default()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3404"}, {"id": "invoiceinfosetdefaultbody", "label": "InvoiceInfoSetDefaultBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "label": "clue_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3432"}, {"id": "cluelistbody", "label": "ClueListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "label": "clue_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3479"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "label": "clue_create()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3506"}, {"id": "cluecreatebody", "label": "ClueCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "label": "clue_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3529"}, {"id": "clueupdatebody", "label": "ClueUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "label": "clue_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3551"}, {"id": "cluedeletebody", "label": "ClueDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "label": "clue_assign()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3582"}, {"id": "clueassignbody", "label": "ClueAssignBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "label": "clue_convert()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3610"}, {"id": "clueconvertbody", "label": "ClueConvertBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "label": "clue_check_convert()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3638"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "label": "clue_update_status()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3658"}, {"id": "cluestatusbody", "label": "ClueStatusBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "label": "clue_invalid()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3679"}, {"id": "clueinvalidbody", "label": "ClueInvalidBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "label": "clue_update_level()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3710"}, {"id": "cluelevelbody", "label": "ClueLevelBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "label": "clue_mine()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3731"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "label": "clue_to_follow()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3777"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "label": "clue_today_new()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3823"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "label": "clue_park_area_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3869"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "label": "clue_follow_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3884"}, {"id": "cluefollowlistbody", "label": "ClueFollowListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "label": "clue_follow_create()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3916"}, {"id": "cluefollowcreatebody", "label": "ClueFollowCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "label": "clue_follow_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3948"}, {"id": "cluefollowdeletebody", "label": "ClueFollowDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "label": "clue_follow_statistics()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L3979"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "label": "clue_export()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4048"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "label": "clue_import_template()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "label": "clue_import()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4140"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "label": "clue_check_duplicate()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4192"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "label": "clue_follow_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4216"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "label": "clue_follow_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4240"}, {"id": "cluefollowupdatebody", "label": "ClueFollowUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "label": "clue_statistics_overview()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4261"}, {"id": "cluestatisticsbody", "label": "ClueStatisticsBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "label": "clue_statistics_source()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4289"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "label": "clue_statistics_level()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4314"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "label": "clue_statistics_trend()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4331"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "label": "clue_statistics_owner()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4358"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "label": "price_letter_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4403"}, {"id": "priceletterlistbody", "label": "PriceLetterListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "label": "price_letter_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4444"}, {"id": "priceletterdetailbody", "label": "PriceLetterDetailBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "label": "price_letter_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4466"}, {"id": "pricelettercreatebody", "label": "PriceLetterCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "label": "price_letter_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4493"}, {"id": "priceletterupdatebody", "label": "PriceLetterUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "label": "price_letter_void()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L4524"}, {"id": "pricelettervoidbody", "label": "PriceLetterVoidBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_1", "label": "CRM \u7ba1\u7406\u63a5\u53e3\uff08\u4ea7\u54c1\u5206\u7c7b + \u4ea7\u54c1 + Excel \u5bfc\u5165\u5bfc\u51fa\uff09", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_685", "label": "\u5220\u9664\u4ea7\u54c1\uff08\u652f\u6301\u5355\u6761 body.id \u548c\u6279\u91cf body.ids\uff09", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L685"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3086", "label": "\u5206\u9875\u67e5\u8be2\u4f9b\u65b9\u5217\u8868 \u2014 Java: CrmSupplierInfoController.list", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3086"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3121", "label": "\u4f9b\u65b9\u5168\u91cf\u5217\u8868\uff08\u4e0b\u62c9\uff09\u2014 Java: CrmSupplierInfoController.listAll", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3121"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3146", "label": "\u4f9b\u65b9\u8be6\u60c5 \u2014 Java: CrmSupplierInfoController.getInfo", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3146"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3169", "label": "\u65b0\u589e\u4f9b\u65b9 \u2014 Java: CrmSupplierInfoController.add", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3195", "label": "\u4fee\u6539\u4f9b\u65b9 \u2014 Java: CrmSupplierInfoController.edit", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3195"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3223", "label": "\u5220\u9664\u4f9b\u65b9 \u2014 Java: CrmSupplierInfoController.remove", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3223"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3252", "label": "\u5bfc\u51fa\u4f9b\u65b9\u5217\u8868 \u2014 Java: CrmSupplierInfoController.export", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3252"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3303", "label": "\u6309\u5ba2\u6237ID\u67e5\u8be2\u5f00\u7968\u4fe1\u606f\uff08\u4e0e by-customer \u7b49\u4ef7\uff09", "file_type": "rationale", "source_file": "app/api/crm.py", "source_location": "L3303"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "urllib_parse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_core_menu_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_core_oper_log_decorator", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_data_scope_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_utils_crm_export_columns", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_utils_excel_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_contact", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_invoice_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_supplier_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_customer_pool", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_pool_rule", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_opportunity", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L131", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_opportunity_follow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L152", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_opportunity_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_customer_follow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L171", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_statistics", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L181", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_customer_pool", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_pool_rule", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L206", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_contact", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_invoice_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_supplier_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L225", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_opportunity", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L233", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_customer_follow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_statistics", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_clue", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L268", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_clue_follow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_clue_statistics", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_clue", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L304", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "target": "productcategorytreebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L417", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "target": "customercreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L417", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L417", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L447", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "target": "customerupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L447", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L447", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L474", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "target": "customerdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L474", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L474", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L502", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L502", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "target": "productcategorycreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "target": "productcategoryupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "target": "categorydeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "target": "productlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "target": "productdetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "target": "productcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L659", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "target": "productupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L659", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L659", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L680", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "target": "productdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L680", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L680", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L708", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "target": "productupdatestatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L708", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L708", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L729", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "target": "productoptionsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L729", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L729", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L756", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L756", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L756", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L847", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "target": "productlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L847", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L847", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L882", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L926", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L926", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L977", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L977", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1006", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1006", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1029", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1029", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1029", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1065", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1206", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1206", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1206", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1270", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "target": "customerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1270", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1270", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1322", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "target": "poolcustomerlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1322", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1322", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "target": "poolassignbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "target": "poolclaimbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "target": "poolrecordlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "target": "poolrecorddetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "target": "contactlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1503", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1503", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "target": "contactcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1547", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "target": "contactupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1547", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1547", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1568", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "target": "contactdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1568", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1568", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1588", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1588", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "target": "contactlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1640", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "target": "contactlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1640", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1640", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "target": "contactlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1702", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "target": "contactlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1702", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1702", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1736", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "target": "followlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1736", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1736", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1794", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1794", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1815", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "target": "followcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1815", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1815", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1839", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "target": "followupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1839", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1839", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1858", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "target": "followdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1858", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1858", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1875", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "target": "followlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1875", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1875", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1908", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "target": "poolrulelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1908", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1908", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1939", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "target": "poolruledetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1939", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1939", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1960", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "target": "poolruleaddbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1960", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1960", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1987", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "target": "poolruleupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1987", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1987", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2016", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "target": "poolruledeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2016", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2016", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2033", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "target": "poolruleupdatestatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2033", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2033", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2053", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "target": "poolruleexecutebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2053", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2053", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2072", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2072", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2072", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "target": "statisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "target": "opportunitylistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "target": "opportunitylistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "target": "opportunitylistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "target": "opportunitydetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2337", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "target": "opportunitycreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2337", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2337", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "target": "opportunityupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2382", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "target": "opportunitydeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2382", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2382", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "target": "opportunityassignbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2430", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "target": "opportunitychangestagebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2430", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2430", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "target": "opportunitymarkwonbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2488", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "target": "opportunitymarklostbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2488", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2488", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2517", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "target": "opportunitybatchupdatestagebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2517", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2517", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "target": "opportunitybatchupdateexpectdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "target": "opportunitystageloglistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "target": "opportunitykanbanbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2623", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "target": "opportunitystatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2623", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2623", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2649", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2649", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2665", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "target": "opportunitystatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2665", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2665", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "target": "opportunitystatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2716", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "target": "opportunitystatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2716", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2716", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2742", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "target": "opportunityfollowlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2742", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2742", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2774", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "target": "opportunityfollowcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2774", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2774", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2799", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "target": "opportunityfollowupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2799", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2799", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2822", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "target": "opportunityfollowdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2822", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2822", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2846", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "target": "opportunityfollowdetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2846", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2846", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2866", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "target": "opportunityproductlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2866", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2866", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "target": "opportunityproductbyopportunitybody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2920", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "target": "opportunityproductcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2920", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2920", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2945", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "target": "opportunityproductbatchaddbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2945", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2945", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2975", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "target": "opportunityproductupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2975", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2975", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2998", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "target": "opportunityproductdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2998", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2998", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3019", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "target": "opportunityproductdetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3019", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3019", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3039", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "target": "opportunitylistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3039", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3039", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3081", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "target": "supplierinfolistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3081", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3081", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "target": "supplierinfolistallbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "target": "supplierinfodetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "target": "supplierinfocreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "target": "supplierinfoupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "target": "supplierinfodeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "target": "supplierinfolistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "target": "invoiceinfobycustomerbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "target": "invoiceinfobycustomerbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3313", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "target": "invoiceinfobycustomerbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3313", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3313", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "target": "invoiceinfocreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "target": "invoiceinfoupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "target": "invoiceinfodeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3404", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "target": "invoiceinfosetdefaultbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3404", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3404", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3432", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "target": "cluelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3432", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3432", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3506", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "target": "cluecreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3506", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3506", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3529", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "target": "clueupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3529", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3529", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "target": "cluedeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "target": "clueassignbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "target": "clueconvertbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3610", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3638", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3638", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "target": "cluestatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "target": "clueinvalidbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3710", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "target": "cluelevelbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3710", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3710", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3731", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "target": "cluelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3731", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3731", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3777", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "target": "cluelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3777", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3777", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "target": "cluelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3869", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3869", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3884", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "target": "cluefollowlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3884", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3884", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3916", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "target": "cluefollowcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3916", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3916", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3948", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "target": "cluefollowdeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3948", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3948", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3979", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3979", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4048", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "target": "cluelistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4048", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4048", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "target": "cluefollowupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "target": "cluestatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "target": "cluestatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4314", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4314", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "target": "cluestatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "target": "cluestatisticsbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_crud_crm_price_letter", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_schemas_crm_price_letter", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4393", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "target": "priceletterlistbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "target": "priceletterdetailbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4466", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "target": "pricelettercreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4466", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4466", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "target": "priceletterupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "target": "pricelettervoidbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_api_crm_quote_routes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_api_crm_contract_routes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "target": "app_api_crm_contract_sub_routes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4552", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "target": "productcategorytreebody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L337", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "target": "customerlistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1039", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "target": "customerlistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "target": "customerlistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1148", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "target": "customerlistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "target": "opportunitylistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "target": "opportunitylistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2290", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "target": "opportunitykanbanbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2601", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2602", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "target": "opportunitystatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2632", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "target": "opportunitystatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2674", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "target": "opportunitystatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "target": "opportunitystatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L2725", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "target": "opportunitylistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3048", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3055", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "target": "supplierinfolistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3090", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "target": "supplierinfolistallbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "target": "supplierinfolistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3256", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "target": "cluelistbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4058", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "target": "cluestatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4271", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "target": "cluestatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "target": "cluestatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4340", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "target": "cluestatisticsbody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L4367", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_685", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L685", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3086", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3086", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3121", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3146", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3169", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3195", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3223", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3223", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3252", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3252", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_rationale_3303", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/crm.py", "source_location": "L3303", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L335", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "list_category_tree", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L347"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L349", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L349"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L364", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L365", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L365", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L367", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "to_list_kwargs", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L374", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L376", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L384", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L384"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L386", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L386"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L397", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L399", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "get_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L400", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L402", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L403", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L404", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "ensure_crm_owner_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "customer_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L406", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "enrich_customer_user_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L407", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L408", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L410"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L412"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L424", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L425", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L425", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L426", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "customer_name_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L428", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L429", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "create_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L431", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L436", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L438", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "customer_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L438", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L440"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L442", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L442"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L454", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L456", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L456", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L458", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L459", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "customer_name_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L462", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "update_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L464", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "customer_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L467", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L467"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L469", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L469"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L481", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L482", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "soft_delete_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L487", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L488", "receiver": "success_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L490", "receiver": "fail_items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L490"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L496", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L498", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L498"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "callee": "generate_customer_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L510", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L513", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L513"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L525", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L526", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L526", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L527", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "create_category", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L528", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "_category_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L531", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L531"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L533", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L533"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L544", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L545", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L545", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L546", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L547", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "update_category", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L548", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L549", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "_category_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L549", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L551", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L551"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L553", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L553"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L564", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "soft_delete_category", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L566", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L568", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L568"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L570"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "list_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L586", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L597", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L598", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L608", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L608"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L610", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L610"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L621", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "get_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L623", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L625", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L626", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L627", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "product_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L627", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L629", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L629"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L631", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L631"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L642", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L643", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L644", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L644", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "create_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L645", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L649", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L651", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "product_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L651", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L653", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L653"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L655", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L655"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L666", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L666", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L667", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L668", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L669", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L670", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "update_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "product_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L674", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L674"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L676", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L676"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L688", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L695", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "soft_delete_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L700", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L702", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L702"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L704", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L704"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L715", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L716", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L717", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L717", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "update_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L720", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L721", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L723", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L723"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L725", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L725"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L736", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L737", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "list_product_options", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L745", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L747", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L747"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L749", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L749"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L765", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L766", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L767", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L767", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "read", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L769", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "load_workbook", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L770", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "BytesIO", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L770", "receiver": "io"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "list_categories", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L774", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "iter_rows", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L783", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L788", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L789", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L790", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L791", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L792", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L797", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L801", "receiver": "row_errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "product_no_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L804", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L805", "receiver": "row_errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L810", "receiver": "cat_name_to_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L812", "receiver": "row_errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L816", "receiver": "errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "create_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L819", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L834", "receiver": "errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L834"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "close", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L836", "receiver": "wb"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L837", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L841", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L841"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L843", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L843"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L854", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L855", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "list_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L856", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L866", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L867", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "PRODUCT_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L871"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L876", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L876"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L878", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L878"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "Workbook", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L902", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "BytesIO", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L904", "receiver": "io"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "save", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L905", "receiver": "wb"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "seek", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L906", "receiver": "output"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "quote", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L908", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "StreamingResponse", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L910", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L918", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L918"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L933", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L934", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L935", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L935", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L936", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L937", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L938", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L940", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "transfer_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L942", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L943", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L945", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L945"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L947", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L947"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L959", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L960", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L961", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L961", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L962", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L963", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L965", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "into_pool", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L967", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L968", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L970"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L972", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L972"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L985", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L985", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L986", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L987", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L988", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "deal_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L989", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L995", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L996", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L998", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "customer_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L998", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1000", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1000"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1002", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1002"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1013", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1014", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1015", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1016", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "check_duplicate_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1017", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1020", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1022", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1022"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1024", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1024"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1036", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1037", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1038", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1038", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1040", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "to_list_kwargs", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1047", "receiver": "list_body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1049", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1049", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1050", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "CUSTOMER_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1054"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1059"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1061", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1061"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "Workbook", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1073", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1081", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "BytesIO", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1083", "receiver": "io"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "save", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1084", "receiver": "wb"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "seek", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1085", "receiver": "output"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "quote", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1087", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "StreamingResponse", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1089", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1097", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1097"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1111", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1113", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1113", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1115", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "to_list_kwargs", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1122", "receiver": "list_body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1132"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1134", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1134"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1146", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1147", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1147", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "to_list_kwargs", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1156", "receiver": "list_body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1166"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1168", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1168"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1181", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1181", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "to_list_kwargs", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1190", "receiver": "list_body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1192", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1200", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1200"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1202"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1213", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1214", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1215", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1215", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1218", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1224", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1229", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1232"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1234"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1245", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1246", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1247", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1247", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1250", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1256", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1264"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1266"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1277", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1279", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1279", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "list_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1288", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1293", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1296", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1296"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1298"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "get_park_area_list", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1311", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1313", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1313"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1315", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1315"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "list_pool_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1331", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1339", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1344", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1347"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1349", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1349"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1360", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1361", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1362", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1362", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "assign_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1364", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1366", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1366"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1368", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1368"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1379", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1380", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1380", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1381", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1381", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "batch_claim_customers", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1382", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1383", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1385", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1385"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1387", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1387"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1397", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "list_pool_records", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1400", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1407", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "pool_record_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1415"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1417", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1417"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1427", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "get_pool_record", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1429", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1431", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1432", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "pool_record_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1432", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1434", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1434"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1436", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1436"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1450", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1451", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "list_contacts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1454", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1464", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1473", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1473"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1475", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1475"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1486", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1490", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "get_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1491", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1493", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "ensure_crm_contact_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1494", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "contact_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1497"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1499", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1499"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1510", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1512", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1514", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "list_contacts_by_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1516", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1518", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1518"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1520", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1520"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1531", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1532", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1533", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1533", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1534", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "create_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1535", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1537", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1539", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "contact_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1539", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1541", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1541"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1543"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1554", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1554", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1555", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1556", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1557", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1558", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "update_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1559", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1560", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "contact_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1560", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1562", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1562"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1564", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1564"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1575", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1576", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1577", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1577", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "soft_delete_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1579", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1580", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1582", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1582"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1584"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1595", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1597", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1598", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1598", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1599", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1600", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "set_primary_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "contact_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1604", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1604"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1606"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "list_contacts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1624", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1624", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1625", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "CONTACT_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1629"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1634", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1634"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1636", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1636"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1647", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1648", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "list_contacts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1651", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1656", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1665", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1665"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1667"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1678", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1679", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "list_contacts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1682", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1688", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1696", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1696"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1698"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1709", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1710", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "list_contacts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1713", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1715", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1718", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1719", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1727", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1727"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1729", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1729"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1743", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1744", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "list_follows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1747", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "customer_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1753", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1754", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1762", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1762"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1764", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1764"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1775", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1776", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1777", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1779", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "get_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1780", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1782", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1783", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1786", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "follow_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1786", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1788", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1788"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1790", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1790"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1801", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1802", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1803", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1805", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "list_follows_by_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1806", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1807", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1809", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1809"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1811", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1811"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1822", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1823", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1824", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1824", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1825", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1825", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "create_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1826", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1829", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1831", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "follow_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1831", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1833", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1833"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1835", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1835"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1846", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1846", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1847", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1848", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "update_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1849", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1849", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1849", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1850", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "follow_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1850", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1852", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1852"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1854", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1854"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "soft_delete_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1867", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1869", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1869"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1871", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1871"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1882", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1883", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "list_follows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1884", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1889", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1889", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "CUSTOMER_FOLLOW_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1894"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1899", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1899"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1901", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1901"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1914", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1915", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "list_pool_rules", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1918", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1925", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "pool_rule_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1930", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1933", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1933"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1935", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1935"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1945", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1946", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "get_pool_rule", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1948", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1950", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1951", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1952", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "pool_rule_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1952", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1954", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1954"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1956", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1956"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1966", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1967", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1967", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "create_pool_rule", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1968", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1979", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1981", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1981"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1983", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1983"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1993", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1994", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1995", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1995", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "update_pool_rule", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L1996", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2008", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2010", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2010"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2012", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2012"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2022", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2023", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "delete_pool_rules", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2024", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2025", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2027", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2027"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2029", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2029"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2039", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2040", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2041", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2041", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "update_pool_rule_status", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2042", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2045", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2047", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2047"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2049", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2049"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "execute_pool_rules", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2060", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2061", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2063", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2063"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2065", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2065"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2079", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2080", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "get_overview_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2081", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2084", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2086", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2086"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2088"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2099", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "get_source_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2102", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2104"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2106"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2117", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "get_level_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2119", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2120", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2122"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2135", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2136", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "get_industry_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2137", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2138", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2140"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "get_trend_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2155", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2163"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2165", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2165"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "get_owner_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2178", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2181"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2183"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2194", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "get_follow_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2204", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2204"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2206", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2206"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2248", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2249", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2251", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2251", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "list_opportunities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2252", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2259", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "opportunity_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2265", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2268"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2270"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2281", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2284", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2284", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "list_opportunities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2292", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "opportunity_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2301", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2301"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2303"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2314", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2315", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2318", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2318", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "CrmOpportunity", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2318"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "ensure_crm_owner_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "get_opportunity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2329", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2331", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2331"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2333", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2333"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2344", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2346", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2346", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "create_opportunity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2350", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2353", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2355", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2355"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2357", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2357"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2368", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2369", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2370", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2370", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2371", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2372", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "update_opportunity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2374", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2376", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2376"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2378", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2378"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2389", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2390", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2391", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2391", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "soft_delete_opportunities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2392", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2395", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2397", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2397"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2399", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2399"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2411", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2412", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2412", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "assign_opportunities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2413", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2422", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2424", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2424"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2426", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2426"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2438", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2439", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2439", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "change_stage", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2452", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2454", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2454"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2456"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2467", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2468", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2469", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2469", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "mark_won", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2480", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2482", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2482"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2484", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2484"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2496", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2497", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2497", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "mark_lost", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2498", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2511"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2513", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2513"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2524", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2525", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2526", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2526", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "batch_update_stage", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2538", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2540", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2540"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2542", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2542"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2553", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2554", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2555", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2555", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "batch_update_expect_date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2556", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2566", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2568", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2568"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2570"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2581", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2582", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "get_stage_log_list", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2583", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2586", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2586"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2588", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2588"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2599", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2600", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "get_kanban_data", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2615", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2617"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2619"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2630", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2631", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "get_statistics_overview", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2641", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2643", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2643"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2645", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2645"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2655", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2656", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "get_statistics_by_stage", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2659", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2659"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2661", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2661"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2673", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "get_win_rate_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2675", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2683", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2685", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2685"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2687"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2699", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "get_statistics_by_owner", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2701", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2708", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2710", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2710"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2712", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2712"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2723", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2724", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "get_sales_funnel", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2726", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2734", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2736", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2736"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2738"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2749", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2750", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "list_opportunity_follows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2751", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2759", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "opp_follow_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2765", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2768", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2768"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2770", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2770"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2781", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2782", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2783", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2783", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "create_opportunity_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2784", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2787", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2791", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2793", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2793"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2795", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2795"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2806", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2807", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2808", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2808", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2809", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2810", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "update_opportunity_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2811", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2814", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2816", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2816"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2818", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2818"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2829", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2830", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2831", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2831", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "soft_delete_opportunity_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2834", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2838", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2840", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2840"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2842", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2842"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2853", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2854", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "get_opportunity_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2855", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2857", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2858", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2860", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2860"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2862", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2862"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2873", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2874", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "list_opportunity_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2875", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2884", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "opp_product_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2893", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2893"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2895", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2895"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2906", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2907", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2910", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "list_products_by_opportunity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2911", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2912", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2914", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2914"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2916", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2916"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2927", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2928", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2929", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2929", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "create_opportunity_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2930", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2933", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2937", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2939", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2939"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2941", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2941"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2952", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2953", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2954", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2954", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2956", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "batch_add_opportunity_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2959", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2967", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2969", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2969"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2971", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2971"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2982", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2983", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2984", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2984", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2985", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2986", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "update_opportunity_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2987", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2990", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2992", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2992"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2994", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L2994"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3005", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3006", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3007", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3007", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "soft_delete_opportunity_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3008", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3011", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3013", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3013"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3015", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3015"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3026", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3027", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "get_opportunity_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3028", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3030", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3031", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3033", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3033"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3035", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3035"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3046", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3047", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3049", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3049", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "list_opportunities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3050", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "OPPORTUNITY_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3063"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3065", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3065", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3069", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3069"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3071", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3071"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3074", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3074"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3089", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "list_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3091", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "supplier_info_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3112"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3123", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "list_all_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3126", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3133", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3135", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3135"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3137", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3137"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "get_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3156", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "supplier_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3156", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3158"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3160", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3160"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3171", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3172", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3173", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3173", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3174", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3174", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "create_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3180", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3182", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "supplier_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3182", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3184"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3186", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3186"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3198", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3199", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3199", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3200", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3201", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "update_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3210", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "supplier_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3210", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3212"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3214", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3214"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3225", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3226", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3227", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3227", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "soft_delete_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3237", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3239", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3241", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3241"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3243", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3243"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3255", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "list_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "SUPPLIER_INFO_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3270"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3272", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3272", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3276"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3278"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3289", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3290", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "callee": "list_invoice_info_by_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3291", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3307", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3307"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3309"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3322"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3324"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3335", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3337", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3337", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "create_invoice_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3343", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "invoice_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3347"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3349", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3349"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3360", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3361", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3362", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3362", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3363", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3364", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "update_invoice_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3365", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "invoice_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3375", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3375"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3377", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3377"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3388", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3388", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3391", "receiver": "ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "soft_delete_invoice_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3395", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3396", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3398", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3398"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3400", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3400"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3411", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3413", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3413", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "set_default_invoice_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3414", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3421", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "invoice_info_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3421", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3423", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3423"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3425", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3425"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3439", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3441", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3441", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "list_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "clue_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3473", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3473"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3475", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3475"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3487", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3488", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3490", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3491", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "get_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3492", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3494", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "ensure_crm_owner_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "clue_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3496", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "enrich_clue_user_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3498", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3500", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3500"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3502", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3502"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3513", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3514", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3514", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "create_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3518", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3521", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "clue_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3521", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3523"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3525", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3525"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3536", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3537", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3538", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3538", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3540", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3541", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "update_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3542", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "clue_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3545", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3545"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3547", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3547"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3558", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3559", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3560", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3560", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "soft_delete_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3566", "receiver": "success_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3568", "receiver": "fail_items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3568"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3575", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3576", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3578", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3578"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3589", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3590", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3591", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3591", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "assign_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3592", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3604", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3604"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3606"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3619", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3619", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3620", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3621", "receiver": "customer_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "convert_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3630", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3632", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3632"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3634", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3634"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3645", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3646", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3648", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "check_convert", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3649", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3650", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3652", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3652"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3654", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3654"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3665", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3666", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3667", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3667", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "update_clue_status", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3668", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "clue_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3673", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3673"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3675", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3675"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3688", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3688", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3691", "receiver": "id_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "fromkeys", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3692", "receiver": "dict"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "invalid_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3697", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3700", "receiver": "results"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "clue_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3700", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3702", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3704", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3704"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3706", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3706"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3717", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3718", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3719", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3719", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "update_clue_level", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3720", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3723", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3725", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3725"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3727", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3727"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3739", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3740", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3740", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "list_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3742", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3763", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "clue_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3768", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3771", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3771"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3773", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3773"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3784", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3785", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3786", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3786", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "list_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3788", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3809", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "clue_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3814", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3817", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3817"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3819", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3819"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3830", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3831", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3832", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3832", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "list_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3834", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3855", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "clue_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3860", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3863", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3863"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3865", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3865"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3876", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "callee": "get_clue_park_area_list", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3877", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3878", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3880", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3880"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3891", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3892", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "list_clue_follows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3893", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "enrich_clue_user_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3901", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3902", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "clue_follow_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3907", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3910", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3910"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3912", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3912"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3923", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3924", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3925", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3925", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3927", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3928", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3929", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3930", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "create_clue_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3932", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3940", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3942", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3942"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3944", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3944"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3955", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3956", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "delete_clue_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3961", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3963", "receiver": "success_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3965", "receiver": "fail_items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3967", "receiver": "fail_items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3967"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3973", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3975", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3975"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3986", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3987", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3988", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3990", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "get_clue_follow_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3991", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3994", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3996", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3996"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3998", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L3998"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4055", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4056", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4057", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4057", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "list_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4089", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4089", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4090", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "CLUE_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4094"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4099", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4099"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4101"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "Workbook", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4116", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "_CLUE_IMPORT_HEADERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4116"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4117", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "BytesIO", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4124", "receiver": "io"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "save", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4125", "receiver": "wb"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "seek", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4126", "receiver": "output"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "quote", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4127", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "StreamingResponse", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4136", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4136"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4151", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4151", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "read", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "load_workbook", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "BytesIO", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4154", "receiver": "io"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "iter_rows", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4156", "receiver": "ws"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "close", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4157", "receiver": "wb"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4159", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "index", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4165", "receiver": "_CLUE_IMPORT_HEADERS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4172", "receiver": "field_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4174", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4175", "receiver": "parsed_rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "import_clues", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4184", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4186", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4186"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4188", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4188"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4199", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "check_duplicate_clue", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4201", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4204", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4205", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4206", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4208", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4210", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4210"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4212"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4223", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4224", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4225", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "get_clue_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4228", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4230", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "enrich_clue_user_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4231", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4234"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4236", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4236"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4248", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4249", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4249", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "update_clue_follow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4250", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4253", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4255", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4255"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4257"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4269", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4270", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4270", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "get_clue_overview_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4272", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4281", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4283", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4283"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4285"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4296", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4297", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "get_clue_source_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4299", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4306", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4308", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4308"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4310"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4320", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4321", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "get_clue_level_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4323", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4325"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4327", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4327"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4339", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "get_clue_trend_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4350", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4352", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4352"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4354"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4365", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4366", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "get_clue_owner_statistics", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4368", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4375", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4377", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4377"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4379", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4379"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4411", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "list_price_letters", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "price_letter_total_pages", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4427", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4428", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4438", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4438"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4440"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4451", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4452", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "get_price_letter", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4453", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4457", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "price_letter_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4457", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4459", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4459"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4461"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4473", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4474", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4474", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4475", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4475", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4476", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "create_price_letter", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4477", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4484", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "price_letter_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4484", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4486"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4488"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4500", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4501", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4502", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4502", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4503", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "pop", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4504", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4506", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "update_price_letter", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4507", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "price_letter_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4517", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4517"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4519", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4519"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4531", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "crm_user_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4532", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4533", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4533", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "void_price_letter", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4534", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "price_letter_row_to_dict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4545", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4545"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4547", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py", "source_location": "L4547"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_assign", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_convert", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_check_duplicate", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_convert", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_create", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_create", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_statistics", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_follow_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_import_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_invalid", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_mine", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_park_area_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_level", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_overview", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_owner", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_source", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_statistics_trend", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_to_follow", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_today_new", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_level", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_clue_update_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_birthday", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_by_customer", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_decision", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_primary", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_set_primary", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_contact_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_check_duplicate", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_deal", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_dealed", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_import_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_into_pool", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_key", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_long_time_no_follow", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_mine", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_park_area_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_to_follow", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_transfer", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_week_new", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_by_customer", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_follow_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_by_customer_impl", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_set_default", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_invoice_info_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opp_list_kwargs", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_assign", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_expect_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_batch_update_stage", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_change_stage", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_follow_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_kanban", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_lost", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mark_won", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_mine_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_batch_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_list_by_opportunity", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_product_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_stage_log_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_funnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_overview", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_owner", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_stage", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_statistics_win_rate", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_opportunity_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_assign", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_claim", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_customer_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_record_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_execute", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_pool_rule_update_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_price_letter_void", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_import_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_options", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_update_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_follow", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_industry", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_level", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_overview", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_owner", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_source", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_statistics_trend", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_add", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_delete", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_export", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_list_all", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_supplier_info_update"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/cfb721a60720a1b5893e91f30e6e55874978df031ec87608617c2cd20f8f9088.json b/backend/graphify-out/cache/ast/v0.9.4/cfb721a60720a1b5893e91f30e6e55874978df031ec87608617c2cd20f8f9088.json new file mode 100644 index 000000000..0ccfe36da --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/cfb721a60720a1b5893e91f30e6e55874978df031ec87608617c2cd20f8f9088.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "label": "contract.py", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "label": "_ensure_contract_in_scope()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L49"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "crmcontract", "label": "CrmContract", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "label": "_get_contract_row_in_scope()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L53"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L70"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "label": "_decimal_value()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L76"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "label": "_parse_optional_date()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L84"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "label": "_parse_optional_datetime()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L102"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "label": "_get_field()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L118"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "label": "_resolve_user_display_name()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L125"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "label": "_is_blank()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L135"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "label": "_first_non_blank()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "label": "_get_default_invoice_info()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L147"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "label": "_build_customer_address()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L157"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "label": "contract_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L246"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "label": "_build_contract_filters()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L250"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "label": "list_contracts()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L391"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "label": "get_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L425"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "label": "get_contract_detail()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L530"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "label": "get_contract_row()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L550"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "label": "_get_supplier_short_name()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L567"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "label": "generate_contract_no()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L580"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "label": "generate_contract_name()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L629"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "label": "_validate_contract_type_and_products()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L650"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "label": "_normalize_framework_contract_data()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L658"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "label": "_validate_product_prices_by_contract_type()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L671"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "label": "_validate_sale_purchase_contract_amount()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L685"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "label": "_resolve_contract_product_ids()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L694"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "label": "_calc_amount_with_tax()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L712"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "label": "_apply_contract_entity_fields()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L718"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "label": "create_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L894"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "label": "update_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L989"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "label": "soft_delete_contracts()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1073"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "label": "_parse_letter_oss_ids_from_tier()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1097"}, {"id": "crmcontractproductpricetier", "label": "CrmContractProductPriceTier", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "label": "validate_framework_contract_for_submit_approval()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1115"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "label": "submit_contract_approval()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1162"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "label": "batch_submit_contract_approval()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1205"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "label": "withdraw_contract_approval()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1235"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "label": "start_execute()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1262"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "label": "finish_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1285"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "label": "invalid_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1308"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "label": "save_template()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1336"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "label": "get_template()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1366"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "label": "upload_file()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1379"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "label": "upload_attachments()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1396"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "label": "upload_attachments_with_category()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1421"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "label": "statistics_overview()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1468"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "label": "statistics_by_status()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1531"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "label": "statistics_by_type()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1565"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "label": "_contract_period_key()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1600"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "label": "statistics_trend()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1609"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "label": "query_expiring()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1655"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "label": "_quote_products_to_contract_products()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1682"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "label": "create_from_quote()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1713"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "label": "renew_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1772"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "label": "export_contracts()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1826"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "label": "_change_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1843"}, {"id": "crmcontractchange", "label": "CrmContractChange", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "label": "list_contract_changes()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1865"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "label": "get_contract_change_detail()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1894"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "label": "_template_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1918"}, {"id": "crmcontracttemplate", "label": "CrmContractTemplate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "label": "list_contract_templates()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1943"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "label": "get_contract_template_detail()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1976"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "label": "_opportunity_products_to_contract_products()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L1996"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "label": "create_from_opportunity()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2021"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "label": "sign_contract()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2074"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "label": "batch_assign_owner()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "label": "download_contract_pdf()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "label": "generate_template_no()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2156"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "label": "_get_change_row()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2188"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "label": "_enrich_change_rows()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2200"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "label": "create_contract_change()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2215"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "label": "update_contract_change()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2266"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "label": "soft_delete_contract_changes()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2304"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "label": "submit_change_approval()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2330"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "label": "withdraw_change()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2353"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "label": "execute_change()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2366"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "label": "export_contract_changes()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2378"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "label": "create_contract_template()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2394"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "label": "update_contract_template()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2444"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "label": "soft_delete_contract_templates()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2501"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "label": "toggle_contract_template_active()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2535"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "label": "export_contract_templates()", "file_type": "code", "source_file": "app/crud/crm/contract.py", "source_location": "L2561"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1", "label": "CRM \u5408\u540c CRUD \u2014 \u5bf9\u7167 CrmContractServiceImpl.java\uff08\u5217\u8868/\u8be6\u60c5 P1\uff09", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_170", "label": "ORM \u2192 camelCase\uff08\u5355\u70b9\u771f\u76f8\uff09", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L170"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_257", "label": "Java: buildQueryWrapper", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L257"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_587", "label": "Java: generateContractNo \u2014 {\u4f9b\u65b9\u7f16\u7801}/X-JT{yyyyMMdd}{3\u4f4d\u5e8f\u53f7}", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L587"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_636", "label": "Java: generateContractName", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L636"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1081", "label": "Java: deleteWithValidByIds \u2014 \u8f6f\u5220\u9664", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1081"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1122", "label": "Java: validateFrameworkContractForSubmitApproval", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1122"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1216", "label": "Java: batchSubmitApproval", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1216"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1244", "label": "Java: withdrawApproval", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1244"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1723", "label": "Java: createFromQuote \u2014 \u8fd4\u56de\u5408\u540c id", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1723"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1782", "label": "Java: renewContract \u2014 \u57fa\u7840\u7eed\u7b7e", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1782"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1833", "label": "Java: queryList for export", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L1833"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2031", "label": "Java: createFromOpportunity \u2014 \u8fd4\u56de\u5408\u540c id", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L2031"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2115", "label": "Java: batchAssignOwner", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L2115"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2146", "label": "Java: downloadContractPdf \u2014 \u8fd4\u56de\u5408\u540c\u6587\u4ef6 URL/\u8def\u5f84", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L2146"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2157", "label": "Java: generateTemplateNo \u2014 TMPL{yyyyMMdd}{4\u4f4d\u5e8f\u53f7}", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L2157"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2339", "label": "Java Controller TODO \u2014 \u4fdd\u6301 pending\uff0c\u8bb0\u5f55\u5907\u6ce8", "file_type": "rationale", "source_file": "app/crud/crm/contract.py", "source_location": "L2339"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_data_scope_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_contact", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_contract_approval", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_contract_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_invoice_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_services_crm_supplier_hazard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_quote", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_quote_product", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_crud_crm_supplier_info", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "target": "crmcontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "target": "crmcontract", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L102", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L102", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L102", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L135", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L135", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L147", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L147", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "target": "crmcontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "target": "crmcontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "query", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "query", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L425", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L425", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L425", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L530", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L530", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L530", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "target": "crmcontract", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L567", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L567", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L629", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L685", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L712", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L712", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L712", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L712", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L718", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "crmcontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L718", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L718", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L989", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L989", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L989", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1073", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1073", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1097", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "target": "crmcontractproductpricetier", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1097", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "crmcontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1205", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1205", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1396", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1396", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1468", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1468", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1468", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1531", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1531", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1531", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1565", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1565", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1565", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1600", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1600", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1609", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1609", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1609", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1682", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1713", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1713", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1772", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1772", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1826", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1826", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1826", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1843", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "target": "crmcontractchange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1843", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1843", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1865", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1865", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1865", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1918", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "target": "crmcontracttemplate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1918", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1918", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1943", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1943", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1943", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1976", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1976", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1976", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1996", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2021", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2021", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2074", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2074", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "target": "crmcontractchange", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2215", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2215", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2215", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2304", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2304", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2330", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2330", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2394", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2394", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2394", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2535", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2535", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L60", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L260", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L365", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L371", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L403", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L410", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L445", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L447", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L448", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L468", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L483", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L492", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L538", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L651", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L659", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L672", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L677", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L686", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L689", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L690", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L714", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L773", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L784", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L794", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L837", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L838", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L853", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L862", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L885", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L903", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L908", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L909", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L910", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L918", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L932", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L937", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "crmcontract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L942", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L949", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L950", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L963", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L969", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L986", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1000", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1006", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1012", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1013", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1014", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1015", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1021", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1038", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1040", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1044", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1070", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1084", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1180", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1245", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1271", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1345", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1387", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1406", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1431", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1480", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1504", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1586", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1619", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1632", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1636", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1639", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1740", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1743", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1749", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1783", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1818", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1822", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1835", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1837", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1891", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1915", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1973", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1993", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2052", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2057", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2059", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2086", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2096", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2147", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2223", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "crmcontractchange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2275", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2301", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2314", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2340", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2367", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2402", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "crmcontracttemplate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2411", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2425", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2425", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2441", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2488", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2498", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2567", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_170", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_257", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_587", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_636", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L636", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1081", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1081", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1122", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1216", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1244", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1723", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1723", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1782", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1782", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_1833", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L1833", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2031", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2115", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2146", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2157", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_rationale_2339", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/contract.py", "source_location": "L2339", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "callee": "ensure_crm_owner_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L50", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_total_pages", "callee": "ceil", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L73", "receiver": "math"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "callee": "Decimal", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L79"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "date", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L87"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L87"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L89"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L91", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L94"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L94"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "strptime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L96", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "datetime", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L105"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L107", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "strptime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L112", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L115", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L126", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L129", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L129"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L136", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "callee": "list_invoice_info_by_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L152", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "callee": "province", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L161"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "callee": "city", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L162"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "callee": "district", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L163"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "callee": "address", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L164"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L194", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L194"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L195"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L196"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_DATE_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L197"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L235", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L235"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L239", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L239"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L241", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L241"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L260", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L262", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L272", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L273", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L274", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L275", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L284", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L286", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L290", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L302", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L306", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L314", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L318", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "distinct", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L329", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L329", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L340", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "distinct", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L348", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L348", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L351", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L359", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L388", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L388", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L402", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L402"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "apply_crm_owner_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L405"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "scalar", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L406", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "with_entities", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L406", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L406", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L406", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L409", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L409", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L413", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "can_user_approve", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L414", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L417", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L417", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L419", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L419", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L435", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L435", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L435"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L448", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L449", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L450", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L450", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L453", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L453", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L461", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L463", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L467", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "supplier_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L468"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L469", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "supplier_address", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L470"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L471", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "legal_person", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L472"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L473", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "agent", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L474"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L475", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "phone_fax", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L476"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L477", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "bank_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L478"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L479", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "bank_account", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L480"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L484", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L486", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L489", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L491", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L494", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L495", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L496", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L498", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L499", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L503", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L504", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L505", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L507", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L510", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L511", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L512", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L513", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "list_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L522", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "callee": "can_user_approve", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L546", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L557", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L557", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L557"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "callee": "get_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L573", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L574", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L575", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L576", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "get_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L590", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L591", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L592", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L594", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L595", "receiver": "date_to_use"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L599", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L599", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L599", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L599"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L605", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L619", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L626", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L637", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "callee": "sub", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L644", "receiver": "re"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L644", "receiver": "user_contract_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L651", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L655", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L659", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L665"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L682", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L691", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "callee": "resolve_product_id_for_quote_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L702", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L810", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L813", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L815", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get_contact", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L820", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L825", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L831", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get_supplier_info", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L833", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "supplier_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L838"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "supplier_address", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L840"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "legal_person", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L842"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "agent", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L844"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "phone_fax", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L846"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "bank_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L848"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "bank_account", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L850"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L856", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L861", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L868", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L874", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L877", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L881", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L883", "receiver": "inv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L904"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L905", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L913", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L915", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L917", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "assert_products_allowed_for_supplier", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L920", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L927", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L928", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L930", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "get_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L934", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L936", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L941", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L943", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L970", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L971", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "batch_insert_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L974", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L984", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L985", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1002", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1004", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1017", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "list_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1028", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "assert_products_allowed_for_supplier", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1030", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "get_customer", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1041", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1043", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1053", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1054", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "delete_products_by_contract_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1057", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "batch_insert_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1069", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1089", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1091", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1093", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1099", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "loads", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1102", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1103"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1108", "receiver": "part"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1108", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1108", "receiver": "part"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1111", "receiver": "letter_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1125", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1126", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "list_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1131", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1134", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "CrmContractProductPriceTier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1134"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1144", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1147", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1148", "receiver": "by_product"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1148", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1155", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1159", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1178", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1188", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1189", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "create_approval_records", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1192", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1201", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1249", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1256", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "callee": "delete_pending_approvals", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1258", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1273", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1275", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1280", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1281", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1296", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1303", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1304", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1318", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1319", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1327", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1331", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1332", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1350", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1351", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1357", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1361", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1362", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1375", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1389", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1391", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1392", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1404", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1408", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1411", "receiver": "x"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1411", "receiver": "oss_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1411", "receiver": "x"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1412", "receiver": "existing"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "startswith", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1412", "receiver": "existing"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "discard", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1413", "receiver": "merged"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1414", "receiver": "merged"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1416", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1417", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1430", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1433", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1436", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "startswith", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1438", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "loads", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1440", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1441"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1442"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1446", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1447", "receiver": "oss_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1449", "receiver": "existing_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1451", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1451", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1453", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1453", "receiver": "att"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1453", "receiver": "att"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1456", "receiver": "att"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1462", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1462", "receiver": "oss_index"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1463", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1464", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1477", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1477"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "apply_crm_owner_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1489"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "quantize", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "ROUND_HALF_UP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1504"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "quantize", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "ROUND_HALF_UP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1509"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "_count", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1516", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "_count", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1517", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "_count", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1518", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "_count", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1519", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "callee": "_count", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1520", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1532", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1532"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "callee": "apply_crm_owner_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1534", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1534"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1553", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1566", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1566"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "callee": "apply_crm_owner_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1568", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1568"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1588", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1602", "receiver": "dt"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1606", "receiver": "dt"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1618", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1618"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "apply_crm_owner_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1624", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1624"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1629", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1629"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1631", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1632", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1635", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "quantize", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1639", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "ROUND_HALF_UP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1639"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1643", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1664", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1665", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1667", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1667"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "isnot", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1676", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1685", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1687", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1687", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1688", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1688", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1689", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1689", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1690", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1690", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1691", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1691", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1692", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1692", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1693", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1693", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1694", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1694", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1695", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1696", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1697", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1698", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1699", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1700", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1700", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1701", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1701", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1702", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1703", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1703", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1704", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1704", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1705", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1706", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1707", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "get_quote", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1724", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1726", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1729", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1730", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1732", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1733", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1735", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1737", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "list_quote_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1742", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1745", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1746", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1759", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1759", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "CrmQuote", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1759"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1766", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1767", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1785", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1789", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1790", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1791", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1792", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1793", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1793", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1798", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1801", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1802", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1803", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1804", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1805", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1806", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1807", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1808", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1809", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1809", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1810", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1810", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1811", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1811", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1813", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1815", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "callee": "list_contract_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1820", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1834", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1834"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1836", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1857", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1857"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1861", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1861"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1874", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "CrmContractChange", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1874"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "apply_crm_create_by_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1879", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "CrmContractChange", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1879"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1881", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1881", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1881", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1884", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1884", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1884", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1886", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "scalar", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1887", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "with_entities", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1887", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1887", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1887", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1890", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1890", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1902", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1902", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "callee": "CrmContractChange", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1902"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1911", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1912", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1939", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "callee": "_FMT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1939"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1952", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1952"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "apply_crm_create_by_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1957", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1957"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1959", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1959", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1959", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1961", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1962", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1962", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1962", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1964", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1965", "receiver": "filters"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "scalar", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1967", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "with_entities", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1967", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1967", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1967", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1970", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1983", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1983", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1983"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1992", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L1999", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2001", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2001", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2002", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2002", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2003", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2003", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2003", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2004", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2004", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2005", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2005", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2006", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2007", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2008", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2009", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2010", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2011", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2011", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2012", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2013", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2014", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2014", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2015", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2033", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2033", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "CrmOpportunity", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2033"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2042", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2045", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2046", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2047", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2049", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "list_products_by_opportunity", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2056", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2069", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2070", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2090", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2093", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2100", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2101", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2117", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2120", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2133", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2135", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2150", "receiver": "detail"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2158", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2161", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2161"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2165", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2167", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2179", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2185", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2190", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2190", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "callee": "CrmContractChange", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2190"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2201", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2201", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2205", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2206", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2211", "receiver": "name_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2211", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2223", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2225", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2228", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2230", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2231", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2233", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2235", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2237", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2239", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2241", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2261", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2262", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2277", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2299", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2300", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2317", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2321", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2324", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2326", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2344", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2348", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2349", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2356", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2358", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2361", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2362", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2369", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2373", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2374", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2402", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2404", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2406", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2410", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2439", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2440", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2454", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2454", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2454"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2463", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2464", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2496", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2497", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2512", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2512", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2512"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2522", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2529", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2531", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2544", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2544", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "CrmContractTemplate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2544"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2553", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2556", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py", "source_location": "L2557", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_apply_contract_entity_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_assign_owner", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_batch_submit_contract_approval", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_contract_filters", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_build_customer_address", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_calc_amount_with_tax", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_change_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_period_key", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_contract_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_contract_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_opportunity", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_create_from_quote", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_decimal_value", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_download_contract_pdf", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_enrich_change_rows", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_ensure_contract_in_scope", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_execute_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_changes", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contract_templates", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_export_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_finish_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_first_non_blank", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_contract_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_generate_template_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_change_row", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_change_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_row_in_scope", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_contract_template_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_default_invoice_info", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_field", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_supplier_short_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_get_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_invalid_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_is_blank", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_changes", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contract_templates", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_list_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_normalize_framework_contract_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_opportunity_products_to_contract_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_letter_oss_ids_from_tier", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_parse_optional_datetime", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_query_expiring", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_quote_products_to_contract_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_renew_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_contract_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_resolve_user_display_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_save_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_sign_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_changes", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contract_templates", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_soft_delete_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_start_execute", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_by_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_overview", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_statistics_trend", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_change_approval", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_submit_contract_approval", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_template_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_toggle_contract_template_active", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_total_pages", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_update_contract_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_attachments_with_category", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_upload_file", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_contract_type_and_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_framework_contract_for_submit_approval", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_product_prices_by_contract_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_validate_sale_purchase_contract_amount", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_contract_withdraw_contract_approval"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/d7fab79d0f427b90ecf5d2c7b8d2561c4265a24062b77cf6a9950c563af0659e.json b/backend/graphify-out/cache/ast/v0.9.4/d7fab79d0f427b90ecf5d2c7b8d2561c4265a24062b77cf6a9950c563af0659e.json new file mode 100644 index 000000000..4b367a757 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/d7fab79d0f427b90ecf5d2c7b8d2561c4265a24062b77cf6a9950c563af0659e.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": "L49"}, {"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": "L53"}, {"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": "L75"}, {"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": "L89"}, {"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": "L129"}, {"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": "L138"}, {"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": "L152"}, {"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": "L193"}, {"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": "L198"}, {"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": "L226"}, {"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": "L230"}, {"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": "L235"}, {"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": "L242"}, {"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": "L254"}, {"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": "L265"}, {"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": "L276"}, {"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": "L291"}, {"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": "L299"}, {"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": "L304"}, {"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": "L311"}, {"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": "L318"}, {"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": "L329"}, {"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": "L335"}, {"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": "L343"}, {"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": "L356"}], "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": "L49", "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": "L49", "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": "L53", "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": "L53", "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": "L75", "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": "L75", "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": "L89", "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": "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_plancreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L129", "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": "L129", "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": "L138", "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": "L138", "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": "L152", "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": "L152", "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": "L193", "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": "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_planread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L198", "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": "L198", "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": "L198", "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": "L226", "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": "L226", "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": "L230", "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": "L230", "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": "L235", "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": "L235", "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": "L242", "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": "L242", "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": "L254", "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": "L254", "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": "L265", "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": "L265", "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": "L276", "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": "L276", "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": "L291", "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": "L291", "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": "L299", "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": "L299", "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": "L304", "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": "L304", "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": "L311", "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": "L311", "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": "L318", "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": "L318", "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": "L329", "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": "L329", "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": "L335", "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": "L335", "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": "L343", "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": "L343", "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": "L356", "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": "L356", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/d9d9b949cc5f275764b7ea771616141084a0c7cd256dd3262bf532cf4ac0f20f.json b/backend/graphify-out/cache/ast/v0.9.4/d9d9b949cc5f275764b7ea771616141084a0c7cd256dd3262bf532cf4ac0f20f.json new file mode 100644 index 000000000..898ddaa38 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/d9d9b949cc5f275764b7ea771616141084a0c7cd256dd3262bf532cf4ac0f20f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "label": "migrate_20260727_split_brand_from_product_name.py", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "label": "parse_name()", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L39"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "label": "collect_candidates()", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "label": "write_csv()", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L77"}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "label": "apply_updates()", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "label": "main()", "file_type": "code", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L133"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L60", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L150", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L153", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "target": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L158", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L41", "receiver": "NAME_WITH_BRAND_RE"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "group", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L44", "receiver": "m"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L45", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "callee": "group", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L45", "receiver": "m"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L53", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L53", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L53"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L64", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "callee": "mkdir", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L78", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "callee": "DictWriter", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L80", "receiver": "csv"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L81"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "callee": "writeheader", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L84", "receiver": "writer"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv", "callee": "writerows", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L85", "receiver": "writer"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L92", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L92", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L92"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L104", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "CrmProductBrand", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L104"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L114", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "CrmProductBrand", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L115", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L116", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L129", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L134", "receiver": "argparse"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "add_argument", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L135", "receiver": "parser"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "add_argument", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L140", "receiver": "parser"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "parse_args", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L145", "receiver": "parser"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "SessionLocal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L147", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "is_absolute", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L151", "receiver": "csv_path"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "callee": "close", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py", "source_location": "L161", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_apply_updates", "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_collect_candidates", "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_main", "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_parse_name", "users_wuzilong_work_00code_shanxia2_0_backend_scripts_migrate_20260727_split_brand_from_product_name_write_csv"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/dbc654b59fb1c623be2208a3c5d45f97cac20927ee6879ca89493072d5c10012.json b/backend/graphify-out/cache/ast/v0.9.4/dbc654b59fb1c623be2208a3c5d45f97cac20927ee6879ca89493072d5c10012.json new file mode 100644 index 000000000..ee634b1bf --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/dbc654b59fb1c623be2208a3c5d45f97cac20927ee6879ca89493072d5c10012.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_create_date", "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L90"}, {"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": "L94"}, {"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": "L126"}, {"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": "L130"}, {"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": "L155"}, {"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": "L163"}, {"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": "L195"}, {"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": "L200"}, {"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": "L209"}, {"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": "L230"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L357"}, {"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": "L385"}, {"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": "L469"}, {"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": "L577"}, {"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": "L691"}, {"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": "L738"}, {"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": "L866"}, {"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": "L898"}, {"id": "hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L929"}, {"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": "L935"}, {"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_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1078"}, {"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": "L1140"}, {"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": "L1209"}, {"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": "L1240"}, {"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": "L1279"}, {"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": "L1290"}, {"id": "planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "label": "get_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1313"}, {"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": "L1324"}, {"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": "L1347"}, {"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": "L1358"}, {"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": "L1395"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_95", "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": "L95"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_131", "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": "L131"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_164", "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": "L164"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_474", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\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": "L474"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_872", "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": "L872"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_940", "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": "L940"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1083", "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": "L1083"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L50", "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": "L56", "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": "L57", "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": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_site_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L59", "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": "L60", "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": "L61", "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": "L90", "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": "L90", "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": "L90", "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": "L94", "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": "L94", "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": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L130", "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": "L155", "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": "L163", "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": "L163", "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": "L163", "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": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "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_generate_notify_message", "relation": "contains", "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_generate_notify_message", "target": "plplan", "relation": "references", "context": "parameter_type", "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_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": "L230", "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": "L230", "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": "L230", "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": "L230", "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": "L230", "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": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L357", "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": "L357", "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": "L357", "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": "L385", "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": "L385", "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": "L385", "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": "L385", "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": "L385", "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": "L469", "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": "L469", "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": "L469", "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": "L469", "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": "L469", "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": "L577", "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": "L577", "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": "L577", "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": "L577", "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": "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_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L691", "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": "L691", "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": "L691", "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": "L691", "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": "L738", "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": "L738", "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": "L738", "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": "L738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L738", "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": "L866", "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": "L866", "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": "L866", "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": "L866", "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": "L866", "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": "L898", "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": "L898", "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": "L898", "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": "L898", "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": "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_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L929", "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": "L935", "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": "L935", "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": "L935", "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": "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_cancel_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1078", "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": "L1078", "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": "L1078", "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": "L1078", "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": "L1140", "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": "L1140", "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": "L1140", "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": "L1140", "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": "L1140", "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": "L1209", "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": "L1209", "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": "L1209", "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": "L1209", "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": "L1209", "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": "L1240", "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": "L1240", "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": "L1240", "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": "L1240", "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": "L1240", "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": "L1279", "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": "L1279", "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": "L1279", "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": "L1290", "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": "L1290", "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": "L1290", "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": "L1290", "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": "L1313", "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": "L1313", "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": "L1313", "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": "L1324", "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": "L1324", "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": "L1324", "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": "L1324", "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": "L1347", "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": "L1347", "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": "L1347", "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": "L1358", "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": "L1358", "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": "L1358", "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": "L1358", "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": "L1374", "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": "L1374", "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": "L1374", "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": "L1395", "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": "L1395", "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": "L1395", "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": "L1434", "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": "L1434", "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": "L1434", "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": "L1434", "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": "L139", "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": "L156", "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": "L167", "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": "L188", "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": "L353", "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": "L393", "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_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L398", "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": "L400", "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": "L404", "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": "L478", "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_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L480", "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": "L483", "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": "L487", "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": "L599", "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": "L602", "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": "L604", "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": "L608", "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": "L944", "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": "L961", "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": "L1175", "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": "L1236", "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": "L1270", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_95", "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": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_131", "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": "L131", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_164", "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": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_474", "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": "L474", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_872", "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": "L872", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_940", "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": "L940", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1083", "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": "L1083", "weight": 1.0}], "raw_calls": [{"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": "L91", "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": "L96", "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": "L97", "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": "L101", "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": "L102", "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": "L109", "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": "L132", "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": "L136", "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": "L138", "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": "L141", "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": "L143", "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": "L147", "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": "L149", "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": "L157", "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": "L160", "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": "L165", "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": "L167"}, {"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": "L170"}, {"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": "L171"}, {"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": "L173", "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": "L174", "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": "L177", "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": "L180", "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": "L188"}, {"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": "L188"}, {"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": "L191"}, {"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": "L192"}, {"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": "L197", "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": "L206", "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": "L211", "receiver": null}, {"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": "L246", "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": "L246", "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": "L247", "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": "L247"}, {"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": "L254", "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": "L255", "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": "L256", "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": "L256", "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": "L256", "receiver": "q"}, {"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": "L261", "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": "L276", "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": "L276", "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": "L276", "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": "L279", "receiver": "product_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "exists", "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_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L282", "receiver": "db"}, {"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": "L287", "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": "L287", "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": "L287", "receiver": "product_name_kw"}, {"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": "L298", "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": "L298"}, {"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": "L301", "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": "L305", "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": "L305", "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": "L305", "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": "L305", "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": "L312", "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": "L312", "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": "L312"}, {"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": "L314", "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": "L321", "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": "L321", "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": "L323", "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": "L332", "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": "L333", "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": "L339", "receiver": "PlanProductRead"}, {"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": "L340", "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": "L341", "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": "L343", "receiver": "PlanWithProducts"}, {"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": "L345", "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": "L351", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L362", "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": "L362", "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": "L363", "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": "L363", "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": "L363", "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": "L368", "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": "L368", "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": "L372", "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": "L375", "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": "L375", "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": "L375"}, {"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": "L390", "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": "L390", "receiver": "user"}, {"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": "L401", "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": "L445", "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": "L450", "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": "L459", "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": "L461", "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": "L463", "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": "L464", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_create_full", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L475", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L476", "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": "L476", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "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": "L477", "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": "L484", "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": "L522", "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": "L529", "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": "L530", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L534", "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": "L539", "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": "L540", "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": "L549", "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": "L550", "receiver": "plan_products"}, {"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": "L553", "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": "L563", "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": "L564", "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": "L566", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L585", "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": "L585", "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": "L589", "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": "L589", "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": "L589"}, {"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": "L594", "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": "L596", "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": "L605", "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": "L619", "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": "L622", "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": "L624", "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": "L639", "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": "L643", "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": "L643"}, {"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": "L653", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "PlPlanProduct", "is_member_call": false, "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_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": "L659", "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": "L678", "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": "L680", "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": "L681", "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": "L696", "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": "L696", "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": "L697", "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": "L697"}, {"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": "L700", "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": "L700", "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": "L700"}, {"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": "L709", "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": "L717", "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": "L721"}, {"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": "L723", "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": "L723"}, {"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": "L724", "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": "L724"}, {"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": "L724"}, {"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": "L725", "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": "L725"}, {"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": "L727", "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": "L728"}, {"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": "L729"}, {"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": "L744", "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": "L744", "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": "L745", "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": "L748", "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": "L751", "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": "L757", "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": "L758", "receiver": "update_data"}, {"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": "L766", "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": "L766"}, {"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": "L773", "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": "L783", "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": "L783", "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": "L783"}, {"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": "L790", "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": "L798", "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": "L803", "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": "L812", "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": "L821", "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": "L822", "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": "L824", "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": "L826", "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": "L828", "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": "L831", "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": "L831"}, {"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": "L842", "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": "L852", "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": "L860", "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": "L861", "receiver": "db"}, {"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": "L873", "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": "L873", "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": "L874", "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": "L875", "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": "L882", "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": "L884", "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": "L884", "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": "L884"}, {"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": "L892", "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": "L905", "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": "L905", "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": "L906", "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": "L907", "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": "L914", "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": "L916", "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": "L916", "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": "L916"}, {"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": "L924", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L930", "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": "L941", "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": "L941", "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": "L942", "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": "L949", "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": "L949", "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": "L949"}, {"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": "L960", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L964", "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": "L964", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportSiteLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L964"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L971", "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": "L977", "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": "L977"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_site_link_read_from_row", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L986", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L988", "receiver": "product_name_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L994", "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": "L994"}, {"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": "L1007", "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": "L1007", "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": "L1007"}, {"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": "L1015", "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": "L1015", "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": "L1015"}, {"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": "L1023", "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": "L1024", "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": "L1036", "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": "L1041", "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": "L1042", "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": "L1047", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportSiteLinkRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1052", "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": "L1059", "receiver": null}, {"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": "L1084", "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": "L1084", "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": "L1085", "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": "L1088", "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": "L1091", "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": "L1095", "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": "L1095", "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": "L1095"}, {"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": "L1105", "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": "L1112", "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": "L1112"}, {"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": "L1113", "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": "L1122", "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": "L1129", "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": "L1130", "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": "L1146", "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": "L1146", "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": "L1147", "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": "L1150", "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": "L1156", "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": "L1156", "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": "L1156"}, {"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": "L1165", "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": "L1169", "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": "L1174", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_product_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1177", "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": "L1181", "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": "L1186", "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": "L1194", "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": "L1204", "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": "L1215", "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": "L1215", "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": "L1216", "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": "L1217", "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": "L1224", "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": "L1235", "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": "L1247", "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": "L1247", "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": "L1248", "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": "L1249", "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": "L1257", "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": "L1258", "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": "L1269", "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": "L1284", "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": "L1284", "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": "L1285", "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": "L1296", "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": "L1296", "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": "L1297", "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": "L1299", "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": "L1301", "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": "L1304", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1318", "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": "L1318", "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": "L1319", "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": "L1330", "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": "L1330", "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": "L1331", "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": "L1333", "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": "L1335", "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": "L1338", "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": "L1352", "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": "L1352", "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": "L1353", "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": "L1364", "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": "L1364", "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": "L1365", "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": "L1367", "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": "L1370", "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": "L1379", "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": "L1379", "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": "L1380", "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": "L1382", "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": "L1385", "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": "L1400", "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": "L1400", "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": "L1401", "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": "L1404", "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": "L1406", "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": "L1408", "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": "L1410", "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": "L1410", "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": "L1414", "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": "L1414", "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": "L1414"}, {"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": "L1420", "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": "L1420", "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": "L1420"}, {"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": "L1426", "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": "L1436", "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": "L1436", "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": "L1436"}, {"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": "L1445", "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": "L1446", "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": "L1446"}], "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_count_plans_by_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "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/df41e8fcb843c01997f813fa5584efde9f118c607ef434e072f1b46ea1f231b6.json b/backend/graphify-out/cache/ast/v0.9.4/df41e8fcb843c01997f813fa5584efde9f118c607ef434e072f1b46ea1f231b6.json new file mode 100644 index 000000000..4c81ae95e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/df41e8fcb843c01997f813fa5584efde9f118c607ef434e072f1b46ea1f231b6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "label": "product.py", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L32"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "label": "_category_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L42"}, {"id": "crmproductcategory", "label": "CrmProductCategory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "label": "list_categories()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L58"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "label": "_build_category_tree()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L85"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "label": "_collect_category_with_ancestors()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L96"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "label": "list_category_tree()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L112"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "label": "get_category()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L145"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "label": "create_category()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L157"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "label": "update_category()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "label": "soft_delete_category()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L233"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "label": "category_code_exists()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L273"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "label": "_brand_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L293"}, {"id": "crmproductbrand", "label": "CrmProductBrand", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "label": "_alias_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L302"}, {"id": "crmproductalias", "label": "CrmProductAlias", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "label": "_load_brands_aliases_maps()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L310"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "label": "_assert_brand_deletable()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L344"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "label": "_replace_product_brands()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L381"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "label": "_replace_product_aliases()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L450"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "label": "_product_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L513"}, {"id": "crmproduct", "label": "CrmProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "label": "product_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L551"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "label": "list_products()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L561"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "label": "get_product()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L635"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "label": "get_product_by_no()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L647"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "label": "_max_sxwl_product_seq()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L666"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "label": "generate_product_no()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L687"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "label": "generate_barcode()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L700"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "label": "create_product()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L728"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "label": "update_product()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L802"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "label": "soft_delete_product()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L881"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "label": "product_no_exists()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L894"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "label": "barcode_exists()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L911"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "label": "list_product_options()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L928"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "label": "_oss_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L965"}, {"id": "sysoss", "label": "SysOss", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "label": "list_oss_by_biz()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L983"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "label": "create_oss()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L999"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "label": "soft_delete_oss()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1031"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "label": "_normalize_text()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1042"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_quote_item_field", "label": "_get_quote_item_field()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1049"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "label": "generate_auto_product_no()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1056"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "label": "resolve_product_id_for_quote_item()", "file_type": "code", "source_file": "app/crud/crm/product.py", "source_location": "L1061"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1", "label": "CRM \u4ea7\u54c1\u6a21\u5757 CRUD\uff08\u4ea7\u54c1\u5206\u7c7b + \u4ea7\u54c1 + \u9644\u4ef6\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_43", "label": "\u5206\u7c7b ORM \u5bf9\u8c61\u8f6c dict\uff08camelCase \u952e\u540d\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L43"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_66", "label": "\u83b7\u53d6\u5206\u7c7b\uff08\u6241\u5e73\u5217\u8868\uff0c\u652f\u6301\u540d\u79f0\u6a21\u7cca\u4e0e\u72b6\u6001\u7b5b\u9009\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L66"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_88", "label": "\u6309 parentId \u5c06\u6241\u5e73\u5206\u7c7b\u5217\u8868\u7ec4\u88c5\u4e3a\u5d4c\u5957\u6811", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_99", "label": "\u4fdd\u7559\u5339\u914d\u8282\u70b9\u53ca\u5176\u5168\u90e8\u4e0a\u7ea7\uff0c\u4f9b\u68c0\u7d22\u540e\u4ecd\u80fd\u6b63\u786e\u7ec4\u6811\u3002", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L99"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_120", "label": "\u83b7\u53d6\u4ea7\u54c1\u5206\u7c7b\u6811\uff08\u5d4c\u5957 children\uff0c\u4f9b\u6811\u5f62\u8868\u683c/\u6811\u9009\u62e9\u5668\u4f7f\u7528\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L120"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_519", "label": "\u4ea7\u54c1 ORM \u5bf9\u8c61\u8f6c dict\uff08camelCase \u952e\u540d\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L519"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_667", "label": "\u53d6\u5f53\u524d\u79df\u6237\u4e0b SXWL \u524d\u7f00\u4e14\u540e\u7f00\u4e3a\u7eaf\u6570\u5b57\u7684\u4ea7\u54c1\u7f16\u53f7\u6700\u5927\u6d41\u6c34\u503c", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L667"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_688", "label": "\u751f\u6210\u4ea7\u54c1\u7f16\u53f7\uff08\u683c\u5f0f\uff1aSXWL + 6\u4f4d\u9012\u589e\u6d41\u6c34\u53f7\uff0c\u5982 SXWL000001\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L688"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_701", "label": "\u751f\u6210\u552f\u4e00\u6761\u7801\uff08\u7eaf\u6570\u5b57\uff1ayyyyMMdd + 6\u4f4d\u5e8f\u53f7\uff0c\u5982 20260606000001\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L701"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1057", "label": "\u62a5\u4ef7\u81ea\u52a8\u5efa\u6863\u65f6\u751f\u6210\u4ea7\u54c1\u7f16\u53f7\uff08\u4e0e\u4ea7\u54c1\u7ba1\u7406\u65b0\u589e\u89c4\u5219\u4e00\u81f4\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L1057"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1068", "label": "Java: resolveProductIdForQuoteItem\uff08CrmProduct \u65e0 tax_rate\uff0c\u8df3\u8fc7\u7a0e\u7387\u5339\u914d\uff09", "file_type": "rationale", "source_file": "app/crud/crm/product.py", "source_location": "L1068"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_crud_crm_data_scope_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "target": "crmproductcategory", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "target": "crmproductcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "target": "crmproductcategory", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "target": "crmproductcategory", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L233", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L233", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L273", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L273", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "target": "crmproductbrand", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "target": "crmproductalias", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L344", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L344", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L450", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L450", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L450", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L513", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "target": "crmproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L513", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L513", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L513", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L513", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "target": "crmproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "target": "crmproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L647", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L647", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "target": "crmproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L647", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L666", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L666", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L687", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L687", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "crmproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L802", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L802", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "crmproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L802", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L894", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L965", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "target": "sysoss", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L965", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L965", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L983", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L983", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L983", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L999", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L999", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "target": "sysoss", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L999", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1042", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1042", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_quote_item_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1049", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1056", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1056", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1061", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1061", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L82", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "target": "crmproductcategory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L203", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L340", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L411", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "target": "crmproductbrand", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "target": "crmproductalias", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L500", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L553", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L554", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L624", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L626", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L689", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L740", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L742", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L743", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L750", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "crmproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L754", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L783", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L790", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L811", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L842", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L843", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L852", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L858", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L866", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L883", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L996", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "target": "sysoss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1007", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1058", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_quote_item_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1072", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1074", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1078", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "target": "crmproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_43", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_66", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_88", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_99", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_120", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_519", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L519", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_667", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L667", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_688", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L688", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_701", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L701", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1057", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1057", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_rationale_1068", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/crud/crm/product.py", "source_location": "L1068", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_total_pages", "callee": "ceil", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L36", "receiver": "math"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L53", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L54", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L67", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "CrmProductCategory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L67"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L76", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L78", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L79", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L89", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "callee": "sort", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L92", "receiver": "children"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L92", "receiver": "x"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L103", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L107", "receiver": "keep"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L121", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L140", "receiver": "m"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L148", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "callee": "CrmProductCategory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L148"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L165", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L166", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L177", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L178", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L180", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L182", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L183", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L188", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L189", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L190", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L206", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L227", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L228", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L229", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L237", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L238", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L244", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L244", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "CrmProductCategory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L244"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L253", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L257", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L257"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L270", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L280", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "callee": "CrmProductCategory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L280"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L287", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L318", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L318", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "CrmProductBrand", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L318"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L320", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L328", "receiver": "brands_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L330", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "CrmProductAlias", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L330"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L332", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "receiver": "aliases_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L348", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L348", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "PlInventory", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L348"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L358", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L364"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L363", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L363"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L375", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L392", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "CrmProductBrand", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L392"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L402"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L402", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L403", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L403", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L404", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L404", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L404", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L408", "receiver": "keep_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L414", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L417"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L417", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L418", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L418", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L418", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L422", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L422", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L423", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L423", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L423", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L433", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L435", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L461", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "CrmProductAlias", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L461"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L472"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L472", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L473", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L473", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L474", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L474", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L474", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L476", "receiver": "keep_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L481", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L483"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L483", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L484", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L484", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L484", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L487", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L487", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L488", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L488", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L488", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L497", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L499", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L501", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L520", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L546", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L556", "receiver": "brands_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L557", "receiver": "aliases_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L574", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L574"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "apply_crm_create_by_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L579", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L579"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L582", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "get_supplier_hazard_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L598", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L600", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L606", "receiver": "conds"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L608", "receiver": "conds"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L608", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L608", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L608", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L610", "receiver": "conds"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L610", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "scalar", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L613", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "with_entities", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L613", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L613", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L613", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L618", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L628", "receiver": "brands_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L629", "receiver": "aliases_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L638", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L638", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L638"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L650", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L650", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L650"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "callee": "PRODUCT_NO_PREFIX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L668"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L670", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "callee": "isdigit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L682", "receiver": "suffix"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "callee": "PRODUCT_NO_GENERATE_MAX_RETRIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L690"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L692", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L697", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L702", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L702", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L706", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L706", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L706", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L708", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L712", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L736", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L740", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L744", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L747", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L748", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L755", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L757", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L760", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L761", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L763", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L764", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L765", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L766", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L767", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L767", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L768", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L769", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L770", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L771", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L772", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L773", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L775", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L776", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L781", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L782", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L788", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L795", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L797", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L798", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L813", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L814", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L842", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L844", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L863", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L871", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L875", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L876", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L877", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L885", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "callee": "ensure_crm_create_by_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L886", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L889", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L891", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L901", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L901"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L908", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L918", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L918"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L925", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L937", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L937"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L946", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L946", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L946", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L949", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L949", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L979", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L986", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L986", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "callee": "SysOss", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L986"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L993", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1008", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1010", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1011", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1012", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1013", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1014", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1015", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1016", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1017", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1018", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1019", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1020", "receiver": "kwargs"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1025", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1026", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1027", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1033", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1033", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "callee": "SysOss", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1033"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1036", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1045", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1070", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1072", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1080", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1083", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1085", "receiver": "product_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1086", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1087", "receiver": "unit"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1090", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1090", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1090"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1094", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1094", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1094", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1095", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1095", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1095", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1096", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1096", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1096", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1098", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1132", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1133", "receiver": "db"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_alias_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_assert_brand_deletable", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_barcode_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_brand_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_build_category_tree", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_code_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_category_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_collect_category_with_ancestors", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_category", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_oss", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_create_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_auto_product_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_barcode", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_generate_product_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_category", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_product_by_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_get_quote_item_field", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_categories", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_category_tree", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_oss_by_biz", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_product_options", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_list_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_load_brands_aliases_maps", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_max_sxwl_product_seq", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_normalize_text", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_oss_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_no_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_row_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_product_to_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_aliases", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_replace_product_brands", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_resolve_product_id_for_quote_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_category", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_oss", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_soft_delete_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_total_pages", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_category", "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_product_update_product"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/f4b9b55d1a4e43b9d09c2193095223a922b97224baa660817c8b5fc5647985f6.json b/backend/graphify-out/cache/ast/v0.9.4/f4b9b55d1a4e43b9d09c2193095223a922b97224baa660817c8b5fc5647985f6.json new file mode 100644 index 000000000..5e2e7b0d9 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/f4b9b55d1a4e43b9d09c2193095223a922b97224baa660817c8b5fc5647985f6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "label": "product.py", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorycreatebody", "label": "ProductCategoryCreateBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L12"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategoryupdatebody", "label": "ProductCategoryUpdateBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L26"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_categorydeletebody", "label": "CategoryDeleteBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L41"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorytreebody", "label": "ProductCategoryTreeBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L47"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatestatusbody", "label": "ProductUpdateStatusBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L56"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productlistbody", "label": "ProductListBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L66"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productbranditem", "label": "ProductBrandItem", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L79"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productaliasitem", "label": "ProductAliasItem", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L90"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcreatebody", "label": "ProductCreateBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L100"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatebody", "label": "ProductUpdateBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L134"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdetailbody", "label": "ProductDetailBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdeletebody", "label": "ProductDeleteBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L175"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productoptionsbody", "label": "ProductOptionsBody", "file_type": "code", "source_file": "app/schemas/crm/product.py", "source_location": "L182"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_rationale_1", "label": "CRM \u4ea7\u54c1\u6a21\u5757 Pydantic Schemas", "file_type": "rationale", "source_file": "app/schemas/crm/product.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_rationale_48", "label": "\u4ea7\u54c1\u5206\u7c7b\u6811\u67e5\u8be2\uff08\u5bc6\u6587\u89e3\u5bc6\u540e\u987b\u7528 Pydantic \u7ed1\u5b9a\uff0c\u88f8 dict=None \u5728\u90e8\u5206\u94fe\u8def\u4e0b\u4f1a\u4e22 body\uff09", "file_type": "rationale", "source_file": "app/schemas/crm/product.py", "source_location": "L48"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorycreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorycreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategoryupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategoryupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_categorydeletebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_categorydeletebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorytreebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorytreebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatestatusbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatestatusbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productlistbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productlistbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productbranditem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productbranditem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productaliasitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productaliasitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L134", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L134", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdetailbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdetailbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdeletebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdeletebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productoptionsbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productoptionsbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_rationale_48", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorytreebody", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/product.py", "source_location": "L48", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_categorydeletebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productaliasitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productbranditem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorycreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategorytreebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcategoryupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productcreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdeletebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productdetailbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productlistbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productoptionsbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_product_productupdatestatusbody"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/fc4c0af24ba5235f15a2a44c0a333c980f635286a54a430c3273f067516ec549.json b/backend/graphify-out/cache/ast/v0.9.4/fc4c0af24ba5235f15a2a44c0a333c980f635286a54a430c3273f067516ec549.json new file mode 100644 index 000000000..8a6e3fd9a --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/fc4c0af24ba5235f15a2a44c0a333c980f635286a54a430c3273f067516ec549.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "app/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/__init__.py", "source_location": "L30", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L56"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_init_py", "callee": "SysApiRequestLog", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L57"}]} \ No newline at end of file diff --git a/docs/superpowers/plans/2026-07-27-pl-plan-batch-print-merge.md b/docs/superpowers/plans/2026-07-27-pl-plan-batch-print-merge.md index 6a5e43886..5b451eb73 100644 --- a/docs/superpowers/plans/2026-07-27-pl-plan-batch-print-merge.md +++ b/docs/superpowers/plans/2026-07-27-pl-plan-batch-print-merge.md @@ -76,11 +76,121 @@ TS Expected: `pl-batch-print: ok` -(实现文件内容见原 Step 2 代码块;可删去 `pl-batch-print.selftest.mjs` 双写方案,只保留 `.ts`。) +(Step 2 写出 `.ts` 后再跑本命令;顺序可先 Step 2 再 Step 1。) - [ ] **Step 2: 实现 `web-admin/src/utils/pl-batch-print.ts`** -(完整代码同上一版 Step 2 中的 TypeScript 模块。) +```ts +// web-admin/src/utils/pl-batch-print.ts +import type { Plan, PlanProduct } from '@/api/pl' +import type { PlPrintSlipCommand } from '@/utils/pl-display' +import { canPrintSlipCommand } from '@/utils/pl-display' + +export type SlipPlanProduct = PlanProduct & { slipPlanNo?: string } + +export function normalizeCustomerName(name?: string | null) { + return String(name || '').trim() +} + +export function canBatchPrintSlip( + plans: Array>, + command: PlPrintSlipCommand +): { ok: boolean; reason?: string } { + if (!plans?.length) return { ok: false, reason: '请先勾选运输计划' } + + if (plans.length === 1) { + if (!canPrintSlipCommand(plans[0].planType, command)) { + return { ok: false, reason: '当前单据类型不支持打印该单据' } + } + return { ok: true } + } + + if (command === 'inbound') { + if (!plans.every((p) => p.planType === 'inbound')) { + return { ok: false, reason: '合打入库单要求:均为入库类计划' } + } + const c = normalizeCustomerName(plans[0].customerName) + const d = plans[0].planDate + if (!c || !d || !plans.every((p) => normalizeCustomerName(p.customerName) === c && p.planDate === d)) { + return { + ok: false, + reason: '合打入库单要求:客户名称一致且计划日期一致,且均为入库类计划' + } + } + return { ok: true } + } + + if (command === 'delivery') { + if (!plans.every((p) => p.planType === 'outbound')) { + return { ok: false, reason: '合打送(提)货单要求:均为出库类计划' } + } + const c = normalizeCustomerName(plans[0].customerName) + const d = plans[0].planDate + if (!c || !d || !plans.every((p) => normalizeCustomerName(p.customerName) === c && p.planDate === d)) { + return { + ok: false, + reason: '合打送(提)货单要求:客户名称一致且计划日期一致,且均为出库类计划' + } + } + return { ok: true } + } + + if (command === 'subpack') { + if (!plans.every((p) => canPrintSlipCommand(p.planType, 'subpack'))) { + return { ok: false, reason: '分装单仅支持出库类计划' } + } + return { ok: true } + } + + return { ok: false, reason: '未知单据类型' } +} + +export function mergeBatchPrintRemarks(plans: Array>) { + return plans + .map((p) => { + const text = String(p.remark || '').trim() + if (!text) return '' + return `${p.planNo}:${text}` + }) + .filter(Boolean) + .join('\n') +} + +/** 备注写入 HTML 模版时换行 */ +export function formatRemarkForSlipHtml(remark?: string | null) { + return String(remark || '') + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/\n/g, '
') +} + +/** 合打视图:首条为抬头基准;产品展开并打 slipPlanNo;清空车辆;备注合并 */ +export function buildBatchPrintPlanView(plans: Plan[]): Plan { + if (!plans.length) throw new Error('plans empty') + const base = { ...plans[0] } + const products: SlipPlanProduct[] = [] + for (const p of plans) { + for (const prod of p.products || []) { + products.push({ ...prod, slipPlanNo: p.planNo }) + } + } + base.products = products + base.remark = mergeBatchPrintRemarks(plans) + base.licensePlate = undefined + base.vehicleId = undefined + base.driverId = undefined + base.driverName = undefined + base.trailerNo = undefined + base.personnelSummary = undefined + return base +} + +export function normalizePlanIds(planIdOrIds: string | string[]): string[] { + const ids = Array.isArray(planIdOrIds) ? planIdOrIds : [planIdOrIds] + return ids.map((id) => String(id || '').trim()).filter(Boolean) +} +``` - [ ] **Step 3: 再跑 Step 1 命令,确认 PASS** diff --git a/web-admin/src/composables/usePlContractToPlan.ts b/web-admin/src/composables/usePlContractToPlan.ts index 0ea7971f7..83d802008 100644 --- a/web-admin/src/composables/usePlContractToPlan.ts +++ b/web-admin/src/composables/usePlContractToPlan.ts @@ -75,9 +75,9 @@ export function mapContractProducts(products?: ContractProductForm[]) { } export function applyContractToPlanForm(contract: ContractVO) { - // 供方/需方以合同甲乙方可章名为准;supplierName/customerName 仅作冗余,供地磅按 planType 取用 + // 供方可章名取 partyA;客户名称严格跟合同「客户名称」,不取供/需方可章名 const supplierName = contract.partyA || contract.supplierName || '' - const customerName = contract.partyB || contract.customerName || '' + const customerName = contract.customerName || '' const destinationName = customerName return {