更新日志

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

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

第 25 页

2026-09-222 条

老板

注销会员和合并会员这两颗按钮,谁都看得到;而它们上面两行的充值要权限

  • 用演示店那个受限账号(十一个只读权限码、没有通配)打开会员明细,屏幕上真的看得到两颗红色按钮:注销会员、合并至其他会员。
  • 而同一块里上面两行的「充值」和「清退储值」是有权限闸的。⇒ 权限的形状跟后果的方向是反的:建设性动作要码,破坏性动作不要。
  • 钱是安全的——后端有挡,两支都要「会员注销」这个权限码。付的代价是有人走完整个确认流程(合并还要先选主号)才吃到一个原始权限错误,而按钮长得像他有权按。
  • 这不是漏加一个条件:前端的权限词汇里根本没有「会员注销」这一格,只有「会员充值」。所以补的是三处——类型声明、权限推导、按钮的闸。
  • ⚠️ 下一个人:别把它并到充值那个码上。充值和注销是两个不同的后端权限码,并起来会让能充值的人顺便能注销。
  • ⚠️ 权限还没载入时按钮隐藏。对破坏性动作来说这个方向是对的,不要「改善」成载入中先显示。

股东与分红

全员

跨店/跨權限的 403 文案分三句(門店/公司/平台),不再只說「沒權限」

  • 原本四處**只看 HTTP 狀態碼**就說「你沒權限」⇒ 現在依後端業務碼分三句:門店範圍/公司範圍/平台範圍。
  • `NOT_OWNER`/`RESOURCE_NOT_OWNED` **刻意排除**在這個家族外(語意不同,不能混)。

点单送厨顾客 CRM

2026-09-2118 条

AI

利润归因的建议按每个品项的归因类别来写,不再一律叫人调价

  • 四类归因(进价涨、售价改、结构变等)各配一句确定性建议;按出现的类别集合组句,多类并列,不拿第一个品项的类别代表全体。
  • 同时订正 T-2522:毛利环比句「低 0.0 个百分点」的真因是比例差没有乘 100 就印成百分点,采用 main 上 P2-136 的修法,放弃「舍到 0.0 就说基本持平」的做法。

生意诊断

库存

库存流水新增「单价」栏

  • 库存流水的宽表表头、数据行和窄屏卡片三处补上「单价」。
  • 规则和相邻的「成本额」一致,免费入库、赠品这类 0 不被当成缺失。
  • 销售页高毛利提示里「去库存异动比对每笔入库单价」的说明同步微调。

进销存

采购

进价异动页写明它只比较采购入库,手动入库不在其内

  • 在进价异动的结论下方补一句限定语:只看采购批次,手动入库、调拨、盘点调整进来的成本不在检查范围。
  • 同时指向「进销存 → 库存流水」的逐笔单价栏去查。
  • 判准和扫描范围没有改。

采购进销存

成本与库存

成本页多出「本月原料成本」,估算净利下注明扣掉原料成本后的数

  • 新增一格「本月原料成本」,放在「营运成本」前面;它由同一页已载入的日结逐日汇总算出(净销售减毛利)。
  • 估算净利那一格底下补一行「扣掉原料成本后约 ¥X(上面这个数没扣原料)」。
  • 没有改任何既有数字。

成本与毛利

财务

日结不再因当天只有取消和开台中的订单而被红字挡住

  • 日结的「没有任何实收记录」判断由全部状态订单改为只看已结订单(已支付、已退款)。
  • 当天零笔已结时,不再出现「当日有已结订单,但没有任何实收记录」的红字,也不再阻止日结。
  • 收款统计仍用全状态订单,取消单上的退款、开台中收的订金照常计入。

财务/日结/流水

财务

现金流水里差异为 0 的班次显示「无差异」,开着太久的班按后端判断标出

  • 现金差异分三态:读不到不印,0 印「✓ 无差异」,非 0 按原样标色。
  • 「开着的班」改用后端算好的是否超时未交,区分「开着」和「开太久忘了交」。
  • 班次记录页同步补 7 天分级显示(重放提交一并补回)。

