更新日志

改了什么,
一条条记在这里。

已经上线的直接写;还没上线的会标明「尚未上线」。 目前共 794 条
同一条更新可能同时属于多个模块,因此各模块条数相加会大于总数。

第 26 页

2026-09-2120 条

店长/会计

第一屏说「未交班 无」,同一页往下滚是三条「这班开了 629 小时还没交班」

  • 同一个屏幕上两句话互相打架,而说「无」的那句排在**上面**。
  • 原因:「未交班」那个数字来自日结报表,报表是**按营业日**查的——今天没人开班,所以今天的未交班是 0。但开着没交的班可以是 26 天前的。
  • 走查店现在真的挂着三个:8 月 26 日开的(629 小时)、8 月 31 日开的(502 小时)、9 月 19 日开的(52 小时)。
  • 第一屏新增一行「以前没交的班」,数字与下面那三条逐条对得上。文案不写「去交班」——**只有开班的本人交得了自己的班,老板也不行**(后端按开班人的身份取记录),所以写的是「只有开班的本人交得了」。
  • **这个数据前端本来就有**:`/shifts/?status=open` 跨营业日,首页下面那三条就是它画的,第一屏只是没读它。属于「建好了没接线」。
  • **🔴 留给后端/产品的洞:那两个 8 月的班可能永远交不掉。** 只有本人能交,而人可能已经离职或忘了。班次交不掉 → 那两天的日结确认不了 → 那两天的账关不掉。目前前端和 API 层**都没有任何主管代交班的路径**。

财务/日结/流水

老板

首屏写着「¥今天还没有生意」,和一个会变小数位的金额「¥24,369.2」

  • **「¥今天还没有生意」**:货币符号是无条件画出来的,而它后面那格在没生意的时候放的是**一句话**。货币符号是「后面接一个数」的承诺,接一句话就是失约。
  • 同一支文件**往下 30 行**就有一个月前修过的同款问题(客单价那格也剩过一个孤零零的「¥」)——**教训在同一个文件里都没有走上去**。这次把判断抽成一个名字,两个地方共用。
  • **「¥24,369.2」**:金额先被转成数字再格式化,`24369.20` 的末位 0 被吃掉。同一个首屏上 `4148.00` 会印成「¥4,148」、`4148.50` 印成「¥4,148.5」——**小数位数随值飘**,老板两天对照着看会以为精度不一样。
  • 新写了一个千分位函数:**不碰数值**,只在字符串的整数部分插逗号,小数照抄后端给的。自测 20 格,包含「看不懂的输入原样透出,不准回 0」——在金额栏位里回 0 是把「读不到」画成「零」。
  • **三个数字三种期间**:演示店首屏是「近7天进账 ¥24,369.20」,正下方「今日估算净利 ¥-60」,右边「结账笔数 35」「客单价 ¥696.26」。24369.20 ÷ 35 = 696.26 ⇒ 右边两格是近 7 天,而它们**一个期间都没标**。最自然的读法是「24,369 赚了 -60」。已把期间补进标签。

财务/日结/流水老板经营看板

老板

仓管这类岗位登入后,落在自己的岗位上(不再一律落在老板总览)

  • 以前只要是有后台权限、但没有收银权限的岗位账号(仓管、会计…),登入后一律落在老板总览——那页的数字他们都读不到,于是看到一排 ¥0。
  • 现在按岗位落地:仓管落在进销存、会计落在会计(原本就会落在自己岗位的厨房、咨客、收银、服务员行为不变)。
  • 这是「总览要不要改成按角色分段」那个决定的配套:先把每个人的家给对,总览本身没有动。

进销存

厨房

