车辆运输服务:数据与媒体架构
现场金额以 USD 输入并显示(例如 300.00);浏览器提交时转换为整数美分保存,避免浮点累加。独立 VEHICLES_DB、VEHICLES_MEDIA、访问码和 HttpOnly 会话;preview/pilot 分离。浏览器只通过 /api/vehicles,不写 localStorage 业务副本。正式 pilot 已以 100% 合成 QA fixture 验收三条锁定订单与 6 个授权媒体,且无会话读取为 401、跨采集者及 group 私有读取为 403;不表示真实客户、合同或现场媒体已经接入。
订单及关联字段
| 记录 | 字段 | 关系/保留原则 |
|---|---|---|
| vehicles | registration, vehicleType, capacityKg, inspectionValidUntil, status, version | 可更新并审计 |
| drivers | name, licenseRef, licenseValidUntil, status, version | 可更新并审计 |
| orders | clientName, contractRef, origin, destination, plannedPickupAt, plannedDeliveryAt, cargoDescription, plannedWeightKg, vehicleId, driverId, billingBasis, rateMinor, currency, budgetMinor, notes, status, createdBy, version | VO-UUID;非 scheduled 或已有后续记录不可修改 |
| inspection/events/delivery | 检查全部布尔事实、时间、里程、地点、签收人、重量来源、状况、说明 | 追加,不覆盖;旧签收保留 |
| costs/settlement/audit | category, amountMinor, litres, occurredAt, note, decision;收入/成本/差额/距离/重量;action | 拒绝费用不计成本;锁定保留不可变快照 |
| media | orderId, purpose, filename, mimeType, sizeBytes, durationSeconds, capturedAt, description, hash, objectKey, status, error, version | 内容寻址;init → 实际 PUT → 服务端确认 |
R2 与访问边界
允许 PNG/JPEG/WebP/MP4,试用单件 25 MiB;不声称已转码或压缩。采集人员仅操作自己委托,reviewer/admin按权限读取,group 仅明确许可的汇总且不能访问私有媒体。所有写入带 Idempotency-Key;订单动作带 version,媒体 PUT 带 If-Match。