开班交班财务/日结/流水

提成

提成明细的时间栏和股东订台的「已订时段」改按门店营业时区显示

  • 提成明细的时间栏原来把 UTC 当门店时间显示,每个时刻早 8 小时;改为按门店配置的营业时区换算(店级、租户级、默认 Asia/Shanghai)。
  • 多店查询时每家店只查一次时区。
  • 股东可订台页的「已订时段」同样修正,例如真实 20:00 的订台原来显示成 12:00。

提成/推广股东与分红

会计

会计原始数据列表增加「摘要」和「谁记的」,采购收货凭证摘要不再存成占位符

  • 网页会计原始数据列表新增「摘要」栏,直接显示完整订单号;以前「原单」只显示被截断的 8 位编码。
  • 补「谁记的」。
  • 「原单」链接改为用摘要里的订单号去订单查询,找不到订单号就退回纯文字;以前传订单编码必定查出 0 单。
  • 后端修正凭证摘要渲染:采购收货的凭证摘要不再把未替换的「{order_no}」原样存进账(163 笔里采购收货 3 笔全中),并新增单元测试。
文案

几处中文说明文案不再在句中多出一个空格

  • 销售、毛利、桌效、现金流水等页 9 处中文说明在源码里折行,渲染后句中多一个空格,全部接回一行。
  • 资金追踪页三处因夹着加粗,改用表达式分行排版,渲染不多空格。
  • 资金追踪页的空态改为:只有手上真的拿到数据,才说「这个区间内还没有任何一笔钱动过」;重试被暂停的那一刻不再误印。
股东分红

股权分红确认前提示「本月没有营业数据」,有权限的人可以在班次记录页代为交班

  • 股权分红页:当月营收、成本、提成、其他支出全为 0 时,在确认按钮上方提示「这个月没有任何营业数据」,并提醒先确认月份。
  • 后端股权分红整条动线的错误提示由繁体改为简体,对应的基线条目一并拿掉。
  • 网页「班次记录」页给有代为交班权限的人加「代为交班」:要填数到的现金和原因,会以代理交班留痕;后端这条路早就有。

股东与分红开班交班

会员储值

会员档案页和楼面点单发卡、充值时,也会提示预付卡的限额与有效期规则

  • 预付卡规则抽成共用模块,五个发卡、充值入口都用:礼品卡页(发卡、充值)、会员档案页(发卡、卡列表充值)、楼面点单发卡。
  • 提示依据《单用途商业预付卡管理办法》:记名/不记名单张卡余额上限,记名卡不得设有效期,不记名卡有效期不少于规定年限。
  • 充值时按「充值后的余额」判断;记名/不记名读送出时同一个值,和成功提示一致。

礼品卡点单送厨

股东

分红页要老板相减的那两个数是「全店合计」,而它上面那句规则是「按股东」的

  • 股东提现那一段先说「可提金额 = 这位股东的待发放分红 − 他已经提走的」,紧接着给出两个**全店合计**的数,再说「所以可以直接相减」。
  • **只有在「刚好一位股东」时,那个差额才等于那一位能提多少。** 两位以上时,某个人提得多会被另一个人还没提的额度盖过去,而画面上一个字都看不出来。
  • **为什么一直没人撞到:走查店刚好只有一位股东(持股 100%)。** 实测两个数逐笔对得上(待发放 ¥309,662.56 = 两期分红相加;提现占用 ¥1,500 = 两笔相加)——单股东时完全正确。
  • 而「股权分红」这个功能**存在的理由就是有合伙人**,多股东才是它的常态场景。
  • 改完:把范围说出来,**没有在前端自己算一份可提金额**——这一页自己写着「以服务端为准」,前端再算一份就是第二个真源,它会在「服务端规则改了、前端没跟上」那天静静给出一个看起来合理的数。
  • 这句话**不做条件显示**(不是「两位以上才出现」):判断「这家店有几位股东」要靠历史分红记录,而**历史上有过两位、现在剩一位**的店会被判成单股东——那正是最需要看到这句话的人。

