Preserve August hydrogen revision and September audit evidence; calculate interrupted vehicle history across all prior months. Record remaining carry-policy and layout-baseline discrepancies.
5.2 KiB
里程绩效:原型与 API 对接
页面与业务流程
月度核算展示本次批次的考核明细;异常核对定位缺少里程、来源冲突、交车区间重叠;详情按车牌和租赁记录追溯到每日来源及原始行。数据接入接收租赁区间和三类里程长表。规则中心明确参与车辆、有效期、测试候选、来源提供方优先级。API 对接页面展示真实接口状态与契约。
演示数据完全虚构。真实模式与演示模式不混用结果。当前只提供试算,不模拟已审批或已发放。
已接通的本机接口
前端相对路径 /api,开发代理转发 http://127.0.0.1:8765 并移除 /api。JSON 返回 UTF-8;错误体 { "error": "说明" }。状态码 200/201 成功、400 请求错误、404 快照不存在、409 有异常禁止导出。
| 方法 | 路径 | 请求与结果 |
|---|---|---|
| GET | /health | 服务状态、引擎 version |
| POST | /imports/leases | 原始 xlsx 二进制;返回 id、raw_rows、accepted_rows、issues |
| POST | /imports/mileage?source=hydrogen&provider=guangzhou | 原始 xlsx;source 支持 hydrogen/tbox/gps,provider 需与规则对应 |
| GET | /imports/{id} | 标准化导入快照、行和错误 |
| POST | /assessments | 下方请求;返回 id/status/summary/issues |
| GET | /assessments/{id} | records、daily_trace、issues、excluded、inputs、engine_version |
| GET | /assessments/{id}/export.xlsx | ready 时导出业务考核源表;异常返回 409 |
{
"lease_import_id": "导入返回的64位ID",
"mileage_import_ids": ["里程导入ID"],
"config": {
"month": "2026-08",
"test_plates": [],
"test_threshold_km": 50,
"source_priority": {
"hydrogen": ["guangzhou"],
"tbox": ["vehicle-platform"],
"gps": ["g7", "dongfang", "xinda", "guangan"]
},
"rules": [{
"plate": "DEMO-001", "target_id": 1,
"target_name": "交投40辆4.5T普货", "monthly_target_km": 3000,
"valid_from": "2026-08-01", "valid_to": "2026-08-31"
}]
}
}
文件最大 20 MB,解压后最大 200 MB,表头必须在前十行。里程表必填 plate_number,date,mileage_km(日里程,km)。租赁表字段:vehicle_id,plate_number,contract_id,contract_code,project_name,customer_name,business_department_name,business_manager_name,delivery_vehicle_id,delivery_time,return_vehicle_task_id,return_time。未还车可留空最后两项。里程空值不可当零;合法零必须保留。来源提供方顺序用于按日补缺,不能叠加多个 GPS 提供方。
ID 为内容哈希,同输入生成相同快照标识。调用方应保存 ID 并随批次保存输入、规则和引擎版本;重新补数生成新批次,不覆盖旧批次。
最新规则与旧 API 的明确差异
依据项目 8 月说明顶部的当前口径:非测试日有纯氢(含 0)取纯氢,无纯氢取仪表;测试日取 GPS;测试候选日无法判定且无纯氢时兜底 GPS。现有 API 则按区间选来源并对测试日清零,不能直接固化为正式规则。规则中心的 JSON 参数只能配置现有引擎支持项,不能靠改参数完成算法迁移。
最新四名离职人员为全部奖金剔除,不发放不转交。历史说明存在被覆盖的停发、转接口径,应采用带生效月份和批准记录的规则版本。结转、累计补发、历史有效奖励和归属分段需从 calc_engine.py 与最新计算入口抽离;不能以简单完成率乘奖金替代。
后续系统设计(建议契约,尚未实现)
建议实体:source_snapshot、lease_segment、daily_mileage、rule_version、assessment_batch、assessment_record、bonus_ledger、review_event。逐日依据关联来源行;奖金账本以车辆、负责人、政策有效期和所属月份为粒度,金额使用整数分或 Decimal。
建议新增接口:
POST /v1/sync-jobs:按月份从车辆平台、租赁系统及 GPS 拉取快照,返回 job_id;通过GET /v1/jobs/{id}查询进度与失败原因。GET/POST /v1/rule-versions:草稿规则、版本、生效期和审批记录。POST /v1/assessment-batches:固定输入快照 ID、规则版本 ID、历史账本版本,异步执行;支持 Idempotency-Key。GET /v1/assessment-batches/{id}/records:分页与服务端筛选;详情包含分段和每日证据。GET /v1/assessment-batches/{id}/bonus-ledger:当月、结转、历史补发、累计补发及剔除依据。POST /v1/assessment-batches/{id}/submit、/approve、/lock:核算员提交、复核人审批、财务锁定。未解决异常禁止提交;输入变更后重建批次,锁定结果不可直接改写。
待对接系统提供:租赁区间接口、车辆唯一键、人员及归属变更接口、每日纯氢/仪表/GPS 接口、分页与增量游标、鉴权方法和限流规则。供应商密钥放服务端,不存前端。补数、重复记录、换牌、跨月交还车和跨月规则变更应有回归样本。
验收重点
真实零与空值区分;同日多源仅补缺;交还车及负责人切换不重不漏;测试日判定与所取来源可追溯;单条金额舍入后再汇总;历史奖励不被新政策追溯修改;异常阻止正式导出;同输入可复算;快照不可变。