更新日志

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

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

第 35 页

2026-09-1920 条

老板

成本页导出的表头跟屏幕上说的对上了

  • 导出的 CSV 表头以前写「本月人力成本(提成+固定薪资)」,跟页面上已经改好的说明不一致;现在两处都写「时薪工资+员工酒水提成」。

成本与毛利

老板

只读账号打开提成规则页不再一直转圈

  • 只有查看权限、没有设置权限的账号,以前打开提成规则页会看到三块永远「载入中…」;现在直接说明「没有设置权限,只能看说明」。
  • 没有再发出会被拒绝的请求,界面不留永远转不完的载入状态。

提成/推广员工账号与权限

老板

财务的「按营业日」报表补上股东带台与外部公关两栏

  • 以前这张表只有 员工计提,股东带台与外部公关的当日金额在这一层看不见,要另开账单页逐人翻。
  • 现在三个类别并列(员工/股东带台/外部公关),缺哪一类显示 —,不假装是 0。

财务/日结/流水股东与分红

老板

账单点开一个人能看到完整的 11 个字段

  • 以前点开一个员工只看到 单号/桌/菜/分类/酒水/原因/应发;现在补齐 营业日/折后/基数/抽法/状态/不抽原因。
  • 「抽法」直接显示后端的原始值,和 App 端同一套字,不再各自翻译。

提成/推广

老板

无酒精的饮品不再被当成酒水算提成(繁简两种写法都认)

  • 分类名写「無酒精」「調酒輔料」(繁体)时,以前会被当成酒水、跟着算销售提成;现在繁简两种写法都正确判成「不提成」。
  • 同一份判断清单在网页与后端两边对齐,避免出现「界面显示不抽、实际却抽了」。
  • 已生成的旧提成行不重算(只影响之后的新单)。

提成/推广财务/日结/流水

後端

採購基準錯置對齊:報價一律視為含稅價

  • 採購收貨的基準與『報價一律視為含稅價』的口徑不一致,於是同一筆進貨會算出兩種成本。
  • 這一條把兩邊對齊(`purchase_receipt_service.py`),並附一支可重跑的驗證腳本。
  • 進貨成本會影響老闆看到的毛利數字,所以是產品更新。
客人

客人掃碼菜單現在會顯示銷售單位(毫升/瓶/杯/罐)

  • 客人用手機掃碼看菜單時,價格旁邊會顯示這個價格是「每一份/每一瓶/每一毫升」——以前這一格是空的,按毫升計價的品項(例如調酒辅料)只看得到「¥0.6」,很容易被讀成「一瓶 0.6 元」。
  • 網頁版與 App 的點單菜單也一起帶出計價單位(欄位新增,不影響原有內容)。
老板

还没配过提成口径的店,画面会说明现在按平台预设(只抽酒水、未含辅料)

  • 提成的三处(按人/财务/规则页)都会写清楚:这家店还没配过口径,目前按平台预设——只抽酒水(未含辅料),调酒辅料/原料/食材这类不算酒水。
  • 顺手改掉一句不实的话:以前写「所以下面的数字都是 0」,但同一个未配置的店实际 accrued=554.40(啤酒单照样计提成)。
  • 画面不再让店家猜「没配=全算」或「没配=不算」。

提成/推广

老板

POS 商品列会写出销售单位(例如 ¥0.24/毫升),按件卖的不会多印

  • 调酒辅料这类「每毫升」计价的商品,卡片上的价格会写成 ¥0.24/毫升——以前只写 ¥0.24,第一次看会读成「一瓶 0.24 元」。
  • 按件卖的商品(瓶/罐/杯/份/个…)维持原样,不多印一个字。
  • 店里没给销售单位的商品也维持原样。

点单送厨

老板

收款窗的实收金额会先帮你填好,无桌单不用再手打一次

  • 打开结帐窗时,现金这一格的实收金额**已经填好核定应收**(无桌单与桌台单一致)——以前无桌单要先手打金额,「完成收款」才可按。
  • 按不动的时候会把原因写出来(实收还差 ¥X/还没开班/拆分金额还没凑齐),不再是一颗灰掉的按钮让人猜。
  • 「刚好」与输入框对同一个数:按了它会填入核定应收,改了它就以你打的为准。
  • 动的是互动与提示,收款金额的计算一行没改。

结账收款

老板

没有 POS 可回的人,不再看到那颗按了没反应的「← 回 POS」

  • 弱权限帐号(例如纯咨客)的后台侧栏与窄屏抽屉不再显示「← 回 POS」——他没有 POS 前台可回,点了画面不会变。
  • 有 POS 权限的帐号(店长/收银)照旧看得到、按得动。

点单送厨员工账号与权限

老板

咨客台的开台归属快照真的送出去了(一桌可挂多种身分、各自分成基点)

  • 开台时可以同时挂上咨客(我自己)/内部推广/外部公关/股东,各自一个分成基点;送出后画面显示的是后端回读的结果,不是本机的暂存。
  • 送的是「这张单完整的归属集合」(后端是取代语义):少勾一个人等于把那笔归属删掉,所以只要有列没填完,开台钮就按不动并说明原因。
  • 读不到员工名册(settings:users)或股东名册(commissions:view)时,那一列直接说缺哪把钥匙,而不是给一个空下拉。
  • 外部分关(external_promoter)只需要姓名——没有帐号主体也能先记上,等主体化再回填。