厨房看板的「平均等待 8931 分钟」被拆开:今天的等几分钟、跨日的等几天

  • 厨房看板最上面那排数字里,「平均等待 8931 分钟(6.2 天)」「最长等待 29975 分钟(20.8 天)」把今天的出餐节奏和前几天的漏单混在一起算——两个数字都不能拿来管今天的厨房。
  • 现在本营业日的等待与跨日的帐龄分开:「平均等待(本营业日)」用分钟,跨日的另给一格「跨日未出餐 4 项 · 最久 21 天」。
  • 另外「✓ 全部完成」那颗按钮读起来像状态宣告,而卡片旁边就是「⚠ 已超时」——它其实是动作,已改成「✓ 全部出餐」;「排队中」也补上张数(4 项 · 4 张单)。
  • 算式没有动:逐字验算 (29975+2240+2224+1283)/4 = 8930.5 ≈ 8931 是吻合的,错的是母体混了两种东西。

厨房出品

厨房

厨房那台挂墙装置:打别的网址不再无声无息、多了一颗「登出/换人」、分页标题带上店名

  • 之前厨房的大屏装置是「只认厨房这一屏」的外壳:不管网址打的是进货、设定还是财务,画面上出来的都是同一个厨房看板——没有拒绝页、没有说明、也没有出口,站在共用平板上的人只能一直看着上一个班的人留下的画面。
  • 现在打别的页面会明说「这一页你看不到,需要更高的权限」,并给一颗回厨房的按钮;跟其他角色打进没权限的页面得到的是同一句话。
  • 厨房那一排按钮多了「登出/换人」(跟全萤幕、密度同一排,不藏在任何抽屉里)——共用装置最重要的一颗按钮。
  • 分页标题从「我的AI商业管家」变成「<店名> · 厨房出品 KDS」,多开几个分页或共用平板时认得出这是哪一家的厨房。

厨房出品

老板

股东卡片上「备注写 20%、实际股比 100%」现在会当场说出来

  • 同一张股东卡上出现过「QA测试股东,占股20%」和「股比:100%」并排:前者是老板自己填的自由备注,后者才是分红真正读的字段。按 20% 算会得到 ¥11,139.33,实际是 ¥55,696.64——差 ¥44,557.31。
  • 现在备注里的百分比如果和实际股比不同,卡片上会多一句「备注里写着占股 X%,但实际股比是 Y%——分红按股比那一个算(备注不影响分红)」。
  • 没有禁止老板在备注写比例:那是他的自由文字,前端该做的是说出冲突,不是替他决定。

股东与分红

老板

不是老板的账号打开「总览」时,不再把「读不到」画成一排 ¥0

  • 采购仓管这类账号打开总览时,那一页有 13 条数据接口会拒绝它(403)。旧版把空数据画成「今天进账 ¥0」「订单 0」「客单价 —」「此刻 0」——同一屏四种写法,而看的人会以为「今天没生意」。
  • 现在这一页改成一句话说明:这是老板视角、你的账号读不到这些数字,所以一个数字都不显示;并说清楚「不是今天没有生意,也不是都是 0」,指你去左边选单里有权限的页面。
  • 老板的正向控制:同一个页面在老板账号下逐字不变(2483 字、那排数字都在、403=0 条)。
  • 顺带量到一个既有缺口:员工登入时会去读自己的「数值上限配置」(折扣率/退款额度),那支接口要 settings:permissions 权限——没有这个权限的员工一律 403,而错误被静默吞掉,于是数值上限变成未知当作 0。已记在 P1-167,修法要后端加一支「读我自己」的端点或前端改成不打+显示未知。

财务/日结/流水

老板

顶栏现在常驻显示「当前法人」,有两家以上法人时可以直接切换

  • 会计那一族页面(凭证、试算表、明细帐)看的是「哪一个法人主体」的数据,而这个身分以前只存在程式里——画面上没有任何地方告诉使用者自己在看哪一家。
  • 现在顶栏标题旁边常驻一句「法人:<名称>」;只有一家法人时它就是一句状态文字(不是按钮),两家以上才长出下拉,选单里标出「本店」与「目前」。
  • 切换法人会整页重新载入(先把画面清掉再载入),所以旧法人的数字、使用者自己输入的区间、还没送出的导出都不会留在萤幕上被误读;切换后顶栏多一枚「已切换」。
  • 吃这个表头的三处(凭证列表/试算表/明细帐+预收义务)全部改成问同一个来源——分开读的话,「切了法人但某一格没跟着切」会在同一页长出两家法人的数字。
  • 拿不到法人清单时写「法人暂时读不到」,并照旧用登入身分自己的法人:不会挡页面,也不会静默送出一个空表头。

