2026-09-30-void-cancel-reason-required-design.md 2.1 KB

作废可选原因(独立字段)— 设计文档

日期: 2026-09-30
状态: 已确认待实现
仓库: shanxia2.0(backend/ + web-admin/ + miniprogram/)
OpenSpec: openspec/changes/void-cancel-reason-required/
对齐: 合同 / 调价函独立字段形态;本批原因非必填(合同/调价函仍保持其原有必填策略)

背景与问题

多处「作废」仅确认对话框,无原因落库。用户要求补齐独立字段以便有原因时展示与审计,并明确:作废原因非必须填写。

已确认决策

# 决策 说明
D1 存储方案 独立字段三元组(原因 + 时间 + 操作人),不拼 remark
D2 CRM 报价单 invalid_reason / invalid_time / invalid_by
D3 PL 业务 cancel_reason / cancel_time / cancel_by
D4 地磅 void_reason / void_time / void_by
D5 原因形态 自由文本;选填,不阻塞作废;不引入字典
D6 空原因时 原因列 NULL;仍写 time / by
D7 历史数据 不回填
D8 加油恢复 清空 cancel 三元组
D9 范围外 合同/调价函不改;公开出入库页作废另议

涉及表(均需 SQL + Model)

表 字段前缀
crm_quote invalid_
pl_plan cancel_
pl_vehicle_fuel_register cancel_
pl_vehicle_recharge_apply cancel_
pl_vehicle_maintenance_apply cancel_
pl_vehicle_urea_apply cancel_
pl_freight_settlement cancel_
db_weighing_slip void_

每组:*_reason varchar(500)、*_time datetime、*_by varchar(64),均可 NULL。

前端入口

Web:报价单、运输计划(含 m/pl)、加油、充值、维保、尿素、结算、地磅——作废弹窗含选填原因。
小程序:充值申请、加油登记、地磅——可填原因,可空提交。

详细设计

见 OpenSpec:openspec/changes/void-cancel-reason-required/design.md 与 specs/void-cancel-reason/spec.md。