feat: add historical data management
This commit is contained in:
110
task_plan.md
110
task_plan.md
@@ -4,10 +4,118 @@
|
||||
在已确认的产品、技术与设计基线上,交付可运行的景区排队叫号系统纵向切片,并以自动化测试验证多项目隔离、幂等叫号与隐私边界。
|
||||
|
||||
## Current Phase
|
||||
Phase 36(员工端取号同行人数输入修复)
|
||||
Phase 42(运营统计模块标题区呼吸空间优化)
|
||||
|
||||
## Phases
|
||||
|
||||
### Phase 39: 运营统计经营复盘看板优化
|
||||
- [x] 扩展运营统计数据接口,支持趋势、项目对比、峰值时段和异常摘要
|
||||
- [x] 将运营统计页重构为指标层、趋势层、项目对比层和异常下钻层
|
||||
- [x] 补充筛选、空态、错误态、响应式布局和回归测试
|
||||
- [x] 完成全量测试、类型检查、生产构建与运行态验收
|
||||
- **Status:** complete
|
||||
|
||||
#### Confirmed Decisions
|
||||
| Decision | Result | Why it matters |
|
||||
|---|---|---|
|
||||
| 运营统计看板服务场景 | 经营复盘:按日期/项目查看总量、趋势、效率、异常并支持下钻 | 与实时运营概览分工,避免把历史分析和当前值班监控混在一起 |
|
||||
|
||||
#### Errors Encountered
|
||||
| Error | Attempt | Resolution |
|
||||
|---|---|---|
|
||||
| 在 `server` 工作目录执行时仍使用了包含 `server/` 前缀的格式化路径 | 1 | 改用 `internal/httpapi/...` 相对路径,后端定向测试通过 |
|
||||
| 历史页面回归测试仍断言旧版“取号人数”卡片 | 1 | 更新测试夹具和断言,覆盖经营复盘、每日趋势和项目对比 |
|
||||
| 看板新增“平均等待”在 KPI 与项目对比中各出现一次,旧测试使用唯一文本查询 | 1 | 改为断言匹配数量大于 0,测试通过 |
|
||||
| 小时统计集成夹具按 UTC 写入,测试错误期望为 9/10 点 | 1 | 结合 Asia/Shanghai 业务时区修正为 17/18 点,并验证取号与叫号分桶分离 |
|
||||
| 并行执行全量前端测试和静态检查时,员工页已有测试偶发超时 | 1 | 单独复跑员工页 8 项通过;随后串行执行 `make test`,15 个文件/53 项测试全部通过 |
|
||||
|
||||
### Phase 40: 运营统计看板布局与 UI/UX 收敛
|
||||
- [x] 依据 UI/UX 规范复核看板层级、信息密度、趋势图可读性和响应式排版
|
||||
- [x] 删除“需要关注”前端模块及相关引导文案,保留项目下钻能力
|
||||
- [x] 将看板重排为 KPI、全宽趋势、全宽项目对比、状态与时段节奏四个层级
|
||||
- [x] 修复项目对比在窄屏下的网格错位、间距和可访问性回归
|
||||
- [x] 完成前端定向测试、类型检查、构建和工作态验证
|
||||
- **Status:** complete
|
||||
|
||||
#### Confirmed Decisions
|
||||
| Decision | Result | Why it matters |
|
||||
|---|---|---|
|
||||
| “需要关注”模块 | 删除前端展示,不再在经营复盘页渲染关注卡片或异常引导语 | 看板回到可验证的经营事实,避免把阈值推断当成首页主结论 |
|
||||
| 看板信息层级 | KPI → 每日趋势 → 项目对比 → 状态/峰值/小时节奏 | 减少并列卡片,先看总体,再定位项目,最后看运营节奏 |
|
||||
| 短日期范围趋势 | 少于 4 个营业日显示日卡片摘要,4 天及以上显示 SVG 折线图 | 避免单点/少点折线造成错误的趋势暗示,同时保留日级数据 |
|
||||
|
||||
#### Errors Encountered
|
||||
| Error | Attempt | Resolution |
|
||||
|---|---|---|
|
||||
| 当前管理端路由需要管理员会话,无法直接用未认证浏览器做看板截图 | 1 | 不读取或写入密码/运行数据,改用 UI/UX 规范、源码审计、组件回归和运行态健康检查验证 |
|
||||
|
||||
### Phase 41: 运营统计页视觉层级与排版精修
|
||||
- [x] 完成保留式视觉审计,明确筛选区、指标层、内容卡片和响应式的改版边界
|
||||
- [x] 使用统一指标轨道、视图感知筛选网格和清晰的卡片层级,减少卡片碎片化
|
||||
- [x] 修复历史页空值文案、小时条文字色和移动端间距等细节问题
|
||||
- [x] 保留现有数据、路由、下钻、导出和权限契约,补充页面级 UI 回归断言
|
||||
- [x] 完成定向测试、类型检查、构建和运行态验证
|
||||
- **Status:** complete
|
||||
|
||||
#### Confirmed Decisions
|
||||
| Decision | Result | Why it matters |
|
||||
|---|---|---|
|
||||
| 视觉方向 | 保留现有景区绿色品牌和原生 CSS,不引入新组件库、图片或营销型动效 | 管理端优先可信、可读和稳定,不牺牲信息密度换装饰 |
|
||||
| 指标容器 | 五个 KPI 合并为一张指标轨道,桌面用分隔线,移动端按两列自然折行 | 让指标成为一个整体,减少重复白卡和视觉噪音 |
|
||||
| 筛选布局 | 统计页只展示日期、项目和操作;记录页保留状态和关键词字段 | 消除统计页空列与无效留白,保持各视图控件语义一致 |
|
||||
| 动效 | 仅保留现有 hover/focus/press 反馈,不新增滚动或循环动画 | `MOTION_INTENSITY=2`,运营数据页需要稳定扫描和低干扰 |
|
||||
|
||||
#### Errors Encountered
|
||||
| Error | Attempt | Resolution |
|
||||
|---|---|---|
|
||||
| `design-taste-frontend` 明确不以后台仪表盘为专用范围 | 1 | 采用其保留式重设计、形状一致性、文案自检和交互状态规则;数据图表与响应式细节以 `ui-ux-pro-max` 为主 |
|
||||
|
||||
### Phase 42: 运营统计模块标题区呼吸空间优化
|
||||
- [x] 依据用户截图定位每日趋势、项目对比、状态分布和高峰时段的标题区拥挤问题
|
||||
- [x] 统一增加卡片内边距、标题与副标题间距、标题区与数据区间距
|
||||
- [x] 保留项目行、峰值列表、状态列表和趋势数据结构,不改变业务交互
|
||||
- [x] 补充样式回归检查并完成前端测试、类型检查和构建验证
|
||||
- **Status:** complete
|
||||
|
||||
#### Confirmed Decisions
|
||||
| Decision | Result | Why it matters |
|
||||
|---|---|---|
|
||||
| 标题区处理 | 四个模块统一使用宽松的卡片内边距和独立标题区,不分别打补丁 | 保持同一页面的节奏一致,避免每张卡的标题位置不同 |
|
||||
| 内容区分隔 | 标题区下方增加明确留白,数据列表/趋势从标题区之后开始 | 让标题、副标题和数据各自形成可扫描的视觉层级 |
|
||||
| 响应式 | 桌面提升水平留白,移动端保留可用宽度并同步增加垂直间距 | 解决桌面拥挤的同时避免窄屏内容被压缩或横向溢出 |
|
||||
|
||||
#### Evidence
|
||||
| Source | Finding |
|
||||
|---|---|
|
||||
| 用户提供的运营统计截图 | 每日趋势、项目对比、状态分布和高峰时段的标题/副标题贴近卡片边线,标题区与首个数据区缺少缓冲空间 |
|
||||
|
||||
### Phase 38: 后台历史数据管理功能实施
|
||||
- [x] 实现历史数据后端接口、查询过滤、统计聚合、详情与 CSV 导出
|
||||
- [x] 接入管理端历史数据入口与排队/叫号/统计三视图
|
||||
- [x] 补充脱敏、审计、索引和 90 天匿名化策略验证
|
||||
- [x] 运行 Go/前端测试、类型检查、构建与数据库烟测
|
||||
- **Status:** complete
|
||||
|
||||
#### Errors Encountered
|
||||
| Error | Attempt | Resolution |
|
||||
|---|---|---|
|
||||
| PostgreSQL 将匿名化维护条件 `$1 - interval '90 days'` 推断为 interval,导致 `timestamp with time zone <= interval` | 1 | 为参数增加 `::timestamptz` 显式转换,待重新运行真实数据库验证 |
|
||||
| PostgreSQL 历史接口集成夹具使用大写项目编码,触发项目编码校验 | 1 | 将测试夹具项目编码改为小写格式,重新验证通过 |
|
||||
| 直接调用详情 handler 的测试请求未设置 Go 1.22 `PathValue` | 1 | 在测试请求上显式设置 `id` 路径值,重新验证通过 |
|
||||
| 根目录执行 `pnpm typecheck` 找不到 `package.json` | 1 | 按项目脚本约定改用 `make` 或在 `web` 子目录执行,验证通过 |
|
||||
|
||||
### Phase 37: 后台历史数据管理功能规划
|
||||
- [x] 核对现有管理端导航、权限、历史事实表和个人信息清理机制
|
||||
- [x] 形成历史记录、叫号批次、运营统计、导出和治理边界
|
||||
- [x] 形成页面、接口、索引、权限、隐私和验收建议
|
||||
- [x] 确认“90 天后原始业务事件”保留匿名明细与统计、删除个人关联信息
|
||||
- **Status:** complete
|
||||
|
||||
#### Risks / Open Decisions
|
||||
| Decision | Current recommendation | Why it matters |
|
||||
|---|---|---|
|
||||
| 90 天后的历史明细 | 已确认:保留匿名明细与长期统计,删除个人关联信息且不可恢复 | 会决定清理任务、查询范围、导出字段和验收标准 |
|
||||
|
||||
### Phase 36: 员工端取号同行人数输入修复
|
||||
- [x] 复现并定位同行人数输入框被 `1` 固定的状态更新原因
|
||||
- [x] 允许用户正常清空后输入合法人数,同时保留项目人数上下限校验
|
||||
|
||||
Reference in New Issue
Block a user