feat: add party-size queueing and call modes

This commit is contained in:
wangxuming
2026-07-16 11:40:34 +08:00
parent 7f751bebae
commit 66951b4dc3
53 changed files with 3348 additions and 533 deletions

View File

@@ -4,10 +4,68 @@
在已确认的产品、技术与设计基线上,交付可运行的景区排队叫号系统纵向切片,并以自动化测试验证多项目隔离、幂等叫号与隐私边界。
## Current Phase
Phase 29游客手机号运营测试查询
Phase 36员工端取号同行人数输入修复
## Phases
### Phase 36: 员工端取号同行人数输入修复
- [x] 复现并定位同行人数输入框被 `1` 固定的状态更新原因
- [x] 允许用户正常清空后输入合法人数,同时保留项目人数上下限校验
- [x] 补充输入交互回归测试并完成页面验证
- **Status:** complete
#### Errors Encountered
| Error | Attempt | Resolution |
|---|---|---|
| 新增的“先清空再输入”回归断言在旧实现下收到值 `1` 而不是空值 | 1 | 作为缺陷复现基线保留;下一步修改表单草稿类型与 `onChange`,让编辑过程允许短暂空值 |
| 代码和测试修复后,自动化直接 `fill("")` 首次仍显示 `1` | 1 | 确认 Vite 已加载新源码;改用用户真实操作的全选 + Backspace 后值稳定为空,再输入 `3` 成功,判定为数字输入框与自动化 `fill` 的行为差异 |
### Phase 35: 员工端队列按 10 个增量展开
- [x] 确认前端与 API 服务已启动并通过健康检查
- [x] 将“查看更多”从一次展开全部改为每次追加 10 个号码
- [x] 保留收起能力,并在项目/场景切换时恢复默认 10 个
- [x] 补充增量展开回归测试并完成全量验证
- **Status:** complete
### Phase 34: 员工端批量叫号按钮与指标分隔优化
- [x] 将两个批量操作统一为浅色风格,并改名为“批量叫号 / 批量叫人”
- [x] 补回移动端“下一个号 / 下个号人数”之间的竖向分割线
- [x] 更新员工端回归测试,保持叫号模式、参数与禁用逻辑不变
- [x] 完成类型检查、全量测试、生产构建、真实页面和截图对照验收
- **Status:** complete
#### Errors Encountered
| Error | Attempt | Resolution |
|---|---|---|
| 已释放后重新接管的预览标签在 `fullPage` 截图中出现横向压缩,但 DOM 盒模型和普通视口截图均正常 | 1 | 不使用失真的全页图作为证据,改用同一 390×844 标签的普通视口截图并核对实际盒模型尺寸 |
| 追加 Phase 34 验收记录时误用了 Phase 33 的二级标题上下文 | 1 | 读取当前计划后改用实际三级标题和更小补丁,未影响业务文件 |
### Phase 33: 项目新建/维护表单结构化
- [x] 将现有字段归纳为“基础信息 / 叫号规则 / 其他规则”三个语义分组
- [x] 优化默认值与单次上限的成对布局,保留现有提交契约
- [x] 确保新建和维护页面共享结构,并补充可访问语义回归测试
- [x] 完成类型检查、前端测试、生产构建与页面验收
- **Status:** complete
#### Errors Encountered
| Error | Attempt | Resolution |
|---|---|---|
| 带辅助文案的上限字段使成对输入框基线错位 | 1 | 将分组内 `.field` 设为顶部对齐1440px 桌面与 390px 窄屏复验均通过 |
### Phase 32: 员工端叫号指标与队列展示优化
- [x] 删除统一叫号模块内部横向分隔线,并统一按号码/按人数按钮颜色
- [x] 将叫号指标调整为下个号人数、剩余未叫号、剩余未叫人数
- [x] 将队列行改为三列均匀对称布局,默认展示 10 个号码并支持展开/收起
- [x] 移除队列内部滚动容器,让展开内容随页面自然延展
- [x] 完成自动化、构建、真实页面和截图对照验收
- **Status:** complete
#### Errors Encountered
| Error | Attempt | Resolution |
|---|---|---|
| Product Design 用户上下文预检脚本按插件根目录推断路径时不存在 | 1 | 使用技能目录内实际脚本 `skills/user-context/scripts/user_context_preflight.py` 重新执行,确认无已保存用户上下文 |
| 由手机视口切换到桌面视口后直接刷新,应用内预览页重新挂载超时 | 1 | 保留现有浏览器连接,按故障指引新建同浏览器标签后继续桌面验收 |
### Phase 28: 创建项目与项目维护表单统一
- [x] 让创建项目复用项目维护的完整字段与布局
- [x] 保证创建提交的项目配置与页面默认值一致
@@ -322,6 +380,12 @@ Phase 29游客手机号运营测试查询
| 前端生产构建发现 BatchCard 测试仍传入已删除的 `readOnly` 属性 | 1 | 删除两个遗留测试属性后类型检查和生产构建通过 |
| 本轮首次连接本地浏览器时运行时尚未初始化 | 1 | 按浏览器技能规范初始化运行时后重新连接,未影响代码验证 |
| 本轮一次 Go 回归从仓库根目录执行,未找到 `server/go.mod` | 1 | 改在 `server/` 模块目录执行,时区回归测试通过 |
| Phase 31 初始化误将既有长期台账当作新文件 | 1 | 立即从 HEAD 精确恢复三份台账,确认无差异后改为只追加本轮记录;业务代码未受影响 |
| Phase 31 首次追加台账时误判 `progress.md` 标题 | 1 | 读取真实标题 `# Progress Log` 后改用精确上下文,不重复原失败补丁 |
| Phase 31 基线测试命令经 `pnpm` 透传后运行了全部前端测试,暴露 2 个既有游客查询测试失败 | 1 | 不修改无关游客功能;改用 `pnpm exec vitest run src/pages/StaffPage.test.tsx` 精确执行目标测试,并在最终全量验证中单独说明既有失败边界 |
| Phase 31 更新验证进度的补丁包含空 hunk | 1 | 删除无效 hunk 并按两个文件的精确上下文重新追加,业务代码与验证结果不受影响 |
| 浏览器连接在登录后打印 Statsig 外部初始化超时 | 1 | 页面导航、登录和 DOM 均正常完成;按应用自身控制台与页面状态继续验收,不把浏览器宿主统计请求误判为产品故障 |
| 浏览器手动删除通知分成两个步骤后,通知已先达到 5 秒自动消失 | 1 | 该结果先证明自动清理生效;手动路径改为在同一次浏览器调用内触发新通知并立即删除,避免工具往返时间干扰 |
## Phase 30 — 手机号查询后进入独立号码页2026-07-15
@@ -334,3 +398,13 @@ Phase 29游客手机号运营测试查询
- 所有网络资料保留来源链接和访问时间2026-07-10
- 关键架构决策前重读本计划与 findings.md。
- taste 只用于反模板化与视觉纪律不直接主导后台仪表盘GSAP 只用于有明确状态/层级目的的编排。
### Phase 31: 员工端叫号模块合并、置顶与通知自动消失2026-07-15
- [x] 审计员工端当前叫号状态、通知、布局和既有未提交改动
- [x] 叫号通知支持手动关闭,并在创建 5 秒后自动消失
- [x] 按号码数量和按人数叫号合并为一个顶部大模块
- [x] 删除两个模式小标题,只保留“按号数/人数叫号”主标题
- [x] 整个叫号模块在员工页滚动时保持置顶
- [x] 补齐定时、手动关闭、文案和滚动布局回归测试
- [x] 通过前端测试、类型检查、生产构建和视觉验收
- **Status:** complete