{ "version": "1.1", "custom_checks": { "is_valid_date": "检查日期格式是否为 YYYY-MM-DD", "is_positive_number": "检查是否为正数(整数或浮点数)", "is_positive_integer": "检查是否为正整数", "is_valid_vehicle": "检查交通工具能否落到财务系统的下拉框上(含 train→火车 等别名)" }, "travel": { "description": "差旅报销校验规则", "fields": [ { "path": ["basic_info", "travel_purpose"], "required": true, "check_empty": true, "max_len_bytes": 100, "description": "出差事由" }, { "path": ["basic_info", "travel_location"], "required": true, "check_empty": true, "description": "出差地点" }, { "path": ["basic_info", "start_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "出差开始日期" }, { "path": ["basic_info", "end_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "出差结束日期" } ], "arrays": [ { "path": ["reimbursement_details", "transport_fee"], "min_items": 1, "description": "交通费用明细", "element_fields": [ {"path": ["vehicle_type"], "required": true, "check_empty": true, "custom_check": "is_valid_vehicle", "description": "交通工具类型(火车/汽车/轮船/自带车/公务车/飞机/租车/自驾车,也接受 train/car/plane 等英文写法)"}, {"path": ["start_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "出发日期"}, {"path": ["end_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "到达日期"}, {"path": ["departure_place"], "required": true, "check_empty": true, "description": "出发地"}, {"path": ["arrival_place"], "required": true, "check_empty": true, "description": "目的地"}, {"path": ["amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "金额"}, {"path": ["bill_count"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "票据张数"}, {"path": ["remark"], "required": true, "check_empty": false, "max_len_bytes": 100, "description": "备注说明(财务后端超宽直接 500,见 config/README 或 AGENTS.md)"} ] }, { "path": ["reimbursement_details", "hotel_fee"], "min_items": 0, "description": "住宿费用明细(没有住宿时可整段缺省)", "element_fields": [ {"path": ["checkin_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "入住日期"}, {"path": ["checkout_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "退房日期"}, {"path": ["days"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "住宿晚数"}, {"path": ["person_count"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "住宿人数"}, {"path": ["invoice_amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "发票金额"}, {"path": ["reimburse_amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "报销金额"}, {"path": ["remark"], "required": true, "check_empty": false, "max_len_bytes": 100, "description": "备注说明"} ] }, { "path": ["reimbursement_details", "conference_fee"], "min_items": 0, "description": "会务费/培训费明细(没有会务费时可整段缺省)", "element_fields": [ {"path": ["bill_count"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "票据张数"}, {"path": ["amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "金额"}, {"path": ["remark"], "required": true, "check_empty": false, "max_len_bytes": 100, "description": "备注说明"} ] }, { "path": ["payment_methods"], "min_items": 1, "description": "支付方式记录", "element_fields": [ {"path": ["card_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "刷卡日期"}, {"path": ["card_amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "支付金额"}, {"path": ["merchant"], "required": true, "check_empty": true, "max_len_bytes": 100, "description": "商户名称"}, {"path": ["remark"], "required": true, "check_empty": false, "max_len_bytes": 100, "description": "备注"} ] }, { "path": ["subsidy_list"], "min_items": 1, "description": "补助清单", "element_fields": [ {"path": ["person_id"], "required": true, "check_empty": true, "description": "人员工号"}, {"path": ["person_name"], "required": true, "check_empty": true, "description": "人员姓名"}, {"path": ["start_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "补助开始日期"}, {"path": ["end_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "补助结束日期"}, {"path": ["days"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "补助天数"} ] }, { "path": ["attachments"], "min_items": 0, "description": "附件列表", "element_fields": [ {"path": ["filename"], "required": true, "check_empty": true, "description": "文件名"}, {"path": ["attachment_type"], "required": true, "check_empty": true, "description": "附件类型"}, {"path": ["attachment_desc"], "required": false, "check_empty": false, "max_len_bytes": 100, "description": "附件说明"} ] } ] }, "normal": { "description": "普通报销校验规则", "fields": [ { "path": ["basic_info", "reimbursement_description"], "required": true, "check_empty": true, "max_len_bytes": 40, "description": "报销说明(财务系统里这栏很短,20 个汉字以内)" }, { "path": ["reimbursement_details", "total_invoices"], "required": true, "check_empty": true, "custom_check": "is_positive_integer", "description": "发票总数" }, { "path": ["reimbursement_details", "total_amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "总金额" } ], "arrays": [ { "path": ["payment_methods"], "min_items": 1, "description": "支付方式记录", "element_fields": [ {"path": ["card_date"], "required": true, "check_empty": true, "custom_check": "is_valid_date", "description": "刷卡日期"}, {"path": ["card_amount"], "required": true, "check_empty": true, "custom_check": "is_positive_number", "description": "支付金额"}, {"path": ["merchant"], "required": true, "check_empty": true, "max_len_bytes": 100, "description": "商户名称"}, {"path": ["remark"], "required": true, "check_empty": false, "max_len_bytes": 100, "description": "备注"} ] }, { "path": ["attachments"], "min_items": 0, "description": "附件列表", "element_fields": [ {"path": ["filename"], "required": true, "check_empty": true, "description": "文件名"}, {"path": ["attachment_type"], "required": true, "check_empty": true, "description": "附件类型"}, {"path": ["attachment_desc"], "required": false, "check_empty": false, "max_len_bytes": 100, "description": "附件说明"} ] } ] } }