2026-10-29-dispatch-calendar-other-kind-design.md 2.9 KB

派车日历增加「其他日历」设计

用户已于 2026-10-29 确认方案 1(扩展 calendarKind)并授权撰写本设计。

需求与边界

现有 Web /pl/calendar-module/dispatch-calendar 与小程序 H5 /m/pl/dispatch-calendar 页内 Tab 为:酸派车日历、碱派车日历、实际派车信息。客户需要在「碱派车日历」之后增加「其他日历」,用于酸/碱以外其他产品的手工派车。

「其他日历」功能、交互、样式与酸/碱手工日历完全一致;两端(Web + H5)同步增加。产品与车辆选择器仍共用现有主数据接口,不按产品分类过滤。实际派车信息 Tab 行为与样式不变。不新增菜单或权限码,继续使用现有 dispatch-calendar:list / dispatch-calendar:manage(Web 与 mini 前缀)。

展示与交互

Tab 顺序固定为:

  1. 酸派车日历(acid)
  2. 碱派车日历(alkali)
  3. 其他日历(other)
  4. 实际派车信息(actual)

手工三类 Tab 均挂载现有 ManualCalendar,仅传入不同的 calendarKind 与标题;「其他日历」标题文案为「其他日历」。主题 class manual-calendar-theme 在 acid / alkali / other 时启用。不新增独立组件、不改手工日历视觉主题。

模式沿用既有:P08 页内 Tab + P01 简单 CRUD + P09 查看弹窗 + P27 日历派生展示。

数据与接口

继续使用表 pl_dispatch_calendar。calendar_kind 允许值由 acid | alkali 扩展为 acid | alkali | other。列类型已是 varchar(16),无需改列结构;补充幂等迁移仅更新字段 COMMENT,并同步模型注释与 docs/sql 基线注释(若仓库有对应 DDL 快照)。

列表、详情、创建、更新、删除均按当前 Tab 的 calendarKind 隔离;三类手工数据互不可见。更新时不允许修改 calendarKind(与酸/碱现状一致)。非法 calendarKind 返回 422。

API 路径与参数形状不变:查询参数 / 请求体字段 calendarKind 增加合法值 other。车辆、产品选项接口不变。

改动面

层 改动
后端 service / schema / model CALENDAR_KINDS 与校验文案纳入 other;COMMENT 同步
后端测试 other 隔离、非法 kind、不可跨类型改 kind
Web / H5 入口 Tab + ManualCalendar 挂载;主题 class 覆盖 other
前端类型 DispatchCalendarKind 增加 'other'
SQL 新迁移更新 COMMENT;必要时同步 docs/sql 注释
前端相关单测 / 浏览器脚本 若硬编码仅 acid/alkali,则扩展覆盖 other

验收

  • 两端四个 Tab 可见且顺序正确;「其他日历」CRUD、筛选、复制、汇总与酸/碱一致(Web 另含打印)。
  • other 记录与酸/碱互不串;不可将记录的 calendarKind 改成另一类型。
  • 实际派车信息无回归;非法 calendarKind 仍 422。
  • 定向后端测试、前端相关测试、定向 lint、图谱增量更新通过。