| 1 |
- {"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "label": "quote_product.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L1"}, {"id": "crm_quote_product_ensure_quote_parent_scope", "label": "_ensure_quote_parent_scope()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L18"}, {"id": "crm_quote_product_decimal_value", "label": "_decimal_value()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L26"}, {"id": "crm_quote_product_get_field", "label": "_get_field()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L34"}, {"id": "crm_quote_product_calculate_subtotal", "label": "calculate_subtotal()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L41"}, {"id": "crm_quote_product_normalize_line_brand", "label": "normalize_line_brand()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L51"}, {"id": "crm_quote_product_product_has_brands", "label": "product_has_brands()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L64"}, {"id": "crm_quote_product_resolve_line_brand_fields", "label": "_resolve_line_brand_fields()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L76"}, {"id": "crm_quote_product_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L97"}, {"id": "crm_quote_product_product_row_to_dict", "label": "product_row_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L128"}, {"id": "crm_quote_product_list_quote_products", "label": "list_quote_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L132"}, {"id": "crm_quote_product_list_products_by_quote_ids", "label": "list_products_by_quote_ids()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L154"}, {"id": "crm_quote_product_get_quote_product", "label": "get_quote_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L184"}, {"id": "crm_quote_product_insert_quote_product", "label": "insert_quote_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L192"}, {"id": "crm_quote_product_update_quote_product", "label": "update_quote_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L271"}, {"id": "crm_quote_product_soft_delete_quote_products", "label": "soft_delete_quote_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L338"}, {"id": "crm_quote_product_batch_insert_quote_products", "label": "batch_insert_quote_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L372"}, {"id": "crm_quote_product_delete_products_by_quote_id", "label": "delete_products_by_quote_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L400"}, {"id": "crm_quote_product_product_identity", "label": "_product_identity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L415"}, {"id": "crm_quote_product_merge_product_patch", "label": "_merge_product_patch()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L429"}, {"id": "crm_quote_product_prepare_child_changes", "label": "_prepare_child_changes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L446"}, {"id": "crm_quote_product_prepare_product_changes", "label": "_prepare_product_changes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L482"}, {"id": "crm_quote_product_prepare_quote_products", "label": "prepare_quote_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L499"}, {"id": "crm_quote_product_sync_quote_products", "label": "sync_quote_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L511"}, {"id": "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": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L1"}, {"id": "crm_quote_product_rationale_46", "label": "Java: calculateSubtotal", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L46"}, {"id": "crm_quote_product_rationale_98", "label": "ORM \u2192 camelCase\uff08\u5355\u70b9\u771f\u76f8\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L98"}, {"id": "crm_quote_product_rationale_139", "label": "Java: queryListByQuoteId", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L139"}, {"id": "crm_quote_product_rationale_160", "label": "\u6309\u62a5\u4ef7\u5355 ID \u6279\u91cf\u52a0\u8f7d\u4ea7\u54c1\u660e\u7ec6\uff08\u4f9b\u5217\u8868\u6458\u8981\u5c55\u793a\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L160"}, {"id": "crm_quote_product_rationale_345", "label": "Java: deleteWithValidByIds", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L345"}, {"id": "crm_quote_product_rationale_401", "label": "Java: deleteByQuoteId \u2014 \u8f6f\u5220\u9664\u8be5\u62a5\u4ef7\u5355\u4e0b\u5168\u90e8\u660e\u7ec6", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L401"}, {"id": "crm_quote_product_rationale_416", "label": "Legacy clients may omit line IDs only when the business identity is unique.", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L416"}, {"id": "crm_quote_product_rationale_447", "label": "Validate the entire collection before touching ORM objects (also used for tiers)", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L447"}, {"id": "crm_quote_product_rationale_483", "label": "For ID-less lines, omitted identity fields retain each candidate's stored value.", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L483"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_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": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_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": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_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": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_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": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_ensure_quote_parent_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_decimal_value", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_get_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L34", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_calculate_subtotal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_normalize_line_brand", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_product_has_brands", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_resolve_line_brand_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L97", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_list_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_list_products_by_quote_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L154", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_get_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L184", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_insert_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L192", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_update_quote_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L271", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_soft_delete_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L338", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_batch_insert_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L372", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_delete_products_by_quote_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L400", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_product_identity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L415", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_merge_product_patch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L429", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_prepare_child_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L446", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_prepare_product_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L482", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_prepare_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L499", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "target": "crm_quote_product_sync_quote_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L511", "weight": 1.0}, {"source": "crm_quote_product_resolve_line_brand_fields", "target": "crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L84", "weight": 1.0}, {"source": "crm_quote_product_resolve_line_brand_fields", "target": "crm_quote_product_normalize_line_brand", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L89", "weight": 1.0}, {"source": "crm_quote_product_resolve_line_brand_fields", "target": "crm_quote_product_product_has_brands", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L93", "weight": 1.0}, {"source": "crm_quote_product_product_row_to_dict", "target": "crm_quote_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L129", "weight": 1.0}, {"source": "crm_quote_product_list_quote_products", "target": "crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L141", "weight": 1.0}, {"source": "crm_quote_product_list_quote_products", "target": "crm_quote_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L149", "weight": 1.0}, {"source": "crm_quote_product_list_products_by_quote_ids", "target": "crm_quote_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L180", "weight": 1.0}, {"source": "crm_quote_product_insert_quote_product", "target": "crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L203", "weight": 1.0}, {"source": "crm_quote_product_insert_quote_product", "target": "crm_quote_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L204", "weight": 1.0}, {"source": "crm_quote_product_insert_quote_product", "target": "crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L204", "weight": 1.0}, {"source": "crm_quote_product_insert_quote_product", "target": "crm_quote_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L207", "weight": 1.0}, {"source": "crm_quote_product_insert_quote_product", "target": "crm_quote_product_resolve_line_brand_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L256", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_get_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L280", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L284", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L287", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L309", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L319", "weight": 1.0}, {"source": "crm_quote_product_update_quote_product", "target": "crm_quote_product_resolve_line_brand_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L322", "weight": 1.0}, {"source": "crm_quote_product_soft_delete_quote_products", "target": "crm_quote_product_get_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L348", "weight": 1.0}, {"source": "crm_quote_product_soft_delete_quote_products", "target": "crm_quote_product_ensure_quote_parent_scope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L352", "weight": 1.0}, {"source": "crm_quote_product_batch_insert_quote_products", "target": "crm_quote_product_insert_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L390", "weight": 1.0}, {"source": "crm_quote_product_product_identity", "target": "crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L420", "weight": 1.0}, {"source": "crm_quote_product_merge_product_patch", "target": "crm_quote_product_calculate_subtotal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L439", "weight": 1.0}, {"source": "crm_quote_product_merge_product_patch", "target": "crm_quote_product_decimal_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L440", "weight": 1.0}, {"source": "crm_quote_product_prepare_product_changes", "target": "crm_quote_product_get_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L486", "weight": 1.0}, {"source": "crm_quote_product_prepare_product_changes", "target": "crm_quote_product_prepare_child_changes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L495", "weight": 1.0}, {"source": "crm_quote_product_prepare_quote_products", "target": "crm_quote_product_prepare_product_changes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L508", "weight": 1.0}, {"source": "crm_quote_product_sync_quote_products", "target": "crm_quote_product_prepare_quote_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L513", "weight": 1.0}, {"source": "crm_quote_product_sync_quote_products", "target": "crm_quote_product_insert_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L522", "weight": 1.0}, {"source": "crm_quote_product_sync_quote_products", "target": "crm_quote_product_update_quote_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L525", "weight": 1.0}, {"source": "crm_quote_product_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_quote_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L1", "weight": 1.0}, {"source": "crm_quote_product_rationale_46", "target": "crm_quote_product_calculate_subtotal", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L46", "weight": 1.0}, {"source": "crm_quote_product_rationale_98", "target": "crm_quote_product_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L98", "weight": 1.0}, {"source": "crm_quote_product_rationale_139", "target": "crm_quote_product_list_quote_products", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L139", "weight": 1.0}, {"source": "crm_quote_product_rationale_160", "target": "crm_quote_product_list_products_by_quote_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L160", "weight": 1.0}, {"source": "crm_quote_product_rationale_345", "target": "crm_quote_product_soft_delete_quote_products", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L345", "weight": 1.0}, {"source": "crm_quote_product_rationale_401", "target": "crm_quote_product_delete_products_by_quote_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L401", "weight": 1.0}, {"source": "crm_quote_product_rationale_416", "target": "crm_quote_product_product_identity", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L416", "weight": 1.0}, {"source": "crm_quote_product_rationale_447", "target": "crm_quote_product_prepare_child_changes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L447", "weight": 1.0}, {"source": "crm_quote_product_rationale_483", "target": "crm_quote_product_prepare_product_changes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L483", "weight": 1.0}], "raw_calls": [{"caller_nid": "crm_quote_product_ensure_quote_parent_scope", "callee": "_get_quote_in_scope", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L22"}, {"caller_nid": "crm_quote_product_decimal_value", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L29"}, {"caller_nid": "crm_quote_product_decimal_value", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L31"}, {"caller_nid": "crm_quote_product_decimal_value", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L31"}, {"caller_nid": "crm_quote_product_calculate_subtotal", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L47"}, {"caller_nid": "crm_quote_product_calculate_subtotal", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L48"}, {"caller_nid": "crm_quote_product_calculate_subtotal", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L48"}, {"caller_nid": "crm_quote_product_normalize_line_brand", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L57"}, {"caller_nid": "crm_quote_product_normalize_line_brand", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L61"}, {"caller_nid": "crm_quote_product_product_has_brands", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L67"}, {"caller_nid": "crm_quote_product_product_has_brands", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L67"}, {"caller_nid": "crm_quote_product_product_has_brands", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L72"}, {"caller_nid": "crm_quote_product_product_has_brands", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L73"}, {"caller_nid": "crm_quote_product_resolve_line_brand_fields", "callee": "any", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L87"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L112"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L113"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L114"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L115"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L116"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "float", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L117"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L123"}, {"caller_nid": "crm_quote_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L124"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L142"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L142"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L147"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L148"}, {"caller_nid": "crm_quote_product_list_quote_products", "callee": "enrich_products_with_hazard_flags", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L150"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L161"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L161"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L164"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L164"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L165"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L169"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L170"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L170"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L171"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L172"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L173"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L177"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L180"}, {"caller_nid": "crm_quote_product_list_products_by_quote_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L180"}, {"caller_nid": "crm_quote_product_get_quote_product", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L186"}, {"caller_nid": "crm_quote_product_get_quote_product", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L186"}, {"caller_nid": "crm_quote_product_get_quote_product", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L186"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L204"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L205"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L206"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L209"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "CrmQuoteProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L210"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L211"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L224"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L225"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "get_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L238"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L250"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L254"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L266"}, {"caller_nid": "crm_quote_product_insert_quote_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L267"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L282"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L287"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "next", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L301"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "setattr", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L306"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "any", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L321"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L333"}, {"caller_nid": "crm_quote_product_update_quote_product", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L334"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L355"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L355"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L355"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L363"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L364"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L366"}, {"caller_nid": "crm_quote_product_soft_delete_quote_products", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L368"}, {"caller_nid": "crm_quote_product_batch_insert_quote_products", "callee": "dict", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L386"}, {"caller_nid": "crm_quote_product_batch_insert_quote_products", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L387"}, {"caller_nid": "crm_quote_product_batch_insert_quote_products", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L389"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L403"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L403"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L403"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L407"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L411"}, {"caller_nid": "crm_quote_product_delete_products_by_quote_id", "callee": "len", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L412"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L420"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L421"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L422"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L423"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L424"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "tuple", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L425"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "sorted", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L425"}, {"caller_nid": "crm_quote_product_product_identity", "callee": "resolve_package_specs_from_payload", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L425"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "dict", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L430"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L431"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L432"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L432"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "title", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L432"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L432"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "any", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L434"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "any", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L434"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L437"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "any", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L438"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L440"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L440"}, {"caller_nid": "crm_quote_product_merge_product_patch", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L441"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L448"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "set", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L449"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L451"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L451"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L451"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L454"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L455"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "set", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L456"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "set", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L457"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "dict", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L460"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L461"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L461"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L461"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L462"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "identity", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L464"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L466"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "matches_patch", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L467"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "serialize", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L467"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "identity", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L468"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "serialize", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L468"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "len", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L469"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L471"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L472"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L473"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L477"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L477"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L478"}, {"caller_nid": "crm_quote_product_prepare_child_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L479"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L485"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L485"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L485"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L485"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L485"}, {"caller_nid": "crm_quote_product_prepare_product_changes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L488"}, {"caller_nid": "crm_quote_product_prepare_quote_products", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L503"}, {"caller_nid": "crm_quote_product_prepare_quote_products", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L503"}, {"caller_nid": "crm_quote_product_prepare_quote_products", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L503"}, {"caller_nid": "crm_quote_product_sync_quote_products", "callee": "enumerate", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L519"}, {"caller_nid": "crm_quote_product_sync_quote_products", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L521"}, {"caller_nid": "crm_quote_product_sync_quote_products", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L529"}, {"caller_nid": "crm_quote_product_sync_quote_products", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py", "source_location": "L530"}]}
|