提成/推广订位管理

老板

冷启动口径:画面显示哪天,就读哪天的净利(演示店 fixture 实测)

  • 指挥立规则 38(执行时刻与业务日是两件事)后我自扫,先修了 fallback 拿时钟推业务日那一处;接着用演示店当冷启动 fixture 实测
  • 实测抓到更大的一处:画面显示「上次营业(9月17日)」,但主 effect 用 data.today.date 去读净利 ⇒ 请求 business_date=2026-09-19(今天),与画面不是同一天
  • 根因:冷启动时后端回 primary=last_business_day + today.state=not_started + today.date=今天——所以「有没有 today.date」不等于「画面显示的是哪一天」
  • 改成三处一律用 shownBizDate(primary===last_business_day ? last_business_day.date : today.date):主 effect、保存后重读、重试按钮;两者都没有就不猜并明说(不静默 no-op)

老板经营看板成本与毛利

老板

连锁总部的筹备门店有「查看这家店」入口,状态也不再被写成「已停用」

  • 筹备中的门店(还没开业)在总部「门店总览」与「开店筹备」两页都有「查看这家店 →」(以前只有营业中的店有)。
  • 状态标签与统计口径从「筹备中/停用」改成「未启用」——不再把还没开业的店说成「已停用」,也不再让一句标签盖掉两种状态。
  • 按「查看这家店」时会先问后端这家店读不读得到;读不到就在那一行说清楚原因(而不是跳进一个每一页都失败的后台)。
  • 两个入口(总览/开店筹备)共用同一支判断,不是各写一套。

连锁 HQ功能模块开关

老板

财务页不再拿时钟当营业日(规则 38 自查)

  • 规则 38(执行时刻与业务日是两件事)一出,我立刻扫自己这边「用执行时刻推算业务日」的形状
  • 找到且只有一处:财务页保存成本后重读净利时,若 data.today 为 null(冷启动/今天还没开始)会 fallback 到 new Date().toISOString().slice(0,10) 去读「今天」的 pnl,而画面当下显示的是上一个营业日的数字——两者不是同一天
  • 改成用「页面正在显示的那个业务日」(今天有就用今天,否则用 last_business_day);两者都没有就不猜,明说读不到可用营业日(宁可不做这一步,也不拿时钟当业务日)

老板经营看板成本与毛利

老板

点单栏的结帐按钮写清楚「含低消补足多少」,收银能一句话回答客人

  • 结帐按钮会写成「结帐 · ¥500(含低消补足 ¥180)」——客人问「为什么是 500」时,收银不用再翻明细。
  • 按钮上方一句可直接照念的答法:这张单有低消 ¥500,点到的酒水只有 ¥320,没到门槛,所以补足 ¥180;补足算营收、不是酒水,也不进提成基数。
  • 没有补足的单一律不显示这段字(不会出现「含低消补足 ¥0」这种噪音)。

结账收款点单送厨

全员

候位「取消」接线:二段确认+写后果+把原因存进 cancel_reason

  • 先查后端才动手:WaitlistViewSet 有 cancel(permission_map cancel = _WAITLIST_PERMS,已含 hostess:seat),前置 waiting|called,效果 cancelled+cancel_reason
  • 咨客屏加「取消」(hostess:seat 才给):二段——先选原因(登记错了/客人自己走了/重复登记)→ 再把后果写给操作者看
  • 后果文案明说「状态=已取消,不算未到,未到率不受影响。客人若回来要重新登记」
  • 顺带让 cancelWaitlistEntry 可以带 reason(后端本来就收 cancel_reason,前端原本不传)

候位叫号

全员

咨客屏补「登记到店」入口:文案承诺的那个入口现在真的在

  • 这一屏的空态文案本来就写着「客人到店后在这里登记」,但那时没有那个入口(规则 16:字面不等于真做的事)
  • 新增「登记到店」:姓名/电话/实际到店人数/预估等候/备注,字段与候位页那张逐字一致,送出后立刻进「待带位」
  • 队列列多印「HH:MM 到店」——到的時間用后端 queue_rank_at(登记当下就是到店时间),实际人数用既有 party_size,不新增端点、不发明字段
  • 只有 hostess:view 的人看不到任何写入动作,并明说「你只有咨客·查看」,不是按了才知道不行;空队列也有登记入口(否则第一笔永远进不来)

候位叫号桌台楼面

全员

礼品卡入口副标按权限分支,不再对缺码的人承诺过多

  • 入口副标原本固定写「发卡 · 充值 · 挂失」,但没有 members:view 的人进去做不到这三件(页面会降级成「查一张卡」,那个降级是对的,只是入口没说)
  • 改成按码分支:有 members:view → 「发卡 · 充值 · 挂失」;没有 → 「查一张卡 · 余额」
  • 只加两行、用型别本来就有的 subOf(按码拼副文案),没有动架构

礼品卡

老板

月结(期末结转)终于有地方可以按了

  • 财务页多了一块「月结」:挑一个会计期间,先检查能不能结,看清楚再按。
  • 检查会直说拦住的原因——还有草稿凭证没过账、有借贷不平的凭证、下一个期间还没建。这三种情况下硬结会留下对不上的账。
  • 确认那一下才真的写凭证并锁定期间,之后这个月不再接受新凭证;要撤销得走「重开期间」。
  • 利润表要有数,得先做这一步。

财务/日结/流水

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