财务/日结/流水

全站

后台文案统一成简体:台湾用语与「还开著」这类漏网字(含老板/会计/出纳第一屏 46 句)

  • 繁体闸门按字元比对,看不见台湾用语(例「装置/登入/登出」)与只有字形差异的字(例「还开著」的「著」)——这些句子会一路进到老板看的第一屏。
  • 本批把老板/会计/出纳的**第一屏**(46 句)与其他页面文案统一成简体;并把「装置→设备」「登入→登录」「登出→退出」这类用词收进闸门的词表,避免下一批又漏。
  • 闸门本身也补了一条:`,` 前一个字是全形引号时判不到的例子(T-2523④ 同族)。
  • ★ 22 處是資料(店名、會員姓名)、不是漏改——下一個人看到「22」不要以為沒修完。
全员

接線准+第16條needle(今天要做的事≥1)+走查票號授權

  • 改了什麼:chore(role-walk): P2-152 接線准+第16條needle(今天要做的事≥1)+走查票號授權
  • 本票含 7 顆 commit,主旨各異:接線准+第16條needle(今天要做的事≥1)+走查票號授權 / 老闆第一屏接線(lazy+總覽最上面)+G12c 可重跑閘+P1-148 驗收發現開票 P2-163 / 部署 #9 產物級驗收(第16條 needle=1、chunk 143→144、三腳前後各一次)
  • 動到的檔:.role-walk/_msg/msg-網頁-20260921-0005-P2-152接線准與第16條needle.md、.role-walk/tickets/P2-152-老闆第一屏沒有任何入口.md、.role-walk/tickets/P2-163-搶付競態訊息出現後完成收款仍可按.md、.role-walk/tool/check-rolehome-targets.mjs(共 12 檔)
  • 怎麼查:git show 98ef99ed(rico)
全员

「今日及未来预约(61)」——那 61 筆沒有一筆是今日或未來

  • 改了什麼:fix(T-2611): 「今日及未来预约(61)」——那 61 筆沒有一筆是今日或未來
  • 本票含 2 顆 commit,主旨各異:「今日及未来预约(61)」——那 61 筆沒有一筆是今日或未來 / Revert "fix(T-2611): 「今日及未来预约(61)」——那 61 筆沒有一筆是今日或未來"
  • 動到的檔:src/components/admin/AdminReservations.tsx
  • 怎麼查:git show cbad1ec3(rico)
全员

309 個租戶零個月結過——那顆按鈕在使用者到不了的地方(T-2600)

  • 改了什麼:feat(finance): 309 個租戶零個月結過——那顆按鈕在使用者到不了的地方(T-2600)
  • 本票含 2 顆 commit,主旨各異:309 個租戶零個月結過——那顆按鈕在使用者到不了的地方(T-2600) / 月結入口(第 7 條)
  • 動到的檔:src/components/admin/AdminFinance.tsx、.role-walk/changelog-entries-web-2026-09-21.json
  • 怎麼查:git show 26d6e32e(rico)
全员

查詢的第四態 pending/paused——兩個旗標同時說沒事,而手上什麼都沒有

  • 改了什麼:fix(ui): T-2590 查詢的第四態 pending/paused——兩個旗標同時說沒事,而手上什麼都沒有
  • 動到的檔:src/components/admin/AdminInventory.tsx、src/components/ui/CellState.tsx
  • 怎麼查:git show 0bec297e(rico)
全员

