Gaima POS 项目控制台 / 2026-05-22

本地 DB + SQLite repository adapter 主线继续收窄 POS 可见写路径

当前切片把 Visible POS 的 modifier 加菜和 combo 加菜接入 async local-service opt-in 路径,未配置 async 时继续使用 snapshot fallback。该切片复用 durable order.append_lines_to_table,没有引入新的 local-service 命令类型,也没有扩大到打印硬件、支付 provider、平台 adapter 或 split bill。

基线提交 cdcae60 feat: add async line facts flow
当前工作区 codex/pos-async-modifier-combo-add
最新完成切片 Visible POS Async Modifier/Combo Add Migration
下个默认候选 QR Partial-acceptance Batch Command

最新完成

Visible POS Async Modifier/Combo Add Migration

仍然是 async opt-in
Runtime

复用 append-lines

  • 没有新增 local-service command type。
  • modifier selections 和 combo step selections 进入同一个 append-lines payload。
  • 成功后从 persisted JSON order hydrate 回 POS UI draft。
Visible POS

三条可见写路径

  • zero-step combo 直接加菜。
  • combo drawer 完成后加菜。
  • modifier drawer 完成后加菜。
Fallback

未配置 async 不变

  • snapshot runtime 仍是默认路径。
  • async 失败保留原 visible order。
  • 成功后选中新加的 line。

已确认约束

后续 agent 不应重新提问的事实

这些是开发约束,不是待决问题;请继续按小切片推进。

本地运行

每店本地 DB

  • 每家店有自己的本地 DB。
  • 电脑端 local-service 是订单、print queue、本地 DB 的唯一写入口。
  • iPad / QR / POS UI 不直接写 SQLite 文件。
锁与会话

30 秒 TTL

  • heartbeat 间隔 10 秒。
  • session / lock TTL 30 秒。
  • 同桌 append-only 加菜不需要长编辑锁。
订单语义

Close 才是截点

  • 付款记录不会清空或归档订单。
  • 正余额阻止 Close。
  • QR cart partial validation 应接受有效行并返回失败项。

模块进度估计

当前核心闭环

百分比是工程优先级估计,不是发布承诺。

Local Runtime / DB

SQLite repository、command log、session/lock、async runtime 主线稳定。

POS Order Entry

plain item、modifier/combo、line facts、payment/Close、confirm/print 可 async opt-in。

Printing Queue

队列事实、路由、retry/admin 基础已稳定;真实硬件 transport 未开始。

Payments

本地 payment rows / Close lifecycle 已落地;真实 provider adapters 仍是 P2。

Online / QR

QR partial-acceptance batch 是下个合理候选;平台订单 adapter 仍保持后置。

模块地图

下一步仍然只选一个主模块

继续保持小切片:每轮只迁移或补齐一条边界,并同步 handoff。

模块 状态 完成事实 下一步 风险边界
Local Runtime / DB 本地离线可靠性 93% SQLite schema/repository、command log、session/lock、transport、HTTP harness、async order/session runtime 已稳定。 继续把 QR batch 这类外部提交入口收进 local-service 命令边界。 UI 不得直接写 SQLite;catalog 仍有委托 in-memory 的阶段性边界。
POS Order Entry 前台点单 88% plain item、modifier/combo、line facts、payment/Close、confirm/print 已可 async opt-in。 除非发现回归,否则不要继续扩大 POS 写路径;转向 QR partial acceptance。 不要把 split bill、平台 adapter、硬件打印混进 POS add-line 切片。
Printing System 打印系统 72% PrintJob queue、routing、retry/admin、worker 状态机基础已完成。 真实硬件 transport 等用户拍板后单独做。 不要把真实 ESC/POS 与当前 async POS 迁移混在一起。
Payments 支付与结账 62% 本地 payment rows、manager discount、Close + customer copy 语义已落地。 保持 provider adapters 为 P2,先稳定本地订单事实。 Square/Clover/Stripe 不要提前影响 local-service 核心模型。
QR / Platform Orders 外部提交入口 16% 已确认 QR partial validation 语义:接受有效项,返回失败项。 下个默认候选是 QR partial-acceptance batch command。 平台 adapter 不得直接写 SQLite。

