Files
shanxia2.0/docs/superpowers/plans/2026-10-26-manual-dispatch-calendar.md
T

5.3 KiB
Raw Blame History

手工派车日历 Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development to implement this plan task-by-task.

Goal: 在 Web 与小程序现有日历入口增加独立维护的派车日历,原运输计划日历成为实际派车信息。

Architecture: 独立 FastAPI API、服务、模型和 SQL;共用 TypeScript API/日期分组与分页工具;Web 月历和移动日期列表分别提供维护 UI。接口和验收细节见已确认设计。

Tech Stack: Python 3.9 / FastAPI / SQLAlchemy / MySQL 5.7 / Vue 3 / Element Plus / Vant。

当前开发分支 codex/mobile-eight-pages-qa,依赖未提交的现有日历,原地增量实现,避免新 worktree 丢失当前工作。保留全部不相关改动,不自动提交混合工作区。

  • 后端:新增 app/models/pl_dispatch_calendar.py、schemas/pl/dispatch_calendar.py、services/pl_dispatch_calendar_service.py、api/pl/dispatch_calendar.py;注册路由,SQL 迁移与基线,行为测试先行。测试命令 venv/bin/python -m pytest tests/test_pl_dispatch_calendar.py -q。
  • 共享前端:新增 src/api/pl/dispatch-calendar.ts、src/views/pl/dispatch-calendar/manual-model.ts,先验证整月分页、日期分组与单条计次(包括重复同路线)、复制格式。
  • Web:保留原组件为实际信息组件,入口改为 Tab 容器,新增手工月历及两列表单,车辆和产品搜索分页,详情维护与打印复制。
  • 移动:保留原实际组件,单一会话壳内双 Tab,新增手工日期列表与底部编辑表单,空日可添加,会话变更禁写。
  • 验证:后端与共享模型测试、浏览器双端 CRUD 与错误回归、旧模型回归、定向 lint / build / typecheck / 字段一致性。独立审查后修复发现项。
  • 执行已审核的增量 SQL,验证数据库结构;执行 ./scripts/update-graph.sh 与 graphify update .。记录验证结果和发布边界。

验证记录(2026-10-26)

  • 后端:手工业务、双端HTTP权限、真实角色并集/租户、迁移有效节点及幂等、日期与OpenAPI,加上既有数据scope/日历补充字段回归,共78项通过。
  • 前端:共享手工模型与原Web/移动日历、复制格式共31项测试通过。
  • 浏览器:真实Vue页面配合模拟接口,Web/移动新增→保存失败保留输入→保存→查看→编辑→删除;跨月今天、复制真实剪贴板、加载失败重试、只读隐藏维护入口、320/375/414px适配通过。原实际日历双端浏览器完整回归通过;未声明微信真机验证。
  • 发现并修复:跨月定位被watch重置、移动选择器样式及点击输入事件、SystemViewDialog使用visible契约、停用源菜单不应派生manage、Pydantic2.5日期ge/le导致OpenAPI无效。
  • 定向ESLint(显式声明项目自动导入的ElMessage/ElMessageBox全局)、Stylelint、Prettier通过;生产构建成功(1m16s)。全仓vue-tsc有509项既有错误,本次日历文件0项。
  • 仓库缺少scripts/check_field_consistency.py,已以Create/Update schema与_row_to_dict可写字段对比测试验证。
  • SQL迁移在当前配置库执行两次:首次新增2个维护节点,Web5个角色授权、移动6个;第二次全部0新增。未插入演示业务数据。维护授权只授予有效日历入口与原计划维护权限交集角色,不恢复撤销授权。
  • 本地8000后端已重启,新7个操作在4条OpenAPI路径正常注册;数据库表已可用。
  • backend、web-admin及根知识图谱已增量更新。开发分支和既有未提交工作保留,未混合提交、未部署生产或发布微信。小程序复用既有H5入口,本次不需要修改原生菜单映射,发布需要部署H5及后端和SQL。

用户指定配色与日操作布局(2026-10-26)

  • 手工「派车日历」Tab 双端采用参考 HTML 的深蓝主色 #1f4e79、灰色边框 #cfd6de、正文 #1a1f2b、辅助文字 #5d6673;货品卡使用参考原型色板。覆盖当前 Tab、日期/选择器弹层及手工编辑/详情范围。
  • 每天新增和复制按钮合为右对齐操作组;移动端同排靠右,空日复制禁用。保留原 CRUD、统计和权限规则。
  • 实际派车信息的样式和计算规则保留;移动共享选择器只增加可选弹层样式类,以免影响实际信息 Tab。
  • 验证:双端现有浏览器 CRUD/复制/失败重试/只读权限回归通过;截图核对深蓝配色及日操作右对齐;定向 ESLint、Stylelint、Prettier和生产构建通过;前端及根代码图谱更新完成。

日卡结构对齐原始HTML(2026-10-26)

  • 修正先前仅对齐色板但卡片结构不同的问题。双端共享 ManualDayContent.vue:day-note 单产品居中、多产品横向分色汇总,移除额外合计行;单车次 item 首行车牌/产品/1车,第二行路线;同车多车次 pair 浅蓝整卡,车牌/N车标题和编号明细。备注仍保留并可点击每条任务打开详情。
  • 对齐 HTML 的日格8px内边距/6px间距、汇总11px、任务12px/1.4行高、卡片5px 6px内边距、4px圆角;移动端仅保留必需的44px点击范围。右对齐新增/复制保持。
  • 双端浏览器CRUD/复制/只读/失败重试回归通过;单车次和混合产品多车次截图及计算样式核对通过,定向lint和构建通过。