頂欄「當前法人」常駐可見+切換器(單一法人=純文字不畫下拉;多法人切換真的換 X-Legal-Entity-ID…

  • 改了什麼:feat(P2-267 需2): 頂欄「當前法人」常駐可見+切換器(單一法人=純文字不畫下拉;多法人切換真的換 X-Legal-Entity-ID 並整頁重載)
  • 本票含 2 顆 commit,主旨各異:頂欄「當前法人」常駐可見+切換器(單一法人=純文字不畫下拉;多法人切換真的換 X-Legal-Entity-ID… / 指揮裁定入票(P2-266 AI 要說出排除幾筆示範資料;警示類=分區標記非刪除;P2-268 47=47 補 DB…
  • 動到的檔:src/api/legalEntity.ts、src/components/LegalEntityBar.tsx、src/components/admin/AdminAccounting.tsx、src/components/admin/AdminShell.tsx(共 9 檔)
  • 怎麼查:git show 3c7ad4e6(rico)
全员

庫存頁 24 個裸輸入接上 Field 共用層——標籤與控件本來是分開的

  • 改了什麼:feat(ui): T-2569 庫存頁 24 個裸輸入接上 Field 共用層——標籤與控件本來是分開的
  • 動到的檔:src/components/admin/AdminInventory.tsx
  • 怎麼查:git show 86636b3a(rico)
全员

補貨建議把分子和分母都印出來、只把商藏起來——店長會自己除,而除出來的正是後端拒絕背書的那個數

  • 改了什麼:fix(inventory): T-2568 補貨建議把分子和分母都印出來、只把商藏起來——店長會自己除,而除出來的正是後端拒絕背書的那個數
  • 動到的檔:src/components/admin/AdminInventory.tsx
  • 怎麼查:git show 4b15797b(rico)
全员

淨利文案未揭露「帳上不含四條腿」(現況逐字/要求/驗收/界線;只改文案)

  • 改了什麼:docs(P2-231): 淨利文案未揭露「帳上不含四條腿」(現況逐字/要求/驗收/界線;只改文案)
  • 本票含 4 顆 commit,主旨各異:淨利文案未揭露「帳上不含四條腿」(現況逐字/要求/驗收/界線;只改文案) / 日結算式去掉不存在的「− 应计提成」(以實作為準)+落 v2.1 揭露句 / AdminCosts「概算净利」→「估算净利(按真实打卡工资)」+口徑句對齊
  • 動到的檔:.role-walk/tickets/P2-231-淨利文案未揭露四條不在帳上的腿.md、src/components/admin/AdminDailyClose.tsx、src/components/admin/AdminCosts.tsx
  • 怎麼查:git show f8513db1(rico)
全员

放棄我那版 CellState 文案,收斂到 main 的 rico3 T-2437 版

  • 改了什麼:refactor(dividend): 放棄我那版 CellState 文案,收斂到 main 的 rico3 T-2437 版
  • 本票含 2 顆 commit,主旨各異:放棄我那版 CellState 文案,收斂到 main 的 rico3 T-2437 版 / 會計原始數據頁 + 預收義務對帳卡,從共用主樹搬進分支
  • 動到的檔:src/components/admin/AdminDividend.tsx、src/api/accountingRaw.ts、src/api/client.ts、src/api/members.ts(共 7 檔)
  • 怎麼查:git show c92d5a5a(rico)
後端

補償任務那一格補上分母:今日結帳筆數/其中有步驟失敗的筆數

  • 補償任務的數字原本只有分子(失敗幾筆),沒有分母,看不出嚴重程度。
  • 這一條把分母補上(今日結帳筆數/其中有步驟失敗的筆數)⇒ 讀的人才知道是 1/5 還是 1/500。
  • 看那一格的人感覺得到,所以是產品更新。
後端

倉別篩選按了沒作用、而且列上不說是哪個倉:同一商品兩個倉變成兩列一模一樣的

  • 倉別篩選按下去沒有反應,列上也不寫是哪個倉——同一個商品在兩個倉會變成兩列長得一樣的資料。
  • 這一條把篩選接上、把倉別帶進序列化(`inventory_selector.py`/`serializers.py`/`views.py`);同一輪也撤回了另一條線重複做的後端半。
  • 店長與倉管在庫存頁直接感覺得到。

这份日志从 2026 年 7 月记起,更早的没有逐条列。想看它现在都会什么,回全部功能,或者进演示店自己点一点。