Files
zkxw/backend/graphify-out/.graphify_incremental.json
T
zlwuandCursor 06db3bc966 feat(permission): replace OA roles with post-bound roles and assignee posts
Unify effective roles via post-role bindings, remove dedicated OA role UI, and update OA assignee resolution plus related SQL/docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 17:41:04 +08:00

1 line
35 KiB
JSON

{"files": {"code": ["/Users/wuzilong/work/00code/zkxw/backend/app/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "/Users/wuzilong/work/00code/zkxw/backend/app/tasks/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_pay.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/database.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/db_collation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/qc_material_amount_auth_constants.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/context.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/exceptions.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_message.py", "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/base.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/qc_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/storage_occupancy.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/quotation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_parameter_value.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_parameter.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_banner.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order_adjust.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/qc_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_release_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_handover.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/equipment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_result.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_occupancy.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sop_document.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_production_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/biz_no_generator.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_infusion_confirm.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_infusion_schedule_mgmt.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/clean_room.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/equipment_snapshot.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_application.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task_step_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_product_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_amount_auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/oa_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/api_request_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/ethnic.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_formula.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_checkup.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_handover_inventory.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_record.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/oa_receive_account.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_inspection_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_prep.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_handover.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_lab_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_outbound_status_sync.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/base.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_donation_convert.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/market.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_production_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_infusion_confirm.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_infusion_schedule_mgmt.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/storage_entry_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_application.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pre_transit_sample.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/oa_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/env_detect.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/ethnic.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_checkup.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/protocol_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_engine.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/qc_work_order_fee_summary.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/storage_facility_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_person_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/qc_work_order_conclusion.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_dept_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_publish.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_confirmation_date.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_trip_days.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_sample_list_summary.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_related_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_leave_hours.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_resignation_kit_sync.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_receive_account.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_owner_fields.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_money_field.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_pay_mode_switch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_post_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_confirmation_kit_sync.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_formula.py", "/Users/wuzilong/work/00code/zkxw/backend/app/ws/__init__.py"], "document": [], "paper": [], "image": [], "video": []}, "total_files": 241, "total_words": 294814, "needs_graph": true, "warning": "Large corpus: 241 files \u00b7 ~294,814 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.", "skipped_sensitive": ["/Users/wuzilong/work/00code/zkxw/backend/app/core/login_rsa_default.pem"], "graphifyignore_patterns": 0, "incremental": true, "new_files": {"code": ["/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/oa_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/oa_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_engine.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_person_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_dept_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_publish.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_confirmation_date.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_trip_days.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_related_approval.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_leave_hours.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_resignation_kit_sync.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_owner_fields.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_confirmation_kit_sync.py"], "document": [], "paper": [], "image": [], "video": []}, "unchanged_files": {"code": ["/Users/wuzilong/work/00code/zkxw/backend/app/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "/Users/wuzilong/work/00code/zkxw/backend/app/tasks/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_pay.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/database.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/db_collation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/qc_material_amount_auth_constants.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/context.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/exceptions.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_message.py", "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/base.py", "/Users/wuzilong/work/00code/zkxw/backend/app/models/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/qc_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/storage_occupancy.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/quotation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_parameter_value.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_parameter.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_banner.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order_adjust.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/qc_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_release_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_handover.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category.py", "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/equipment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_result.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_occupancy.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sop_document.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_production_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/biz_no_generator.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_infusion_confirm.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_infusion_schedule_mgmt.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/clean_room.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/equipment_snapshot.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_entry_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_application.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_check.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task_step_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_product_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_amount_auth.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/api_request_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/ethnic.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_formula.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_checkup.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_item.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_handover_inventory.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_record.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/oa_receive_account.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_inspection_batch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_prep.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_handover.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_lab_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_outbound_status_sync.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_stock_log.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/base.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_donation_convert.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/crud/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/storage_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/outbound_release_review.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/production_material.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/market.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_production_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/cleanroom_garment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_infusion_confirm.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_infusion_schedule_mgmt.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/__init__.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/storage_entry_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_application.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pre_transit_sample.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_delivery.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/env_detect.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/ethnic.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_checkup.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_sms_notification.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/protocol_sample_collection.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "/Users/wuzilong/work/00code/zkxw/backend/app/api/clinical_payment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/qc_work_order_fee_summary.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/storage_facility_code.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/qc_work_order_conclusion.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_sample_list_summary.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_assignee.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_receive_account.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_money_field.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_pay_mode_switch.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_post_select.py", "/Users/wuzilong/work/00code/zkxw/backend/app/services/oa_formula.py", "/Users/wuzilong/work/00code/zkxw/backend/app/ws/__init__.py"], "document": [], "paper": [], "image": [], "video": []}, "new_total": 20, "deleted_files": []}