This commit is contained in:
zlwu committed 2026-05-24 09:34:01 +08:00
1 parent 07ed8c7a60
commit 2f350e7d73
15 files changed
+1693 -1654

No files matched your search

+1 -1
View File
@@ -1 +1 @@
4602
45363
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "label": "sample_sms_notification.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L1"}, {"id": "crud_sample_sms_notification_unicode_ci", "label": "_unicode_ci()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L25"}, {"id": "crud_sample_sms_notification_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L29"}, {"id": "crud_sample_sms_notification_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L35"}, {"id": "crud_sample_sms_notification_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L39"}, {"id": "crud_sample_sms_notification_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L43"}, {"id": "crud_sample_sms_notification_base_query", "label": "_base_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L79"}, {"id": "crud_sample_sms_notification_ensure_notification", "label": "_ensure_notification()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L127"}, {"id": "crud_sample_sms_notification_resolve_notification", "label": "resolve_notification()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L167"}, {"id": "crud_sample_sms_notification_fetch_sample_type_name", "label": "_fetch_sample_type_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L217"}, {"id": "crud_sample_sms_notification_list_notifications", "label": "list_notifications()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L231"}, {"id": "crud_sample_sms_notification_toggle_notification_status", "label": "toggle_notification_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L339"}, {"id": "crud_sample_sms_notification_generate_sms_content", "label": "generate_sms_content()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L368"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py", "target": "app_moLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "label": "storage_entry_sms_notification.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L1"}, {"id": "crud_storage_entry_sms_notification_unicode_ci", "label": "_unicode_ci()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L25"}, {"id": "crud_storage_entry_sms_notification_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L29"}, {"id": "crud_storage_entry_sms_notification_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L35"}, {"id": "crud_storage_entry_sms_notification_storage_status_label", "label": "_storage_status_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L39"}, {"id": "crud_storage_entry_sms_notification_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L49"}, {"id": "crud_storage_entry_sms_notification_base_query", "label": "_base_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L84"}, {"id": "crud_storage_entry_sms_notification_ensure_notification", "label": "_ensure_notification()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L132"}, {"id": "crud_storage_entry_sms_notification_resolve_notification", "label": "resolve_notification()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L168"}, {"id": "crud_storage_entry_sms_notification_fetch_sample_type_name", "label": "_fetch_sample_type_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L206"}, {"id": "crud_storage_entry_sms_notification_list_notifications", "label": "list_notifications()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L220"}, {"id": "crud_storage_entry_sms_notification_toggle_notification_status", "label": "toggle_notification_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L342"}, {"id": "crud_storage_entry_sms_notification_generate_sms_content", "label": "generate_sms_content()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L378"}, {"id": "crud_storage_entry_sms_notification_rationale_176", "label": "Find notification by id; fallback to storage_review_id and ensure row exists.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L176"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "Line truncated
+361 -352
View File
@@ -92,20 +92,6 @@
"api_basic_info_update_hospital",
"api_basic_info_update_protocol_no",
"api_basic_info_update_sample_code",
"api_collection_protocol_create_collection_protocol",
"api_collection_protocol_delete_collection_protocol",
"api_collection_protocol_get_collection_protocol_detail",
"api_collection_protocol_get_current_user_id",
"api_collection_protocol_get_tenant_no",
"api_collection_protocol_list_collection_protocol_audits",
"api_collection_protocol_list_collection_protocols",
"api_collection_protocol_list_fullmoon_todos",
"api_collection_protocol_list_payment_details",
"api_collection_protocol_list_receipt_confirm",
"api_collection_protocol_list_receipt_confirmed",
"api_collection_protocol_list_refund_confirm",
"api_collection_protocol_list_refund_confirmed",
"api_collection_protocol_list_storage_certs",
"api_collection_protocol_parse_datetime_fields",
"api_collection_protocol_post_receipt_confirm",
"api_collection_protocol_post_refund_confirm",
@@ -113,11 +99,7 @@
"api_collection_protocol_post_submit_receipt_finance_batch",
"api_collection_protocol_post_submit_refund_finance",
"api_collection_protocol_post_submit_refund_finance_batch",
"api_collection_protocol_py",
"api_collection_protocol_resolve_protocol_attachments",
"api_collection_protocol_submit_collection_protocol_audit",
"api_collection_protocol_update_collection_protocol",
"api_collection_protocol_update_fullmoon_todo_insurance",
"api_insurance_company_delete_insurance_company",
"api_insurance_company_delete_insurance_company_invoice",
"api_insurance_company_delete_insurance_project_price",
@@ -500,6 +482,27 @@
"api_admin_tenantupdatebody",
"api_admin_usercreatebody",
"api_admin_userupdatebody",
"api_insurance_company_create_insurance_company",
"api_insurance_company_create_insurance_company_invoice",
"api_insurance_company_create_insurance_project_price",
"api_insurance_company_fmt_dt",
"api_insurance_company_generate_uuid",
"api_insurance_company_insurancecompanycreatebody",
"api_insurance_company_insurancecompanyinvoicecreatebody",
"api_insurance_company_insurancecompanyinvoiceupdatebody",
"api_insurance_company_insurancecompanyupdatebody",
"api_insurance_company_insuranceprojectpricecreatebody",
"api_insurance_company_insuranceprojectpriceupdatebody",
"api_insurance_company_list_insurance_companies",
"api_insurance_company_py",
"api_insurance_company_rationale_1",
"api_insurance_company_row_to_dict_company",
"api_insurance_company_row_to_dict_invoice",
"api_insurance_company_row_to_dict_project_price",
"api_insurance_company_soft_delete_insurance_company",
"api_insurance_company_soft_delete_insurance_company_invoice",
"api_insurance_company_soft_delete_insurance_project_price",
"api_insurance_company_total_pages",
"api_material_batchstockinbody",
"api_material_batchstockinitem",
"api_material_batchstockoutbody",
@@ -587,6 +590,9 @@
"crud_user_rationale_181",
"crud_user_usercrudcompat",
"models_models_bizattachment",
"models_models_bizinsurancecompany",
"models_models_bizinsurancecompanyinvoice",
"models_models_bizinsuranceprojectprice",
"models_models_sysdept",
"models_models_sysrole",
"models_models_sysuser",
@@ -752,7 +758,6 @@
"schemas_product_banner_productbannerupdate",
"schemas_product_banner_py",
"schemas_product_banner_rationale_1",
"schemas_product_config",
"schemas_product_detail_media_productdetailmediabase",
"schemas_product_detail_media_productdetailmediacreate",
"schemas_product_detail_media_productdetailmediacreatebatch",
@@ -782,18 +787,6 @@
"schemas_product_parameter_value_productparametervaluewithparameterresponse",
"schemas_product_parameter_value_py",
"schemas_product_parameter_value_rationale_1",
"schemas_product_productbase",
"schemas_product_productcategorybase",
"schemas_product_productcategorycreate",
"schemas_product_productcategoryresponse",
"schemas_product_productcreate",
"schemas_product_productresponse",
"schemas_product_productunitbase",
"schemas_product_productunitcreate",
"schemas_product_productunitresponse",
"schemas_product_productupdate",
"schemas_product_py",
"schemas_product_rationale_1",
"schemas_product_review_config",
"schemas_product_review_media_config",
"schemas_product_review_media_productreviewmediabase",
@@ -1131,6 +1124,18 @@
"crud_consumable_is_enabled_status",
"crud_consumable_list_consumables",
"crud_consumable_norm_status",
"crud_consumable_pack_create_consumable_pack",
"crud_consumable_pack_get_consumable_pack",
"crud_consumable_pack_get_pack_detail",
"crud_consumable_pack_item_row_to_dict",
"crud_consumable_pack_list_all_packs",
"crud_consumable_pack_list_consumable_packs",
"crud_consumable_pack_pack_code_exists",
"crud_consumable_pack_py",
"crud_consumable_pack_row_to_dict",
"crud_consumable_pack_soft_delete_consumable_pack",
"crud_consumable_pack_total_pages",
"crud_consumable_pack_update_consumable_pack",
"crud_consumable_py",
"crud_consumable_row_to_dict",
"crud_consumable_soft_delete_consumable",
@@ -1160,16 +1165,6 @@
"crud_material_stock_in",
"crud_material_stock_out",
"crud_material_update_material",
"crud_output_type_create_output_type",
"crud_output_type_get_output_type",
"crud_output_type_list_output_types",
"crud_output_type_py",
"crud_output_type_rationale_1",
"crud_output_type_row_to_dict",
"crud_output_type_soft_delete_output_type",
"crud_output_type_total_pages",
"crud_output_type_type_code_exists",
"crud_output_type_update_output_type",
"crud_pilot_service_create_channel",
"crud_pilot_service_create_channel_agreement",
"crud_pilot_service_create_channel_invoice",
@@ -1279,15 +1274,6 @@
"crud_reagent_stock_out",
"crud_reagent_total_pages",
"crud_reagent_update_reagent",
"crud_tenant_create_tenant",
"crud_tenant_get_tenant",
"crud_tenant_list_tenants",
"crud_tenant_py",
"crud_tenant_row_to_dict",
"crud_tenant_soft_delete_tenant",
"crud_tenant_tenant_no_exists",
"crud_tenant_total_pages",
"crud_tenant_update_tenant",
"crud_user_create_user",
"crud_user_get_user",
"crud_user_get_user_with_relations",
@@ -1307,188 +1293,6 @@
"crud_user_user_no_exists"
],
"4": [
"api_collection_protocol_persist_protocol_sub_resources",
"api_ethnic_list_ethnics_for_select",
"api_ethnic_py",
"core_data_scope_apply_data_scope",
"core_data_scope_get_child_dept_ids",
"core_data_scope_get_user_dept_id",
"core_data_scope_py",
"core_data_scope_resolve_user_role_scopes",
"crud_api_request_log_delete",
"crud_api_request_log_get",
"crud_api_request_log_get_multi_with_filters",
"crud_api_request_log_py",
"crud_base_crudbase_count",
"crud_collection_protocol_add_months_yyyymmdd",
"crud_collection_protocol_align_fq_payment_details_payload",
"crud_collection_protocol_apply_submit_receipt_finance",
"crud_collection_protocol_apply_submit_refund_finance",
"crud_collection_protocol_attachments_to_urls",
"crud_collection_protocol_audit_to_dict",
"crud_collection_protocol_batch_submit_receipt_finance",
"crud_collection_protocol_batch_submit_refund_finance",
"crud_collection_protocol_calc_installment_due_amounts",
"crud_collection_protocol_classify_installment_warning",
"crud_collection_protocol_collection_info_to_dict",
"crud_collection_protocol_confirm_receipt",
"crud_collection_protocol_confirm_refund",
"crud_collection_protocol_create_audit",
"crud_collection_protocol_dec",
"crud_collection_protocol_detail_query_with_protocol",
"crud_collection_protocol_detail_to_dict",
"crud_collection_protocol_fmt_dt",
"crud_collection_protocol_format_newborn_info",
"crud_collection_protocol_format_storage_cert_sample_info",
"crud_collection_protocol_fullmoon_todo_detail_dict",
"crud_collection_protocol_fullmoon_todo_empty_dict",
"crud_collection_protocol_fullmoon_todo_to_dict",
"crud_collection_protocol_get_collection_info",
"crud_collection_protocol_get_collection_protocol",
"crud_collection_protocol_get_fullmoon_todo",
"crud_collection_protocol_get_party_customer",
"crud_collection_protocol_get_payment_by_protocol_id",
"crud_collection_protocol_get_payment_detail_or_raise",
"crud_collection_protocol_get_protocol_detail_bundle",
"crud_collection_protocol_get_sample_codes_used_in_protocol_samples",
"crud_collection_protocol_get_storage_cert",
"crud_collection_protocol_list_audits",
"crud_collection_protocol_list_collection_protocols",
"crud_collection_protocol_list_installment_warning",
"crud_collection_protocol_list_payment_details",
"crud_collection_protocol_list_payment_details_page",
"crud_collection_protocol_list_receipt_confirm_details",
"crud_collection_protocol_list_receipt_confirmed_details",
"crud_collection_protocol_list_refund_confirm_details",
"crud_collection_protocol_list_refund_confirmed_details",
"crud_collection_protocol_list_sample_transports",
"crud_collection_protocol_list_samples",
"crud_collection_protocol_list_storage_certs",
"crud_collection_protocol_load_sample_type_name_map",
"crud_collection_protocol_lookup_attachment_by_url",
"crud_collection_protocol_migrate_sample_child_refs_on_replace",
"crud_collection_protocol_normalize_attachment_url_key",
"crud_collection_protocol_normalize_fields",
"crud_collection_protocol_normalize_yyyymmdd_date",
"crud_collection_protocol_optional_decimal",
"crud_collection_protocol_party_customer_map_by_protocol_ids",
"crud_collection_protocol_party_customer_to_dict",
"crud_collection_protocol_payment_to_dict",
"crud_collection_protocol_pick_storage_in_date",
"crud_collection_protocol_pop_attachment_urls",
"crud_collection_protocol_protocol_to_dict",
"crud_collection_protocol_py",
"crud_collection_protocol_rows_to_payment_detail_dicts",
"crud_collection_protocol_sample_to_dict",
"crud_collection_protocol_save_payment_details",
"crud_collection_protocol_save_sample_transports",
"crud_collection_protocol_save_samples",
"crud_collection_protocol_soft_delete_collection_protocol",
"crud_collection_protocol_soft_delete_transports_for_protocol",
"crud_collection_protocol_storage_cert_to_dict",
"crud_collection_protocol_submit_receipt_finance",
"crud_collection_protocol_submit_refund_finance",
"crud_collection_protocol_today_yyyymmdd",
"crud_collection_protocol_total_pages",
"crud_collection_protocol_transport_to_dict",
"crud_collection_protocol_upsert_collection_info",
"crud_collection_protocol_upsert_fullmoon_todo",
"crud_collection_protocol_upsert_party_customer",
"crud_collection_protocol_upsert_payment",
"crud_collection_protocol_upsert_storage_cert",
"crud_collection_protocol_user_nick_name_map",
"crud_collection_protocol_validate_sample_codes_not_used",
"crud_consumable_pack_create_consumable_pack",
"crud_consumable_pack_get_consumable_pack",
"crud_consumable_pack_get_pack_detail",
"crud_consumable_pack_item_row_to_dict",
"crud_consumable_pack_list_all_packs",
"crud_consumable_pack_list_consumable_packs",
"crud_consumable_pack_pack_code_exists",
"crud_consumable_pack_py",
"crud_consumable_pack_row_to_dict",
"crud_consumable_pack_soft_delete_consumable_pack",
"crud_consumable_pack_total_pages",
"crud_consumable_pack_update_consumable_pack",
"crud_ethnic_list_ethnics",
"crud_ethnic_py",
"crud_ethnic_rationale_1",
"crud_ethnic_row_to_dict",
"crud_leave_create_leave",
"crud_leave_get_leave",
"crud_leave_list_leaves",
"crud_leave_py",
"crud_leave_row_to_dict",
"crud_leave_soft_delete_leave",
"crud_leave_total_pages",
"crud_leave_update_leave",
"crud_material_stock_log_dec",
"crud_material_stock_log_fmt_dt",
"crud_material_stock_log_list_stock_logs",
"crud_material_stock_log_py",
"crud_material_stock_log_row_to_dict",
"crud_material_stock_log_user_nick_name_map",
"crud_qc_lab_test_item_create_lab_item",
"crud_qc_lab_test_item_get_lab_item",
"crud_qc_lab_test_item_item_code_exists",
"crud_qc_lab_test_item_list_active_lab_items",
"crud_qc_lab_test_item_list_lab_items",
"crud_qc_lab_test_item_py",
"crud_qc_lab_test_item_row_to_dict",
"crud_qc_lab_test_item_soft_delete_lab_item",
"crud_qc_lab_test_item_update_lab_item",
"crud_qc_material_build_manual_out_remark",
"crud_qc_material_code_exists",
"crud_qc_material_create_material",
"crud_qc_material_dec",
"crud_qc_material_fmt_dt",
"crud_qc_material_get_material",
"crud_qc_material_list_materials",
"crud_qc_material_norm_status",
"crud_qc_material_options_list",
"crud_qc_material_py",
"crud_qc_material_rationale_26",
"crud_qc_material_row_to_dict",
"crud_qc_material_soft_delete_material",
"crud_qc_material_total_pages",
"crud_qc_material_update_material",
"crud_qc_material_usage_deduct_for_task",
"crud_qc_material_usage_display_remark",
"crud_qc_material_usage_list_usages",
"crud_qc_material_usage_list_usages_by_task",
"crud_qc_material_usage_parse_receiver_purpose_from_remark",
"crud_qc_material_usage_py",
"crud_qc_material_usage_resolve_receiver_purpose",
"crud_qc_material_usage_revert_task_material_usages",
"crud_qc_material_usage_row_to_dict",
"crud_qc_material_usage_user_nick_name_map",
"crud_reagent_stock_log_display_remark",
"crud_reagent_stock_log_list_stock_logs",
"crud_reagent_stock_log_parse_receiver_purpose_from_remark",
"crud_reagent_stock_log_py",
"crud_reagent_stock_log_resolve_receiver_purpose",
"crud_reagent_stock_log_revert_step_stock_changes",
"crud_reagent_stock_log_row_to_dict",
"crud_reagent_stock_log_user_nick_name_map",
"crud_storage_entry_sms_notification_base_query",
"crud_storage_entry_sms_notification_ensure_notification",
"crud_storage_entry_sms_notification_fetch_sample_type_name",
"crud_storage_entry_sms_notification_fmt_dt",
"crud_storage_entry_sms_notification_generate_sms_content",
"crud_storage_entry_sms_notification_list_notifications",
"crud_storage_entry_sms_notification_py",
"crud_storage_entry_sms_notification_resolve_notification",
"crud_storage_entry_sms_notification_row_to_dict",
"crud_storage_entry_sms_notification_storage_status_label",
"crud_storage_entry_sms_notification_toggle_notification_status",
"crud_storage_entry_sms_notification_total_pages",
"crud_storage_entry_sms_notification_unicode_ci",
"crud_workflow_list_completed_tasks",
"crud_workflow_list_my_instances",
"crud_workflow_list_pending_tasks",
"crud_workflow_task_row_to_dict"
],
"5": [
"api_basic_info_cellsampletypecreatebody",
"api_basic_info_cellsampletypeupdatebody",
"api_basic_info_collectionregioncreatebody",
@@ -1621,7 +1425,7 @@
"crud_sample_reception_rationale_74",
"crud_sample_reception_rationale_882",
"crud_sample_reception_rationale_986",
"crud_storage_entry_sms_notification_rationale_189",
"crud_storage_entry_sms_notification_rationale_176",
"crud_storage_release_review_rationale_770",
"models_models_bizcellsampletype",
"models_models_bizcollectionhospital",
@@ -1658,7 +1462,7 @@
"models_research_donation_rationale_43",
"models_research_donation_rationale_64"
],
"6": [
"5": [
"api_admin_list_roles_for_select",
"api_public_avatar_url_field",
"api_public_build_user_info_payload",
@@ -1827,6 +1631,159 @@
"tasks_init_py",
"tasks_init_shutdown_scheduler"
],
"6": [
"api_collection_protocol_create_collection_protocol",
"api_collection_protocol_delete_collection_protocol",
"api_collection_protocol_ensure_customer_for_mother",
"api_collection_protocol_get_collection_protocol_detail",
"api_collection_protocol_get_current_user_id",
"api_collection_protocol_get_tenant_no",
"api_collection_protocol_list_collection_protocol_audits",
"api_collection_protocol_list_collection_protocols",
"api_collection_protocol_list_fullmoon_todos",
"api_collection_protocol_list_payment_details",
"api_collection_protocol_list_receipt_confirm",
"api_collection_protocol_list_receipt_confirmed",
"api_collection_protocol_list_refund_confirm",
"api_collection_protocol_list_refund_confirmed",
"api_collection_protocol_list_storage_certs",
"api_collection_protocol_persist_protocol_sub_resources",
"api_collection_protocol_py",
"api_collection_protocol_resolve_protocol_attachments",
"api_collection_protocol_update_collection_protocol",
"api_collection_protocol_update_fullmoon_todo_insurance",
"api_ethnic_list_ethnics_for_select",
"api_ethnic_py",
"core_data_scope_apply_data_scope",
"core_data_scope_get_child_dept_ids",
"core_data_scope_get_user_dept_id",
"core_data_scope_py",
"core_data_scope_resolve_user_role_scopes",
"crud_api_request_log_delete",
"crud_api_request_log_get",
"crud_api_request_log_get_multi_with_filters",
"crud_api_request_log_py",
"crud_base_crudbase_count",
"crud_collection_protocol_add_months_yyyymmdd",
"crud_collection_protocol_align_fq_payment_details_payload",
"crud_collection_protocol_apply_submit_receipt_finance",
"crud_collection_protocol_apply_submit_refund_finance",
"crud_collection_protocol_attachments_to_urls",
"crud_collection_protocol_audit_to_dict",
"crud_collection_protocol_batch_submit_receipt_finance",
"crud_collection_protocol_batch_submit_refund_finance",
"crud_collection_protocol_calc_installment_due_amounts",
"crud_collection_protocol_classify_installment_warning",
"crud_collection_protocol_collection_info_to_dict",
"crud_collection_protocol_confirm_receipt",
"crud_collection_protocol_confirm_refund",
"crud_collection_protocol_create_audit",
"crud_collection_protocol_dec",
"crud_collection_protocol_detail_query_with_protocol",
"crud_collection_protocol_detail_to_dict",
"crud_collection_protocol_fmt_dt",
"crud_collection_protocol_format_newborn_info",
"crud_collection_protocol_format_storage_cert_sample_info",
"crud_collection_protocol_fullmoon_todo_detail_dict",
"crud_collection_protocol_fullmoon_todo_empty_dict",
"crud_collection_protocol_fullmoon_todo_to_dict",
"crud_collection_protocol_get_collection_info",
"crud_collection_protocol_get_collection_protocol",
"crud_collection_protocol_get_fullmoon_todo",
"crud_collection_protocol_get_party_customer",
"crud_collection_protocol_get_payment_by_protocol_id",
"crud_collection_protocol_get_payment_detail_or_raise",
"crud_collection_protocol_get_protocol_detail_bundle",
"crud_collection_protocol_get_sample_codes_used_in_protocol_samples",
"crud_collection_protocol_get_storage_cert",
"crud_collection_protocol_list_audits",
"crud_collection_protocol_list_collection_protocols",
"crud_collection_protocol_list_installment_warning",
"crud_collection_protocol_list_payment_details",
"crud_collection_protocol_list_payment_details_page",
"crud_collection_protocol_list_receipt_confirm_details",
"crud_collection_protocol_list_receipt_confirmed_details",
"crud_collection_protocol_list_refund_confirm_details",
"crud_collection_protocol_list_refund_confirmed_details",
"crud_collection_protocol_list_sample_transports",
"crud_collection_protocol_list_samples",
"crud_collection_protocol_list_storage_certs",
"crud_collection_protocol_load_sample_type_name_map",
"crud_collection_protocol_lookup_attachment_by_url",
"crud_collection_protocol_migrate_sample_child_refs_on_replace",
"crud_collection_protocol_normalize_attachment_url_key",
"crud_collection_protocol_normalize_fields",
"crud_collection_protocol_normalize_yyyymmdd_date",
"crud_collection_protocol_optional_decimal",
"crud_collection_protocol_party_customer_map_by_protocol_ids",
"crud_collection_protocol_party_customer_to_dict",
"crud_collection_protocol_payment_to_dict",
"crud_collection_protocol_pick_storage_in_date",
"crud_collection_protocol_pop_attachment_urls",
"crud_collection_protocol_protocol_to_dict",
"crud_collection_protocol_py",
"crud_collection_protocol_rows_to_payment_detail_dicts",
"crud_collection_protocol_sample_to_dict",
"crud_collection_protocol_save_payment_details",
"crud_collection_protocol_save_sample_transports",
"crud_collection_protocol_save_samples",
"crud_collection_protocol_soft_delete_collection_protocol",
"crud_collection_protocol_soft_delete_transports_for_protocol",
"crud_collection_protocol_storage_cert_to_dict",
"crud_collection_protocol_submit_receipt_finance",
"crud_collection_protocol_submit_refund_finance",
"crud_collection_protocol_today_yyyymmdd",
"crud_collection_protocol_total_pages",
"crud_collection_protocol_transport_to_dict",
"crud_collection_protocol_upsert_collection_info",
"crud_collection_protocol_upsert_fullmoon_todo",
"crud_collection_protocol_upsert_party_customer",
"crud_collection_protocol_upsert_payment",
"crud_collection_protocol_upsert_storage_cert",
"crud_collection_protocol_user_nick_name_map",
"crud_collection_protocol_validate_sample_codes_not_used",
"crud_customer_create_customer",
"crud_customer_get_customer",
"crud_customer_id_card_taken",
"crud_customer_list_customers",
"crud_customer_py",
"crud_customer_rationale_1",
"crud_customer_row_to_dict",
"crud_customer_soft_delete_customer",
"crud_customer_total_pages",
"crud_customer_update_customer",
"crud_ethnic_list_ethnics",
"crud_ethnic_py",
"crud_ethnic_rationale_1",
"crud_ethnic_row_to_dict",
"crud_leave_create_leave",
"crud_leave_get_leave",
"crud_leave_list_leaves",
"crud_leave_py",
"crud_leave_row_to_dict",
"crud_leave_soft_delete_leave",
"crud_leave_total_pages",
"crud_leave_update_leave",
"crud_material_stock_log_dec",
"crud_material_stock_log_fmt_dt",
"crud_material_stock_log_list_stock_logs",
"crud_material_stock_log_py",
"crud_material_stock_log_row_to_dict",
"crud_material_stock_log_user_nick_name_map",
"crud_qc_lab_test_item_create_lab_item",
"crud_qc_lab_test_item_get_lab_item",
"crud_qc_lab_test_item_item_code_exists",
"crud_qc_lab_test_item_list_active_lab_items",
"crud_qc_lab_test_item_list_lab_items",
"crud_qc_lab_test_item_py",
"crud_qc_lab_test_item_row_to_dict",
"crud_qc_lab_test_item_soft_delete_lab_item",
"crud_qc_lab_test_item_update_lab_item",
"crud_workflow_list_completed_tasks",
"crud_workflow_list_my_instances",
"crud_workflow_list_pending_tasks",
"crud_workflow_task_row_to_dict"
],
"7": [
"crud_base_crudbase_update",
"crud_collection_protocol_format_attachment_file_size",
@@ -1954,6 +1911,27 @@
],
"8": [
"api_workflow_get_designer_data",
"core_exceptions_businessexception",
"core_exceptions_businessexception_init",
"core_exceptions_invalidstatustransitionexception",
"core_exceptions_invalidstatustransitionexception_init",
"core_exceptions_log_api_request",
"core_exceptions_log_delivery_operation",
"core_exceptions_log_operation",
"core_exceptions_log_order_operation",
"core_exceptions_log_settlement_operation",
"core_exceptions_log_user_operation",
"core_exceptions_orderlockedexception",
"core_exceptions_orderlockedexception_init",
"core_exceptions_permissionexception",
"core_exceptions_permissionexception_init",
"core_exceptions_py",
"core_exceptions_resourceconflictexception",
"core_exceptions_resourceconflictexception_init",
"core_exceptions_resourcenotfoundexception",
"core_exceptions_resourcenotfoundexception_init",
"core_exceptions_validationexception",
"core_exceptions_validationexception_init",
"core_storage_basestorage",
"core_storage_basestorage_delete_file",
"core_storage_basestorage_get_url",
@@ -2308,55 +2286,6 @@
"crud_storage_occupancy_row_to_dict"
],
"14": [
"api_insurance_company_create_insurance_company",
"api_insurance_company_create_insurance_company_invoice",
"api_insurance_company_create_insurance_project_price",
"api_insurance_company_fmt_dt",
"api_insurance_company_generate_uuid",
"api_insurance_company_insurancecompanycreatebody",
"api_insurance_company_insurancecompanyinvoicecreatebody",
"api_insurance_company_insurancecompanyinvoiceupdatebody",
"api_insurance_company_insurancecompanyupdatebody",
"api_insurance_company_insuranceprojectpricecreatebody",
"api_insurance_company_insuranceprojectpriceupdatebody",
"api_insurance_company_list_insurance_companies",
"api_insurance_company_py",
"api_insurance_company_rationale_1",
"api_insurance_company_row_to_dict_company",
"api_insurance_company_row_to_dict_invoice",
"api_insurance_company_row_to_dict_project_price",
"api_insurance_company_soft_delete_insurance_company",
"api_insurance_company_soft_delete_insurance_company_invoice",
"api_insurance_company_soft_delete_insurance_project_price",
"api_insurance_company_total_pages",
"models_models_bizinsurancecompany",
"models_models_bizinsurancecompanyinvoice",
"models_models_bizinsuranceprojectprice"
],
"15": [
"core_exceptions_businessexception",
"core_exceptions_businessexception_init",
"core_exceptions_invalidstatustransitionexception",
"core_exceptions_invalidstatustransitionexception_init",
"core_exceptions_log_api_request",
"core_exceptions_log_delivery_operation",
"core_exceptions_log_operation",
"core_exceptions_log_order_operation",
"core_exceptions_log_settlement_operation",
"core_exceptions_log_user_operation",
"core_exceptions_orderlockedexception",
"core_exceptions_orderlockedexception_init",
"core_exceptions_permissionexception",
"core_exceptions_permissionexception_init",
"core_exceptions_py",
"core_exceptions_resourceconflictexception",
"core_exceptions_resourceconflictexception_init",
"core_exceptions_resourcenotfoundexception",
"core_exceptions_resourcenotfoundexception_init",
"core_exceptions_validationexception",
"core_exceptions_validationexception_init"
],
"16": [
"api_sample_sms_notification_generate_sms",
"api_sample_sms_notification_get_current_user_id",
"api_sample_sms_notification_get_tenant_no",
@@ -2379,7 +2308,30 @@
"crud_sample_sms_notification_total_pages",
"crud_sample_sms_notification_unicode_ci"
],
"17": [
"15": [
"crud_reagent_stock_log_display_remark",
"crud_reagent_stock_log_list_stock_logs",
"crud_reagent_stock_log_parse_receiver_purpose_from_remark",
"crud_reagent_stock_log_py",
"crud_reagent_stock_log_resolve_receiver_purpose",
"crud_reagent_stock_log_revert_step_stock_changes",
"crud_reagent_stock_log_row_to_dict",
"crud_reagent_stock_log_user_nick_name_map",
"crud_storage_entry_sms_notification_base_query",
"crud_storage_entry_sms_notification_ensure_notification",
"crud_storage_entry_sms_notification_fetch_sample_type_name",
"crud_storage_entry_sms_notification_fmt_dt",
"crud_storage_entry_sms_notification_generate_sms_content",
"crud_storage_entry_sms_notification_list_notifications",
"crud_storage_entry_sms_notification_py",
"crud_storage_entry_sms_notification_resolve_notification",
"crud_storage_entry_sms_notification_row_to_dict",
"crud_storage_entry_sms_notification_storage_status_label",
"crud_storage_entry_sms_notification_toggle_notification_status",
"crud_storage_entry_sms_notification_total_pages",
"crud_storage_entry_sms_notification_unicode_ci"
],
"16": [
"crud_qc_third_party_company_company_code_exists",
"crud_qc_third_party_company_create_company",
"crud_qc_third_party_company_get_company",
@@ -2401,7 +2353,7 @@
"crud_qc_third_party_item_soft_delete_item",
"crud_qc_third_party_item_update_item"
],
"18": [
"17": [
"crud_collection_protocol_no_batch_issue_protocol_nos",
"crud_collection_protocol_no_batch_revoke_protocol_nos",
"crud_collection_protocol_no_create_protocol_no",
@@ -2420,7 +2372,7 @@
"crud_collection_protocol_no_total_pages",
"crud_collection_protocol_no_update_protocol_no"
],
"19": [
"18": [
"crud_collection_region_create_collection_region",
"crud_collection_region_create_hospital",
"crud_collection_region_get_collection_region",
@@ -2437,6 +2389,23 @@
"crud_collection_region_update_collection_region",
"crud_collection_region_update_hospital"
],
"19": [
"crud_qc_material_build_manual_out_remark",
"crud_qc_material_code_exists",
"crud_qc_material_create_material",
"crud_qc_material_dec",
"crud_qc_material_fmt_dt",
"crud_qc_material_get_material",
"crud_qc_material_list_materials",
"crud_qc_material_norm_status",
"crud_qc_material_options_list",
"crud_qc_material_py",
"crud_qc_material_rationale_26",
"crud_qc_material_row_to_dict",
"crud_qc_material_soft_delete_material",
"crud_qc_material_total_pages",
"crud_qc_material_update_material"
],
"20": [
"crud_sample_code_batch_issue_sample_codes",
"crud_sample_code_batch_revoke_sample_codes",
@@ -2469,6 +2438,21 @@
"core_wechat_message_wechatmessageservice_send_template_message"
],
"22": [
"schemas_product_config",
"schemas_product_productbase",
"schemas_product_productcategorybase",
"schemas_product_productcategorycreate",
"schemas_product_productcategoryresponse",
"schemas_product_productcreate",
"schemas_product_productresponse",
"schemas_product_productunitbase",
"schemas_product_productunitcreate",
"schemas_product_productunitresponse",
"schemas_product_productupdate",
"schemas_product_py",
"schemas_product_rationale_1"
],
"23": [
"crud_dept_build_tree",
"crud_dept_cascade_soft_delete",
"crud_dept_collect_with_ancestors",
@@ -2482,7 +2466,7 @@
"crud_dept_soft_delete_dept",
"crud_dept_update_dept"
],
"23": [
"24": [
"crud_menu_build_tree",
"crud_menu_cascade_soft_delete",
"crud_menu_create_menu",
@@ -2495,19 +2479,6 @@
"crud_menu_soft_delete_menu",
"crud_menu_update_menu"
],
"24": [
"api_collection_protocol_ensure_customer_for_mother",
"crud_customer_create_customer",
"crud_customer_get_customer",
"crud_customer_id_card_taken",
"crud_customer_list_customers",
"crud_customer_py",
"crud_customer_rationale_1",
"crud_customer_row_to_dict",
"crud_customer_soft_delete_customer",
"crud_customer_total_pages",
"crud_customer_update_customer"
],
"25": [
"crud_sop_document_create_sop_document",
"crud_sop_document_get_sop_document",
@@ -2521,6 +2492,18 @@
"crud_sop_document_update_sop_document"
],
"26": [
"crud_qc_material_usage_deduct_for_task",
"crud_qc_material_usage_display_remark",
"crud_qc_material_usage_list_usages",
"crud_qc_material_usage_list_usages_by_task",
"crud_qc_material_usage_parse_receiver_purpose_from_remark",
"crud_qc_material_usage_py",
"crud_qc_material_usage_resolve_receiver_purpose",
"crud_qc_material_usage_revert_task_material_usages",
"crud_qc_material_usage_row_to_dict",
"crud_qc_material_usage_user_nick_name_map"
],
"27": [
"crud_express_company_create_express_company",
"crud_express_company_express_code_exists",
"crud_express_company_get_express_company",
@@ -2532,7 +2515,7 @@
"crud_express_company_total_pages",
"crud_express_company_update_express_company"
],
"27": [
"28": [
"crud_sample_reception_check_item_create_check_item",
"crud_sample_reception_check_item_get_check_item",
"crud_sample_reception_check_item_item_code_exists",
@@ -2544,7 +2527,7 @@
"crud_sample_reception_check_item_soft_delete_check_item",
"crud_sample_reception_check_item_update_check_item"
],
"28": [
"29": [
"crud_dict_data_create_dict_data",
"crud_dict_data_get_dict_data",
"crud_dict_data_list_dict_data",
@@ -2556,7 +2539,7 @@
"crud_dict_data_total_pages",
"crud_dict_data_update_dict_data"
],
"29": [
"30": [
"crud_process_category_category_code_exists",
"crud_process_category_create_process_category",
"crud_process_category_get_process_category",
@@ -2568,7 +2551,7 @@
"crud_process_category_total_pages",
"crud_process_category_update_process_category"
],
"30": [
"31": [
"crud_item_unit_create_item_unit",
"crud_item_unit_get_item_unit",
"crud_item_unit_list_item_units",
@@ -2580,7 +2563,7 @@
"crud_item_unit_unit_code_exists",
"crud_item_unit_update_item_unit"
],
"31": [
"32": [
"crud_cell_sample_type_create_cell_sample_type",
"crud_cell_sample_type_get_cell_sample_type",
"crud_cell_sample_type_list_cell_sample_types",
@@ -2592,7 +2575,19 @@
"crud_cell_sample_type_type_code_exists",
"crud_cell_sample_type_update_cell_sample_type"
],
"32": [
"33": [
"crud_output_type_create_output_type",
"crud_output_type_get_output_type",
"crud_output_type_list_output_types",
"crud_output_type_py",
"crud_output_type_rationale_1",
"crud_output_type_row_to_dict",
"crud_output_type_soft_delete_output_type",
"crud_output_type_total_pages",
"crud_output_type_type_code_exists",
"crud_output_type_update_output_type"
],
"34": [
"crud_post_create_post",
"crud_post_get_post",
"crud_post_list_posts",
@@ -2603,7 +2598,7 @@
"crud_post_total_pages",
"crud_post_update_post"
],
"33": [
"35": [
"crud_dict_type_create_dict_type",
"crud_dict_type_dict_type_code_exists",
"crud_dict_type_get_dict_type",
@@ -2614,7 +2609,18 @@
"crud_dict_type_total_pages",
"crud_dict_type_update_dict_type"
],
"34": [
"36": [
"crud_tenant_create_tenant",
"crud_tenant_get_tenant",
"crud_tenant_list_tenants",
"crud_tenant_py",
"crud_tenant_row_to_dict",
"crud_tenant_soft_delete_tenant",
"crud_tenant_tenant_no_exists",
"crud_tenant_total_pages",
"crud_tenant_update_tenant"
],
"37": [
"crud_site_create_site",
"crud_site_get_site",
"crud_site_list_sites",
@@ -2625,7 +2631,7 @@
"crud_site_total_pages",
"crud_site_update_site"
],
"35": [
"38": [
"models_base_basemodel",
"models_base_basemodel_to_dict",
"models_base_get_active",
@@ -2635,7 +2641,7 @@
"models_base_softdeletemodel_soft_delete",
"models_base_tablename"
],
"36": [
"39": [
"core_order_status_compat_derive_legacy_status_from_three",
"core_order_status_compat_derive_three_status_from_legacy",
"core_order_status_compat_py",
@@ -2644,65 +2650,65 @@
"core_order_status_compat_threestatus",
"core_order_status_compat_to_decimal"
],
"37": [
"40": [
"basesettings",
"core_config_config",
"core_config_py",
"core_config_settings"
],
"38": [
"41": [
"core_database_auto_fill_create_dept_id",
"core_database_get_db",
"core_database_py",
"core_database_rationale_31"
],
"39": [
"42": [
"api_menu_get_menu_list",
"api_menu_py",
"api_menu_rationale_1"
],
"40": [
"43": [
"core_context_py",
"core_context_rationale_1"
],
"41": [
"44": [
"api_init_py",
"api_init_rationale_1"
],
"42": [
"45": [
"init_py"
],
"43": [
"46": [
"core_init_py"
],
"44": [
"47": [
"core_wechat_message_rationale_143"
],
"45": [
"48": [
"core_wechat_message_rationale_179"
],
"46": [
"49": [
"core_wechat_message_rationale_215"
],
"47": [
"50": [
"core_wechat_message_rationale_251"
],
"48": [
"51": [
"core_wechat_message_rationale_289"
],
"49": [
"52": [
"core_wechat_message_rationale_325"
],
"50": [
"53": [
"models_init_py"
],
"51": [
"54": [
"schemas_init_py"
],
"52": [
"55": [
"crud_init_py"
],
"53": [
"56": [
"ws_init_py"
]
},
@@ -2711,9 +2717,9 @@
"1": 0.01,
"2": 0.06,
"3": 0.02,
"4": 0.02,
"5": 0.06,
"6": 0.02,
"4": 0.06,
"5": 0.02,
"6": 0.03,
"7": 0.04,
"8": 0.03,
"9": 0.07,
@@ -2721,35 +2727,35 @@
"11": 0.07,
"12": 0.12,
"13": 0.11,
"14": 0.2,
"15": 0.17,
"14": 0.18,
"15": 0.16,
"16": 0.18,
"17": 0.18,
"17": 0.21,
"18": 0.21,
"19": 0.21,
"19": 0.25,
"20": 0.26,
"21": 0.24,
"22": 0.27,
"23": 0.29,
"24": 0.27,
"22": 0.23,
"23": 0.27,
"24": 0.29,
"25": 0.31,
"26": 0.31,
"27": 0.38,
"28": 0.27,
"29": 0.31,
"26": 0.36,
"27": 0.31,
"28": 0.38,
"29": 0.27,
"30": 0.31,
"31": 0.31,
"32": 0.36,
"33": 0.36,
"32": 0.31,
"33": 0.31,
"34": 0.36,
"35": 0.29,
"36": 0.38,
"37": 0.5,
"38": 0.5,
"39": 0.67,
"40": 1.0,
"41": 1.0,
"42": 1.0,
"35": 0.36,
"36": 0.36,
"37": 0.36,
"38": 0.29,
"39": 0.38,
"40": 0.5,
"41": 0.5,
"42": 0.67,
"43": 1.0,
"44": 1.0,
"45": 1.0,
@@ -2760,7 +2766,10 @@
"50": 1.0,
"51": 1.0,
"52": 1.0,
"53": 1.0
"53": 1.0,
"54": 1.0,
"55": 1.0,
"56": 1.0
},
"gods": [
{
+77 -86
View File
@@ -9301,91 +9301,91 @@
"label": "_unicode_ci()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L26"
"source_location": "L25"
},
{
"id": "crud_storage_entry_sms_notification_total_pages",
"label": "total_pages()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L30"
"source_location": "L29"
},
{
"id": "crud_storage_entry_sms_notification_fmt_dt",
"label": "_fmt_dt()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L36"
"source_location": "L35"
},
{
"id": "crud_storage_entry_sms_notification_storage_status_label",
"label": "_storage_status_label()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L40"
"source_location": "L39"
},
{
"id": "crud_storage_entry_sms_notification_row_to_dict",
"label": "_row_to_dict()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L50"
"source_location": "L49"
},
{
"id": "crud_storage_entry_sms_notification_base_query",
"label": "_base_query()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L85"
"source_location": "L84"
},
{
"id": "crud_storage_entry_sms_notification_ensure_notification",
"label": "_ensure_notification()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L145"
"source_location": "L132"
},
{
"id": "crud_storage_entry_sms_notification_resolve_notification",
"label": "resolve_notification()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L181"
"source_location": "L168"
},
{
"id": "crud_storage_entry_sms_notification_fetch_sample_type_name",
"label": "_fetch_sample_type_name()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L219"
"source_location": "L206"
},
{
"id": "crud_storage_entry_sms_notification_list_notifications",
"label": "list_notifications()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L233"
"source_location": "L220"
},
{
"id": "crud_storage_entry_sms_notification_toggle_notification_status",
"label": "toggle_notification_status()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L349"
"source_location": "L342"
},
{
"id": "crud_storage_entry_sms_notification_generate_sms_content",
"label": "generate_sms_content()",
"file_type": "code",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L385"
"source_location": "L378"
},
{
"id": "crud_storage_entry_sms_notification_rationale_189",
"id": "crud_storage_entry_sms_notification_rationale_176",
"label": "Find notification by id; fallback to storage_review_id and ensure row exists.",
"file_type": "rationale",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L189"
"source_location": "L176"
},
{
"id": "crud_express_company_py",
@@ -12052,42 +12052,42 @@
"label": "_ensure_notification()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L139"
"source_location": "L127"
},
{
"id": "crud_sample_sms_notification_resolve_notification",
"label": "resolve_notification()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L179"
"source_location": "L167"
},
{
"id": "crud_sample_sms_notification_fetch_sample_type_name",
"label": "_fetch_sample_type_name()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L229"
"source_location": "L217"
},
{
"id": "crud_sample_sms_notification_list_notifications",
"label": "list_notifications()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L243"
"source_location": "L231"
},
{
"id": "crud_sample_sms_notification_toggle_notification_status",
"label": "toggle_notification_status()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L349"
"source_location": "L339"
},
{
"id": "crud_sample_sms_notification_generate_sms_content",
"label": "generate_sms_content()",
"file_type": "code",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L378"
"source_location": "L368"
},
{
"id": "crud_sample_reception_py",
@@ -41881,7 +41881,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L26",
"source_location": "L25",
"weight": 1.0
},
{
@@ -41890,7 +41890,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L30",
"source_location": "L29",
"weight": 1.0
},
{
@@ -41899,7 +41899,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L36",
"source_location": "L35",
"weight": 1.0
},
{
@@ -41908,7 +41908,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L40",
"source_location": "L39",
"weight": 1.0
},
{
@@ -41917,7 +41917,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L50",
"source_location": "L49",
"weight": 1.0
},
{
@@ -41926,7 +41926,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L85",
"source_location": "L84",
"weight": 1.0
},
{
@@ -41935,7 +41935,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L145",
"source_location": "L132",
"weight": 1.0
},
{
@@ -41944,7 +41944,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L181",
"source_location": "L168",
"weight": 1.0
},
{
@@ -41953,7 +41953,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L219",
"source_location": "L206",
"weight": 1.0
},
{
@@ -41962,7 +41962,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L233",
"source_location": "L220",
"weight": 1.0
},
{
@@ -41971,7 +41971,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L349",
"source_location": "L342",
"weight": 1.0
},
{
@@ -41980,7 +41980,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L385",
"source_location": "L378",
"weight": 1.0
},
{
@@ -41989,7 +41989,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L108",
"source_location": "L96",
"weight": 1.0
},
{
@@ -41998,7 +41998,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L216",
"source_location": "L203",
"weight": 1.0
},
{
@@ -42007,7 +42007,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L247",
"source_location": "L234",
"weight": 1.0
},
{
@@ -42016,7 +42016,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L315",
"source_location": "L308",
"weight": 1.0
},
{
@@ -42025,7 +42025,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L324",
"source_location": "L317",
"weight": 1.0
},
{
@@ -42034,7 +42034,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L329",
"source_location": "L322",
"weight": 1.0
},
{
@@ -42043,7 +42043,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L341",
"source_location": "L334",
"weight": 1.0
},
{
@@ -42052,7 +42052,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L358",
"source_location": "L351",
"weight": 1.0
},
{
@@ -42061,7 +42061,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L393",
"source_location": "L386",
"weight": 1.0
},
{
@@ -42070,16 +42070,16 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L440",
"source_location": "L433",
"weight": 1.0
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "crud_storage_entry_sms_notification_resolve_notification",
"relation": "rationale_for",
"confidence": "EXTRACTED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L189",
"source_location": "L176",
"weight": 1.0
},
{
@@ -49000,7 +49000,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L139",
"source_location": "L127",
"weight": 1.0
},
{
@@ -49009,7 +49009,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L179",
"source_location": "L167",
"weight": 1.0
},
{
@@ -49018,7 +49018,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L229",
"source_location": "L217",
"weight": 1.0
},
{
@@ -49027,7 +49027,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L243",
"source_location": "L231",
"weight": 1.0
},
{
@@ -49036,7 +49036,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L349",
"source_location": "L339",
"weight": 1.0
},
{
@@ -49045,7 +49045,7 @@
"relation": "contains",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L378",
"source_location": "L368",
"weight": 1.0
},
{
@@ -49063,7 +49063,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L102",
"source_location": "L91",
"weight": 1.0
},
{
@@ -49072,7 +49072,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L212",
"source_location": "L200",
"weight": 1.0
},
{
@@ -49081,7 +49081,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L257",
"source_location": "L245",
"weight": 1.0
},
{
@@ -49090,7 +49090,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L323",
"source_location": "L313",
"weight": 1.0
},
{
@@ -49099,7 +49099,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L329",
"source_location": "L319",
"weight": 1.0
},
{
@@ -49108,7 +49108,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L340",
"source_location": "L330",
"weight": 1.0
},
{
@@ -49117,7 +49117,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L358",
"source_location": "L348",
"weight": 1.0
},
{
@@ -49126,7 +49126,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L386",
"source_location": "L376",
"weight": 1.0
},
{
@@ -49135,7 +49135,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L434",
"source_location": "L424",
"weight": 1.0
},
{
@@ -49144,7 +49144,7 @@
"relation": "calls",
"confidence": "EXTRACTED",
"source_file": "crud/sample_sms_notification.py",
"source_location": "L435",
"source_location": "L425",
"weight": 1.0
},
{
@@ -82754,7 +82754,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizcellsampletype",
"relation": "uses",
"confidence": "INFERRED",
@@ -82763,7 +82763,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizcollectionprotocol",
"relation": "uses",
"confidence": "INFERRED",
@@ -82772,7 +82772,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizprotocolpartycustomer",
"relation": "uses",
"confidence": "INFERRED",
@@ -82781,7 +82781,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizprotocolsample",
"relation": "uses",
"confidence": "INFERRED",
@@ -82790,16 +82790,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"target": "models_models_bizsamplereception",
"relation": "uses",
"confidence": "INFERRED",
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L12",
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizstorageentrysmsnotification",
"relation": "uses",
"confidence": "INFERRED",
@@ -82808,7 +82799,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_bizstoragereleasereview",
"relation": "uses",
"confidence": "INFERRED",
@@ -82817,7 +82808,7 @@
"weight": 0.8
},
{
"source": "crud_storage_entry_sms_notification_rationale_189",
"source": "crud_storage_entry_sms_notification_rationale_176",
"target": "models_models_sysuser",
"relation": "uses",
"confidence": "INFERRED",
@@ -102303,7 +102294,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L165",
"source_location": "L152",
"weight": 1.0
},
{
@@ -102313,7 +102304,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L166",
"source_location": "L153",
"weight": 1.0
},
{
@@ -102323,7 +102314,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L285",
"source_location": "L272",
"weight": 1.0
},
{
@@ -102333,7 +102324,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L287",
"source_location": "L274",
"weight": 1.0
},
{
@@ -102343,7 +102334,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/storage_entry_sms_notification.py",
"source_location": "L319",
"source_location": "L312",
"weight": 1.0
},
{
@@ -104803,7 +104794,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/sample_sms_notification.py",
"source_location": "L163",
"source_location": "L151",
"weight": 1.0
},
{
@@ -104813,7 +104804,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/sample_sms_notification.py",
"source_location": "L164",
"source_location": "L152",
"weight": 1.0
},
{
@@ -104823,7 +104814,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/sample_sms_notification.py",
"source_location": "L288",
"source_location": "L276",
"weight": 1.0
},
{
@@ -104833,7 +104824,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/sample_sms_notification.py",
"source_location": "L290",
"source_location": "L278",
"weight": 1.0
},
{
@@ -104843,7 +104834,7 @@
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "crud/sample_sms_notification.py",
"source_location": "L327",
"source_location": "L317",
"weight": 1.0
},
{
+84 -69
View File
@@ -1,12 +1,12 @@
# Graph Report - app (2026-05-23)
# Graph Report - app (2026-05-24)
## Corpus Check
- 146 files · ~134,832 words
- 146 files · ~134,783 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 2597 nodes · 10461 edges · 48 communities detected
- Extraction: 41% EXTRACTED · 59% INFERRED · 0% AMBIGUOUS · INFERRED: 6177 edges (avg confidence: 0.63)
- 2597 nodes · 10460 edges · 51 communities detected
- Extraction: 41% EXTRACTED · 59% INFERRED · 0% AMBIGUOUS · INFERRED: 6176 edges (avg confidence: 0.63)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
@@ -52,12 +52,15 @@
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
## God Nodes (most connected - your core abstractions)
1. `success_response()` - 409 edges
@@ -87,11 +90,11 @@
### Community 0 - "Community 0"
Cohesion: 0.02
Nodes (451): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+443 more)
Nodes (434): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+426 more)
### Community 1 - "Community 1"
Cohesion: 0.01
Nodes (388): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+380 more)
Nodes (399): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+391 more)
### Community 2 - "Community 2"
Cohesion: 0.06
@@ -99,27 +102,27 @@ Nodes (226): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审
### Community 3 - "Community 3"
Cohesion: 0.02
Nodes (166): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+158 more)
Nodes (161): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+153 more)
### Community 4 - "Community 4"
Cohesion: 0.02
Nodes (158): _persist_protocol_sub_resources(), list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes(), delete(), get_multi_with_filters() (+150 more)
### Community 5 - "Community 5"
Cohesion: 0.06
Nodes (164): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+156 more)
### Community 6 - "Community 6"
### Community 5 - "Community 5"
Cohesion: 0.02
Nodes (139): list_roles_for_select(), _avatar_url_field(), _build_user_info_payload(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。, 与 web-admin `userInfo` 字段约定一致。 (+131 more)
### Community 6 - "Community 6"
Cohesion: 0.03
Nodes (135): create_collection_protocol(), delete_collection_protocol(), _ensure_customer_for_mother(), get_collection_protocol_detail(), _get_current_user_id(), _get_tenant_no(), list_collection_protocol_audits(), list_collection_protocols() (+127 more)
### Community 7 - "Community 7"
Cohesion: 0.04
Nodes (113): _format_attachment_file_size(), get_protocol_nos_used_in_protocols(), urls_to_attachment_list(), _accept_conclusion_label(), _attach_reception_detail(), complete_production_work_order(), create_production_work_order_from_reception(), _enrich_wo_items() (+105 more)
### Community 8 - "Community 8"
Cohesion: 0.03
Nodes (54): get_designer_data(), BaseStorage, convert_heic_to_jpeg(), get_storage(), LocalStorage, MinIOStorage, OSSStorage, process_image_content() (+46 more)
Nodes (66): get_designer_data(), BusinessException, InvalidStatusTransitionException, log_delivery_operation(), log_operation(), log_order_operation(), log_settlement_operation(), log_user_operation() (+58 more)
### Community 9 - "Community 9"
Cohesion: 0.07
@@ -142,29 +145,29 @@ Cohesion: 0.11
Nodes (27): get_next_cell_product_code(), _build_facility_path_label(), build_split_product_codes(), create_cell_products_batch(), create_cell_products_by_quantity(), delete_cell_product(), _enrich_product_dicts(), get_cell_product() (+19 more)
### Community 14 - "Community 14"
Cohesion: 0.2
Nodes (23): _create_insurance_company(), _create_insurance_company_invoice(), _create_insurance_project_price(), _fmt_dt(), _generate_uuid(), InsuranceCompanyCreateBody, InsuranceCompanyInvoiceCreateBody, InsuranceCompanyInvoiceUpdateBody (+15 more)
### Community 15 - "Community 15"
Cohesion: 0.17
Nodes (12): BusinessException, InvalidStatusTransitionException, log_delivery_operation(), log_operation(), log_order_operation(), log_settlement_operation(), log_user_operation(), OrderLockedException (+4 more)
### Community 16 - "Community 16"
Cohesion: 0.18
Nodes (17): generate_sms(), _get_current_user_id(), _get_tenant_no(), list_notifications(), _page_payload(), toggle_status(), ToggleStatusBody, _accept_conclusion_label() (+9 more)
### Community 17 - "Community 17"
### Community 15 - "Community 15"
Cohesion: 0.16
Nodes (17): _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), _resolve_receiver_purpose(), revert_step_stock_changes(), _row_to_dict(), _user_nick_name_map(), _base_query() (+9 more)
### Community 16 - "Community 16"
Cohesion: 0.18
Nodes (18): company_code_exists(), create_company(), get_company(), list_companies(), list_company_options(), _row_to_dict(), soft_delete_company(), update_company() (+10 more)
### Community 18 - "Community 18"
### Community 17 - "Community 17"
Cohesion: 0.21
Nodes (15): batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), enrich_issued_user_names(), get_protocol_no(), list_protocol_nos(), _parse_issued_time(), protocol_no_exists() (+7 more)
### Community 19 - "Community 19"
### Community 18 - "Community 18"
Cohesion: 0.21
Nodes (13): create_collection_region(), create_hospital(), get_collection_region(), get_hospital(), _hospital_names_by_region_ids(), _hospital_to_dict(), list_collection_regions(), list_hospitals() (+5 more)
### Community 19 - "Community 19"
Cohesion: 0.25
Nodes (13): code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), list_materials(), _norm_status(), options_list() (+5 more)
### Community 20 - "Community 20"
Cohesion: 0.26
Nodes (12): batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), list_sample_codes(), _parse_issued_time(), 样本编码池 CRUD(biz_sample_code), _resolve_issued_user_display_name() (+4 more)
@@ -174,143 +177,155 @@ Cohesion: 0.24
Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import Wech, 发送模板消息 Args: openid: 用户openid templ, send_delivery_notice(), send_delivery_warning(), send_order_status(), send_payment_success(), send_refund_result(), send_urge_notification() (+1 more)
### Community 22 - "Community 22"
Cohesion: 0.23
Nodes (12): Config, ProductBase, ProductCategoryBase, ProductCategoryCreate, ProductCategoryResponse, ProductCreate, ProductResponse, ProductUnitBase (+4 more)
### Community 23 - "Community 23"
Cohesion: 0.27
Nodes (11): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), 保留匹配节点及其全部上级,供关键词检索后仍能正确组树。 (+3 more)
### Community 23 - "Community 23"
### Community 24 - "Community 24"
Cohesion: 0.29
Nodes (9): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), _row_to_dict(), soft_delete_menu() (+1 more)
### Community 24 - "Community 24"
Cohesion: 0.27
Nodes (9): _ensure_customer_for_mother(), create_customer(), get_customer(), id_card_taken(), list_customers(), 客户 CRUD(biz_customer), _row_to_dict(), soft_delete_customer() (+1 more)
### Community 25 - "Community 25"
Cohesion: 0.31
Nodes (8): create_sop_document(), get_sop_document(), list_sop_documents(), SOP文档 CRUD(biz_sop_document), _row_to_dict(), soft_delete_sop_document(), sop_code_exists(), update_sop_document()
### Community 26 - "Community 26"
Cohesion: 0.36
Nodes (9): deduct_for_task(), _display_remark(), list_usages(), list_usages_by_task(), _parse_receiver_purpose_from_remark(), _resolve_receiver_purpose(), revert_task_material_usages(), _row_to_dict() (+1 more)
### Community 27 - "Community 27"
Cohesion: 0.31
Nodes (8): create_express_company(), express_code_exists(), get_express_company(), list_express_companies(), 快递公司 CRUD(biz_express_company), _row_to_dict(), soft_delete_express_company(), update_express_company()
### Community 27 - "Community 27"
### Community 28 - "Community 28"
Cohesion: 0.38
Nodes (9): create_check_item(), get_check_item(), item_code_exists(), list_active_check_items(), list_check_items(), _order_query(), _row_to_dict(), soft_delete_check_item() (+1 more)
### Community 28 - "Community 28"
### Community 29 - "Community 29"
Cohesion: 0.27
Nodes (8): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), 字典数据 CRUD(sys_dict_data), _row_to_dict(), soft_delete_dict_data(), update_dict_data()
### Community 29 - "Community 29"
### Community 30 - "Community 30"
Cohesion: 0.31
Nodes (8): category_code_exists(), create_process_category(), get_process_category(), list_process_categories(), 工艺工序分类 CRUD(biz_process_category), _row_to_dict(), soft_delete_process_category(), update_process_category()
### Community 30 - "Community 30"
### Community 31 - "Community 31"
Cohesion: 0.31
Nodes (8): create_item_unit(), get_item_unit(), list_item_units(), 物品单位 CRUD(biz_item_unit), _row_to_dict(), soft_delete_item_unit(), unit_code_exists(), update_item_unit()
### Community 31 - "Community 31"
### Community 32 - "Community 32"
Cohesion: 0.31
Nodes (8): create_cell_sample_type(), get_cell_sample_type(), list_cell_sample_types(), 细胞样本类型 CRUD(biz_cell_sample_type), _row_to_dict(), soft_delete_cell_sample_type(), type_code_exists(), update_cell_sample_type()
### Community 32 - "Community 32"
Cohesion: 0.36
Nodes (7): create_post(), get_post(), list_posts(), post_code_exists(), _row_to_dict(), soft_delete_post(), update_post()
### Community 33 - "Community 33"
Cohesion: 0.36
Nodes (7): create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), _row_to_dict(), soft_delete_dict_type(), update_dict_type()
Cohesion: 0.31
Nodes (8): create_output_type(), get_output_type(), list_output_types(), 工艺产出物类型 CRUD(biz_output_type), _row_to_dict(), soft_delete_output_type(), type_code_exists(), update_output_type()
### Community 34 - "Community 34"
Cohesion: 0.36
Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site()
Nodes (7): create_post(), get_post(), list_posts(), post_code_exists(), _row_to_dict(), soft_delete_post(), update_post()
### Community 35 - "Community 35"
Cohesion: 0.36
Nodes (7): create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), _row_to_dict(), soft_delete_dict_type(), update_dict_type()
### Community 36 - "Community 36"
Cohesion: 0.36
Nodes (7): create_tenant(), get_tenant(), list_tenants(), _row_to_dict(), soft_delete_tenant(), tenant_no_exists(), update_tenant()
### Community 37 - "Community 37"
Cohesion: 0.36
Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site()
### Community 38 - "Community 38"
Cohesion: 0.29
Nodes (2): BaseModel, SoftDeleteModel
### Community 36 - "Community 36"
### Community 39 - "Community 39"
Cohesion: 0.38
Nodes (6): derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal()
### Community 37 - "Community 37"
### Community 40 - "Community 40"
Cohesion: 0.5
Nodes (3): BaseSettings, Config, Settings
### Community 38 - "Community 38"
### Community 41 - "Community 41"
Cohesion: 0.5
Nodes (2): _auto_fill_create_dept_id(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID
### Community 39 - "Community 39"
### Community 42 - "Community 42"
Cohesion: 0.67
Nodes (2): get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,供后端菜单模式联调)
### Community 40 - "Community 40"
### Community 43 - "Community 43"
Cohesion: 1.0
Nodes (1): 请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传
### Community 41 - "Community 41"
### Community 44 - "Community 44"
Cohesion: 1.0
Nodes (1): API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)
### Community 44 - "Community 44"
### Community 47 - "Community 47"
Cohesion: 1.0
Nodes (1): 发送订单状态通知 Args: openid: 用户openid ord
### Community 45 - "Community 45"
### Community 48 - "Community 48"
Cohesion: 1.0
Nodes (1): 发送支付成功通知 Args: openid: 用户openid ord
### Community 46 - "Community 46"
### Community 49 - "Community 49"
Cohesion: 1.0
Nodes (1): 发送配送通知 Args: openid: 配送员openid task
### Community 47 - "Community 47"
### Community 50 - "Community 50"
Cohesion: 1.0
Nodes (1): 发送配送时效预警 Args: openid: 配送员openid ta
### Community 48 - "Community 48"
### Community 51 - "Community 51"
Cohesion: 1.0
Nodes (1): 发送退款结果通知 Args: openid: 用户openid ord
### Community 49 - "Community 49"
### Community 52 - "Community 52"
Cohesion: 1.0
Nodes (1): 发送催单通知给配送员 Args: deliver_openid: 配送员openid
## Knowledge Gaps
- **90 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。` (+85 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 35`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()`
- **Thin community `Community 38`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 38`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`
- **Thin community `Community 41`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 39`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,供后端菜单模式联调)`
- **Thin community `Community 42`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,供后端菜单模式联调)`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 40`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`
- **Thin community `Community 43`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 41`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`
- **Thin community `Community 44`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 44`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord`
- **Thin community `Community 47`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 45`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord`
- **Thin community `Community 48`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 46`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task`
- **Thin community `Community 49`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 47`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta`
- **Thin community `Community 50`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 48`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord`
- **Thin community `Community 51`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 49`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid`
- **Thin community `Community 52`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `generate_uuid()` connect `Community 3` to `Community 0`, `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 11`, `Community 13`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`?**
- **Why does `generate_uuid()` connect `Community 3` to `Community 0`, `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`?**
_High betweenness centrality (0.103) - this node is a cross-community bridge._
- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 9`, `Community 10`, `Community 14`, `Community 16`, `Community 18`, `Community 20`?**
- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 9`, `Community 10`, `Community 14`, `Community 17`, `Community 20`?**
_High betweenness centrality (0.071) - this node is a cross-community bridge._
- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 4`, `Community 6`, `Community 39`, `Community 8`, `Community 13`, `Community 14`, `Community 16`?**
- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 5`, `Community 6`, `Community 8`, `Community 42`, `Community 13`, `Community 14`?**
_High betweenness centrality (0.070) - this node is a cross-community bridge._
- **Are the 408 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?**
_`success_response()` has 408 INFERRED edges - model-reasoned connections that need verification._
+4 -4
View File
@@ -57,12 +57,12 @@
</div>
<div id="legend"></div>
</div>
<div id="stats">2597 nodes &middot; 10461 edges &middot; 54 communities</div>
<div id="stats">2597 nodes &middot; 10460 edges &middot; 57 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "init_py", "label": "__init__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 42, "community_name": "Community 42", "source_file": "__init__.py", "file_type": "code", "degree": 0}, {"id": "main_py", "label": "main.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main.py", "community": 6, "community_name": "Community 6", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_lifespan", "label": "lifespan()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "lifespan()", "community": 6, "community_name": "Community 6", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_mask_secret()", "community": 6, "community_name": "Community 6", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_root", "label": "root()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "root()", "community": 6, "community_name": "Community 6", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_health_check", "label": "health_check()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "health_check()", "community": 6, "community_name": "Community 6", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "tasks_init_py", "label": "__init__.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 6, "community_name": "Community 6", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "tasks_init_init_scheduled_tasks", "label": "init_scheduled_tasks()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "init_scheduled_tasks()", "community": 6, "community_name": "Community 6", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "tasks_init_shutdown_scheduler", "label": "shutdown_scheduler()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "shutdown_scheduler()", "community": 6, "community_name": "Community 6", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "core_auth_py", "label": "auth.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.3, "font": {"size": 0, "color": "#ffffff"}, "title": "auth.py", "community": 6, "community_name": "Community 6", "source_file": "core/auth.py", "file_type": "code", "degree": 18}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_redis_session_enabled()", "community": 6, "community_name": "Community 6", "source_file": "core/auth.py", "file_type": "code", "degree": 2}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_get_redis_client()", "community": 6, "community_name": "Community 6", "source_file": "core/auth.py", "file_type": "code", "degree": 9}, {"id": "core_auth_session_key", "label": "_session_key()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_session_key()", "community": 6, "community_name": "Community 6", "source_file": "core/auth.py", "file_type": "code", "degree": 5}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "boLine truncated
const RAW_EDGES = [{"from": "main_py", "to": "app_main_lifespan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_mask_secret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_health_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_lifespan", "to": "core_login_crypto_ensure_initialized", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_init_scheduled_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_shutdown_scheduler", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tasks_init_py", "to": "tasks_init_init_scheduled_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tasks_init_py", "to": "tasks_init_shutdown_scheduler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_redis_session_enabled", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_redis_client", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_session_key", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_refresh_key", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_store_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_revoke_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_extend_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_is_session_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_store_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_is_refresh_token_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_revoke_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_create_access_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_create_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_decode_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_current_user_by_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_current_user", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "Line truncated
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 467}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 415}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 231}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 185}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 180}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 168}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 167}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 123}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 100}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 71}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 65}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 46}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 31}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 30}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 24}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 21}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 21}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 20}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 17}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 15}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 14}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 13}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 12}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 11}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 11}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 10}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 10}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 10}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 10}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 10}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 10}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 10}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 9}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 9}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 9}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 8}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 7}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 4}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 4}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 3}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 2}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 2}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 1}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 1}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 1}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 1}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 1}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 0}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 0}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 0}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 0}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 0}];
const RAW_NODES = [{"id": "init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 45, "community_name": "Community 45", "source_file": "__init__.py", "file_type": "code", "degree": 0}, {"id": "main_py", "label": "main.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main.py", "community": 5, "community_name": "Community 5", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_lifespan", "label": "lifespan()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "lifespan()", "community": 5, "community_name": "Community 5", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_mask_secret()", "community": 5, "community_name": "Community 5", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_root", "label": "root()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "root()", "community": 5, "community_name": "Community 5", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_health_check", "label": "health_check()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "health_check()", "community": 5, "community_name": "Community 5", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "tasks_init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 5, "community_name": "Community 5", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "tasks_init_init_scheduled_tasks", "label": "init_scheduled_tasks()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "init_scheduled_tasks()", "community": 5, "community_name": "Community 5", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "tasks_init_shutdown_scheduler", "label": "shutdown_scheduler()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "shutdown_scheduler()", "community": 5, "community_name": "Community 5", "source_file": "tasks/__init__.py", "file_type": "code", "degree": 2}, {"id": "core_auth_py", "label": "auth.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.3, "font": {"size": 0, "color": "#ffffff"}, "title": "auth.py", "community": 5, "community_name": "Community 5", "source_file": "core/auth.py", "file_type": "code", "degree": 18}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_redis_session_enabled()", "community": 5, "community_name": "Community 5", "source_file": "core/auth.py", "file_type": "code", "degree": 2}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_get_redis_client()", "community": 5, "community_name": "Community 5", "source_file": "core/auth.py", "file_type": "code", "degree": 9}, {"id": "core_auth_session_key", "label": "_session_key()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_session_key()", "community": 5, "community_name": "Community 5", "source_file": "core/auth.py", "file_type": "code", "degree": 5}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "boLine truncated
const RAW_EDGES = [{"from": "main_py", "to": "app_main_lifespan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_mask_secret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_health_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_lifespan", "to": "core_login_crypto_ensure_initialized", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_init_scheduled_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_shutdown_scheduler", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tasks_init_py", "to": "tasks_init_init_scheduled_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tasks_init_py", "to": "tasks_init_shutdown_scheduler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_redis_session_enabled", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_redis_client", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_session_key", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_refresh_key", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_store_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_revoke_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_extend_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_is_session_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_store_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_is_refresh_token_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_revoke_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_create_access_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_create_refresh_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_decode_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_current_user_by_token", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_current_user", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "Line truncated
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 449}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 426}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 231}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 178}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 168}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 167}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 151}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 123}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 121}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 71}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 65}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 46}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 31}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 30}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 21}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 21}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 20}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 17}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 15}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 15}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 14}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 13}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 13}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 12}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 11}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 10}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 10}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 10}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 10}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 10}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 10}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 10}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 10}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 10}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 9}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 9}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 9}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 9}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 8}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 7}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 4}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 4}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 3}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 2}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 2}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 1}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 1}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 1}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 1}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 1}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 0}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 0}];
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
function esc(s) {
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -86,7 +86,7 @@
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent_stock_log.py": 1779515479.6599197,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/clean_room.py": 1778775238.2993922,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py": 1778605691.3816392,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py": 1779532930.08716,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py": 1779545611.322996,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py": 1779265659.3453207,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py": 1779265673.3888667,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py": 1779265616.3701816,
@@ -106,7 +106,7 @@
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py": 1779310971.8304002,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py": 1778733031.447253,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/workflow.py": 1779265993.677624,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py": 1779532932.769933,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py": 1779545309.6706858,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py": 1779532933.8137784,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py": 1779265715.416005,
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py": 1779284415.64655,
+1 -1
View File
@@ -1,4 +1,4 @@
# Graph Report - src (2026-05-23)
# Graph Report - src (2026-05-24)
## Corpus Check
- Large corpus: 595 files · ~325,194 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
@@ -28,61 +28,48 @@
</div>
</div>
</template>
<template #append>
<div
v-if="viewDetail?.taskType !== 'dsfjc'"
class="view-section qc-task-view-material-usages"
>
<h3>物料使用</h3>
<el-table
v-if="viewMaterialUsages.length"
:data="viewMaterialUsages"
stripe
class="list-table inner-table qc-task-view-material-table"
>
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
<p v-else class="view-material-empty">暂无物料使用记录</p>
</div>
<div
v-if="viewDetail?.attachmentFiles?.length"
class="view-section qc-task-view-attachments"
>
<h3>{{ viewDetail?.taskType === 'dsfjc' ? '检测材料' : '检测附件' }}</h3>
<ProtocolAttachmentReadonly
:files="viewDetail.attachmentFiles"
@preview="handleAttachmentPreview"
@download="handleAttachmentDownload"
<template #material-usages>
<div v-if="viewMaterialUsages.length" class="view-subtable-wrap">
<el-table :data="viewMaterialUsages" stripe class="list-table view-subtable">
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
</div>
<p v-else class="view-empty-hint">暂无物料使用记录</p>
</template>
<template #task-attachments>
<ProtocolAttachmentReadonly
:files="viewDetail?.attachmentFiles || []"
@preview="handleAttachmentPreview"
@download="handleAttachmentDownload"
/>
</template>
</SystemViewDialog>
</template>
@@ -262,8 +249,25 @@
if (r.etaTime) {
transportFields.push({ label: '预计到达', value: r.etaTime })
}
const resultSection =
d.results && d.results.length > 0
const taskResultSummaryFields: ViewSection['fields'] = [
{
label: '任务状态',
value: taskStatusLabel(d.taskStatus),
tagType: d.taskStatus === 'ywc' ? 'success' : d.taskStatus === 'jxz' ? 'warning' : 'info'
},
{
label: '检测结论',
value: d.conclusionLabel || qcTaskConclusionLabel(d.conclusion || '') || '—',
tagType: d.conclusion === 'tg' ? 'success' : d.conclusion === 'btg' ? 'danger' : 'info'
},
{ label: '备注', value: d.remark || '—' }
]
const resultSection: ViewSection[] = [
{
title: '质检结论',
fields: taskResultSummaryFields
},
...(d.results && d.results.length > 0
? [
{
title: '检测参数',
@@ -273,7 +277,19 @@
}))
}
]
: []
: [{ title: '检测参数', fields: [] }])
]
const tailSections: ViewSection[] = []
if (d.taskType !== 'dsfjc') {
tailSections.push({ title: '物料使用', fields: [], slot: 'material-usages' })
}
if (d.attachmentFiles?.length) {
tailSections.push({
title: d.taskType === 'dsfjc' ? '检测材料' : '检测附件',
fields: [],
slot: 'task-attachments'
})
}
return [
{
title: '任务信息',
@@ -290,19 +306,8 @@
{ label: '检测项目', value: d.itemName },
{ label: '项目编码', value: d.itemCode || '—' },
{ label: '第三方公司', value: d.companyName || '—' },
{
label: '任务状态',
value: taskStatusLabel(d.taskStatus),
tagType: d.taskStatus === 'ywc' ? 'success' : d.taskStatus === 'jxz' ? 'warning' : 'info'
},
{
label: '检测结论',
value: d.conclusionLabel || qcTaskConclusionLabel(d.conclusion || '') || '—',
tagType: d.conclusion === 'tg' ? 'success' : d.conclusion === 'btg' ? 'danger' : 'info'
},
{ label: '完成时间', value: d.completedTime || '—' },
{ label: '创建时间', value: d.createTime || '—' },
{ label: '备注', value: d.remark || '—', span: true }
{ label: '创建时间', value: d.createTime || '—' }
]
},
{
@@ -343,7 +348,8 @@
{ label: '备注', value: r.remark || '—', span: true }
]
},
...resultSection
...resultSection,
...tailSections
]
})
@@ -395,40 +401,4 @@
}
}
.qc-task-view-material-usages,
.qc-task-view-attachments {
padding: 12px 18px;
border-bottom: none;
h3 {
margin: 0 0 10px;
padding-left: 10px;
font-size: 13px;
font-weight: 600;
color: #1e293b;
border-left: 3px solid #10b981;
line-height: 1;
}
}
.qc-task-view-material-table {
width: 100%;
:deep(.el-table__header .cell),
:deep(.el-table__body .cell) {
font-size: 12px;
line-height: 1.4;
}
:deep(.el-table__header th.el-table__cell),
:deep(.el-table__body td.el-table__cell) {
padding: 6px 0;
}
}
.view-material-empty {
margin: 0;
font-size: 12px;
color: #64748b;
}
</style>
@@ -407,5 +407,62 @@
border-top: 1px solid #d9e8e2;
background: #f8fafc;
}
/* 区块标题:深色字 + 主色竖条(与 OpenSpec ui-conventions 一致,避免被全局 h3 染色) */
.view-section > h3 {
color: #1e293b;
font-weight: 600;
letter-spacing: normal;
text-transform: none;
}
/* 查看弹窗内嵌子表(对齐 fresh-mint §9.7 + OpenSpec 嵌套列表 14px) */
.view-section-slot .view-subtable-wrap {
border: 1px solid #e2e8f0;
border-radius: 8px;
overflow: hidden;
}
.view-section-slot .view-subtable-wrap .el-table.view-subtable {
--el-table-header-bg-color: #f8fafc;
--el-table-header-text-color: #64748b;
--el-table-border-color: #e2e8f0;
width: 100%;
.el-table__header th.el-table__cell,
.el-table__body td.el-table__cell {
font-size: 14px;
padding: 8px 0;
}
.el-table__header th.el-table__cell .cell {
font-weight: 500;
color: #64748b;
}
.el-table__body td.el-table__cell .cell {
color: #1e293b;
}
}
.view-section-slot .view-empty-hint {
margin: 0;
font-size: 13px;
color: #64748b;
line-height: 1.5;
}
}
.system-view-dialog--compact {
.view-section-slot .view-subtable-wrap .el-table.view-subtable {
.el-table__header th.el-table__cell,
.el-table__body td.el-table__cell {
font-size: 13px;
}
}
.view-section-slot .view-empty-hint {
font-size: 12px;
}
}
</style>
@@ -11,7 +11,12 @@
@update:model-value="emit('update:modelValue', $event)"
@closed="handleClosed"
>
<div class="protocol-view-body" :class="{ 'is-detail-loading': detailLoading && !bundle }">
<div
class="protocol-view-body"
:class="{ 'is-detail-loading': detailLoading && !bundle }"
v-loading="detailLoading && !bundle"
element-loading-text="加载中…"
>
<div class="detail-tabs">
<div
v-for="tab in formTabs"
@@ -25,7 +30,7 @@
</div>
<template v-if="bundle">
<div v-loading="detailLoading && !bundle">
<div>
<!-- KPI 摘要条 -->
<div class="kpi-strip">
<div class="kpi-card">
@@ -891,19 +896,32 @@
</div>
</template>
<template v-else-if="step.key === 'receipt-finance'">
<!-- 财务确认 -->
<!-- 财务确认:jfqrz 为待财务确认,updateTime 为提交财务时间非确认时间 -->
<div class="flow-detail-card__kv">
<span class="flow-detail-card__label">确认状态</span>
<span class="flow-detail-card__value"
><el-tag type="success" size="small">已确认</el-tag></span
>
<span class="flow-detail-card__value">
<el-tag
v-if="isReceiptFinanceConfirmed(detail)"
type="success"
size="small"
>已确认</el-tag
>
<el-tag v-else type="warning" size="small">待确认</el-tag>
</span>
</div>
<div v-if="detail.updateTime" class="flow-detail-card__kv">
<div
v-if="isReceiptFinanceConfirmed(detail) && detail.updateTime"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">确认时间</span>
<span class="flow-detail-card__value">{{ detail.updateTime }}</span>
</div>
<div
v-if="detail.financeRemark && String(detail.financeRemark).trim()"
v-if="
isReceiptFinanceConfirmed(detail) &&
detail.financeRemark &&
String(detail.financeRemark).trim()
"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">财务备注</span>
@@ -912,7 +930,10 @@
}}</span>
</div>
<div
v-if="financeConfirmAttachmentFiles(detail).length"
v-if="
isReceiptFinanceConfirmed(detail) &&
financeConfirmAttachmentFiles(detail).length
"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">财务附件</span>
@@ -1437,6 +1458,12 @@
return 'green'
}
/** 缴费明细是否已完成财务收款确认(jfqrz 仅已提交待财务处理) */
function isReceiptFinanceConfirmed(detail: Record<string, any>) {
const s = String(detail.payStatus || '')
return s !== 'jfqrz' && s !== 'dfj'
}
interface MiniFlowStep {
key: string
label: string
@@ -313,61 +313,48 @@
</div>
</div>
</template>
<template #append>
<div
v-if="viewDetail?.taskType !== 'dsfjc'"
class="view-section qc-task-view-material-usages"
>
<h3>物料使用</h3>
<el-table
v-if="viewMaterialUsages.length"
:data="viewMaterialUsages"
stripe
class="list-table inner-table qc-task-view-material-table"
>
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
<p v-else class="view-material-empty">暂无物料使用记录</p>
</div>
<div
v-if="viewDetail?.attachmentFiles?.length"
class="view-section qc-task-view-attachments"
>
<h3>{{ viewDetail?.taskType === 'dsfjc' ? '检测材料' : '检测附件' }}</h3>
<ProtocolAttachmentReadonly
:files="viewDetail.attachmentFiles"
@preview="handleViewAttachmentPreview"
@download="handleViewAttachmentDownload"
<template #material-usages>
<div v-if="viewMaterialUsages.length" class="view-subtable-wrap">
<el-table :data="viewMaterialUsages" stripe class="list-table view-subtable">
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
</div>
<p v-else class="view-empty-hint">暂无物料使用记录</p>
</template>
<template #task-attachments>
<ProtocolAttachmentReadonly
:files="viewDetail?.attachmentFiles || []"
@preview="handleViewAttachmentPreview"
@download="handleViewAttachmentDownload"
/>
</template>
</SystemViewDialog>
</section>
@@ -718,6 +705,17 @@
}
]
: []
const tailSections: ViewSection[] = []
if (d.taskType !== 'dsfjc') {
tailSections.push({ title: '物料使用', fields: [], slot: 'material-usages' })
}
if (d.attachmentFiles?.length) {
tailSections.push({
title: d.taskType === 'dsfjc' ? '检测材料' : '检测附件',
fields: [],
slot: 'task-attachments'
})
}
return [
{
title: '任务信息',
@@ -789,7 +787,8 @@
{ label: '备注', value: r.remark || '—', span: true }
]
},
...resultSection
...resultSection,
...tailSections
]
})
@@ -1086,32 +1085,6 @@
}
}
.qc-task-view-material-usages,
.qc-task-view-attachments {
padding: 18px 22px;
border-bottom: none;
h3 {
margin: 0 0 14px;
padding-left: 10px;
font-size: 14px;
font-weight: 600;
color: #1e293b;
border-left: 3px solid #10b981;
line-height: 1;
}
}
.qc-task-view-material-table {
width: 100%;
}
.view-material-empty {
margin: 0;
font-size: 13px;
color: #64748b;
}
.view-reception-attachments {
margin-top: 4px;
@@ -11,7 +11,12 @@
@update:model-value="emit('update:modelValue', $event)"
@closed="handleClosed"
>
<div class="donation-view-body" :class="{ 'is-detail-loading': loading && !bundle }">
<div
class="donation-view-body"
:class="{ 'is-detail-loading': loading && !bundle }"
v-loading="loading && !bundle"
element-loading-text="加载中…"
>
<div class="detail-tabs">
<div
v-for="tab in formTabs"
@@ -25,7 +30,7 @@
</div>
<template v-if="bundle">
<div v-loading="loading && !bundle">
<div>
<!-- KPI 摘要条 -->
<div class="kpi-strip">
<div class="kpi-card">
@@ -964,6 +969,8 @@
bundle.value = null
auditRecords.value = []
activeTab.value = 'basic'
loading.value = false
auditLoading.value = false
}
watch(