推荐队列

下一轮开发建议

默认继续 Local DB + local-service 主线,不扩大到硬件、支付 provider 或平台 adapter。

P0

QR Partial-acceptance Batch Command

  • 有效 QR cart 行应被接受。
  • 无效项应稳定返回 rejected entries。
  • 避免创建空 append batch。
P1

Docs-only 中文编码清理

  • 历史中文文档仍有乱码。
  • 应单独处理,不混入业务迁移。
  • dashboard 必须保持中文主界面。
P2

生产 SQLite packaging

  • Node 内置 node:sqlite 还是 bundled native package 尚未拍板。
  • Docker/Electron packaging 单独设计。
  • 不要在 QR batch 前抢跑。

开发护栏

不要重新分裂事实源

每轮结束必须更新 dashboard、状态文档,并给出可复制的新 session prompt。

必须保持

浏览器安全边界

  • POS UI 不导入 node:sqlite
  • POS UI 不导入 runtime-bound local-service modules。
  • UI/iPad/QR 只通过 local-service command/API 写入。
不要扩大

硬件与 provider

  • 真实打印机、支付 provider、平台订单 adapter 都是后续模块。
  • 不要在 QR batch 或 POS add-line 切片中引入这些范围。
  • 生产 SQLite packaging 继续保持待拍板。
交接纪律

结束时必须给 prompt

  • 写清路径、分支、基线 commit、dashboard 链接。
  • 列出 read-first 文件和验证命令。
  • 上下文快满前先停止新开发并刷新 handoff。

验证记录

本轮关键验证

RED

目标测试先因缺少 modifier/combo async runtime/helper 失败。

targeted tests

runtime/helper 与前序 visible async 回归测试已通过。

workspace

POS UI typecheck、local-service 测试、全量 test/typecheck/build、db:validate 均已通过。

POS QA

POS UI 自动 QA 已在 http://127.0.0.1:5180/ 通过。

dashboard

本地与线上 dashboard 均通过中文内容、桌面/移动端滚动渲染、无 sticky/fixed 遮挡检查。

deploy

线上 dashboard 已部署到 https://gaima-pos-dashboard.pages.dev/。

新 session 复制 prompt

每轮结束都要提供这一类交接 prompt

继续 POS Local DB + SQLite repository adapter 主线。请用中文回复。先从根目录 `D:\AI_Projects\POS System` 开始,按顺序读取 `NEXT_AGENT.md`、`docs/STATUS.md`、`docs/MEMORY.md`、`docs/CHANGELOG.md`、`docs/project-overview-infographic.html`,不要用根目录之外的旧 worktree 状态判断当前开发状态。当前最新稳定基线是 `cdcae60 feat: add async line facts flow`;最新完成模块是 Visible POS Async Modifier/Combo Add Migration Slice:visible POS modifier/combo add-line 现在复用 durable `order.append_lines_to_table`,POS sync/async order runtimes 支持 modifier/combo selections,zero-step combo、combo drawer completion、modifier drawer completion 可 async opt-in,并保留 snapshot fallback。线上 dashboard 是 `https://gaima-pos-dashboard.pages.dev/`,dashboard 必须保持中文并验证桌面/移动端滚动渲染,不能有 sticky 遮挡。下一默认模块建议是 QR Partial-acceptance Batch Command Slice;也可以选择 docs-only 历史中文编码清理。不要把硬件打印、支付 provider、平台 adapter、split bill、WebSocket push、outbox replay、生产 SQLite packaging 混进这个模块,除非我明确改优先级。开发新模块请从 main/最新稳定基线新建 fresh ignored worktree,结束前更新 dashboard/status/memory/changelog/NEXT_AGENT,并给我下一轮可复制 prompt。