股东与分红

店长/会计

挂账列表的订单号后面黏着一个破折号,看起来像订单号的一部分

  • 走查店四笔挂账全部长这样:`ORD-6A3E-20260726-7092C2— · 7月26日 12:27`。
  • 原因是那行字是用一串条件拼起来的,而**分隔号的条件跟占位符的条件不是同一个**:台号为空时占位符「—」照样输出,而它前面的分隔号只有在「有会员**且**有台号」时才输出。
  • 「有会员、没台号」正好是挂账最常见的形状(外带/会员挂单),所以四笔全中。
  • 改成「把有值的片段收进数组再连起来」——**分隔号不再有自己的条件**,这一整族「少一个/多一个分隔号」的问题从结构上消失。
  • 副标题里不再补「—」:占位符是给**表格的列**用的(桌面那张表照旧保留),一串话里一个孤零零的破折号只会让人以为是订单号的一部分。

财务/日结/流水

老板/会计

「预收义务」那四列排成一栏,而它们不是同一种计价基础

  • 标题写着「预收义务(你欠客人的钱)」,四个数排成一栏——老板最自然的动作是**加起来**。
  • 但前三列(会员储值 ¥23,282.93、礼品卡 ¥3、预约订金)是**客人已经付给你的现金**;第四列「客人寄存的酒」¥24,600 **不是钱**,是「你欠他几瓶酒」,而且是按**现在的售价**估的。
  • 加起来会得到一个 ¥47,886 的数,而它同时混了两种东西:手上真的握着的现金,和按零售价计的实物义务。
  • **更糟的是寄存那一格会跟着调价浮动**:店里把酒涨价,这个「负债」就变大,而实际上什么经济事件都没发生。前三格不会有这个性质。
  • 这张表原本已经写了「**两栏**范围不一样」(业务侧只算本店/会计帐面按法人主体)——那是栏的事。**没有人说过「列不能相加」。**
  • 改完:加一句「这几列**不要相加**…要问『我手上替客人保管了多少现金』,只看前三列」。**没有加合计列**——那一格会是这一页唯一一个没有任何一种口径撑得起来的数字。

财务/日结/流水

老板/会计

两个页面都写着「估算净利」,而它们算的是两个不同的数

  • 日结页和老板首页的「估算净利」= 毛利 − **工资** − 固定成本,**不扣提成**;成本页的「估算净利」= 净营收 − (提成+固薪) − 营运成本 − 时薪工资,**扣提成**。
  • **同一个老板在两页看到两个都叫「估算净利」的数,哪个对取决于他在哪一页。** 他会拿两页互相验算,然后得出「有一页算错了」。
  • 两个定义各自都有用(一个是「现金流口径」一个是「全成本口径」),所以**没有改算式**,改的是把差别写在画面上:「这个估算净利跟日结页、老板首页的那个不是同一个数…两个都对,但不要拿它们互相验算,更不要相加」。
  • 同时补了一句限制:固定薪资和时薪工资是**两个来源**、各自从净利里减一次。同一个人如果既记了固定薪资又在打卡,会被算两次——**这一页看不出来是不是同一个人**,只能说出这个限制,不自己发明一个判断规则。
  • 🔴 **这一轮最该带走的**:同一句话出现在好几个地方时,**不要假设它们背后是同一个算式**。这次全库三处写着「提成未计入」,**只有一处是错的** ——照「同类问题一起扫一起改」做,会制造两句新的假话。
  • 另外记一笔:那句错的话是**有条件才显示**的(店家设过门店预设时薪之后才出现),所以在演示店上它从来没显示过。

成本与毛利财务/日结/流水

老板/会计

成本页写着「提成未计入估算净利」,而它自己的算术里提成早就减掉了

  • 老板读到那句话会**再减一次提成**,而同一页下面那段警告逐字写着「加起来会把提成算两次」——**这句话正好造成它下面那段要防的那件事**。
  • 屏幕上四个数当场对得起来:净营收 ¥10,818 − 营运成本 ¥4,833.33 − 人力成本 ¥177.4(提成 ¥122.4 + 固定薪资 ¥55)− 时薪工资 ¥0 = **¥5,807.27**,正好是画面上的估算净利。
  • 改成「提成已经扣掉了(它算在上面的人力成本里),不要再自己减一次」。
  • **这条为什么一直没人发现**:同一个文件里的代码注释**写对了**(「提成已经算进人力成本,两边都读会算两次」),错的只有使用者看得到的那一句。做代码审查的人读到那段注释,会觉得作者想得很清楚。
  • 顺带记下两件没修的:这家店 9 个员工,人力成本只占营收 **1.6%**(低于我们自己定的 5% 可信门槛,而那个警告只做在分红页、没做在成本页这个上游);门店预设时薪 ¥25/小时,而整个月的时薪工资是 ¥0——也就是**整月没有人打卡**。

成本与毛利财务/日结/流水

店长/会计

177 个班开着没人交得掉,而「代别人交班」这条路后端早就做好了、三端一个都没接

  • 全平台现在有 **177 个班次开着没交**,涉及 86 家门店、24 个租户;其中 176 个开超过一天、169 个开超过 30 天,**最久的一班从 6 月 11 日开到现在,102 天**。走查店自己就挂着三个(8/26 · 629 小时、8/31 · 502 小时、9/19 · 52 小时)。
  • 班交不掉,那几天的日结就确认不了;日结确认不了,那个月就关不掉。
  • **后端其实早就能代交班**:填原因、有权限的人可以替别人交,而且会留痕(记下代关的人是谁、班次原主是谁、原因是什么)。只是网页、小程序、Flutter **三端一个调用点都没有**——能力盖好了、权限定好了、留痕齐了,没人接得到。
  • 🔴 **我上一轮的结论是反的**:我说「没有任何代交班路径,建议做」。我搜的词是「强制交班」那一类,而它真实的名字是「代**理**交班」——**两个都只差一点点,而搜索是全有或全无**。零命中在字面上完全正确,结论却是反的。这一次我上正式机把那段代码逐行读过才写。
  • 现在:班次页每一班,不是自己的、而且你有这把权限 → 「代为交班」;没有权限 → 明写「只有本人、或有『代理交班』权限的人交得了」,不是整颗按钮消失。
  • 原因必填、现金必填,两个都在前端先挡。文案写的是「**你数到的现金**」不是「应有现金」——填错的症状是静默的:代关照样成功,差异被记成你填的那个数,那一天的现金从此对不回来。
  • ⚠️ 號碼說明:提交 9205f96b 的訊息寫的是 T-2601,那是 rico11 先領的號(股权分红)——我當時沒先 claim 就用了。這條改掛 T-2671;追 9205f96b 的人請看這裡,不要去 T-2601 的討論串找代交班的理由。

开班交班财务/日结/流水

老板

毛利那一行:86.8 减 87.1 等于 -0.3,而同一页下面写着 -0.29

  • 利润归因的表头写「当前 86.8% vs 前期 87.1%(-0.3 个百分点)」,而同一页下面那句写「门店整体变动是 **-0.29** 个百分点」。同一件事,两个数。
  • **版面本身就是一个减法断言**——把两个百分比和一个差额摆在一起,读的人一定会自己减一次。三个数各自都是对的,错的是它们摆在一起时暗示的那个关系。
  • 不是谁算错,是精度选错了边:差额只有 0.29,而一位小数的成分根本表达不出它。
  • 下面那句更不能降精度,因为它自己就在做加减:「3 项合计拖累 -5.49,整体 -0.29,差的 5.20 是别的品项赚回来的」——5.49 − 0.29 = 5.20 对得上,换成 -0.3 就是 5.19,自己打自己。
  • 改完:表头三个数一起升到两位,现在是 86.76% − 87.05% = -0.29,读者自己减也对得上。

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

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