更新日志

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

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

全站

老板/店长尚未上线

小程序「店规与公告」全部下架时不再是一片空白

  • 以前:店里的店规和公告如果都被下架了,默认视图把它们全部藏起来,页面只剩一个「显示已下架」的小链接,其余一片空白,看起来像页面坏了。
  • 现在:会写明「现在没有发布中的店规或公告,有 N 条已下架。点上面『显示已下架』可以看,或重新上架。」(只读账号看到的是「店长重新上架后这里才会出现」)。
老板尚未上线

小程序股东「怎么分」页:带台抽成上限的说明改清楚了

  • 以前:「带台销售抽成上限」下面的说明是「不是『确认分红』那一页」,只说了不是什么,看不出这是谁的抽成。
  • 现在:说明改成「股东或销售带客人来消费时,带台抽成最多到这个比例;下面两张表是各品类、各品牌的具体比例。跟每月『确认分红』是两回事。」
  • 位置没有挪:带台抽成是股东/销售带客的分润,本来就属于这页的分红政策(网页的股东分红卡片里也是同一组),所以不搬去提成设置。
老板/店长尚未上线

Flutter App 补齐:开调拨单、建券/批量发码/作废、成本预算对比、证照合同,以及首页两个新提醒

  • 门店调拨:可以直接开调拨单(选调入店、逐项选商品/批次/数量,数量按包装单位填、自动换算),明细显示批次号;去掉了「开新单请到电脑后台」的说明。
  • 优惠券页:可以建券(满减/折扣,建好直接启用)、批量发码(列出新码、可复制)、作废单张未使用的券(放在「危险操作」收起区,原因必填)。
  • 成本和家当:多了「预算对比」(顶部合计 + 各类成本逐行,可设预算)和「证照合同」(记/改/删,到期状态写明)两个分页。
  • 老板首页「要你处理」认识「证照合同到期」「成本超预算」两个提醒,点进对应分页;成本和家当模块关了就不列。
老板/店长尚未上线

小程序「顾客」那一串页面顶上都有同一条分页签:顾客、跟进、我的客户、礼品卡、优惠券

  • 以前:这五个页面是一串,但只有「优惠券」页顶上有切换条;点进「礼品卡」,同级的几个分页签就消失了,只能退回去再点。
  • 现在:顾客、跟进、我的客户、礼品卡、优惠券页顶上都有同一条切换条,当前页高亮,点哪个直接切过去(按你的权限和模块开关决定显示哪几个,少于两个就不显示)。
老板/店长尚未上线

小程序优惠券页补全:批量发码、作废单张券

  • 以前:发出去的券发错了(金额错、发错人)在手机上撤不回来;活动要发一批码也只能去电脑。
  • 现在:优惠券页顶上多了「批量发码」:选一张已启用的券、填张数(1~200)、渠道码可不填,发完把新码列出来,点「复制全部券码」就能粘给客人或印出来;结果会如实写「发了几张、跳过几张」。发出的是不记名券(靠券码使用),要发给指定客人仍去「顾客」页。
  • 未使用的券点一下,进「这张券」:券码、规则、是否绑会员、到期日,最下面「危险操作」里写原因(必填)后点「确认作废」。作废后不能恢复,已核销的不受影响;如果这张券刚被别人动过(已核销/已作废),会提示并刷新列表。
  • 兑换券(要挑商品)仍在电脑上建;页尾说明已改成这个真实去向。
老板/店长尚未上线

小程序优惠券页可以建券了:满减券、折扣券,建好直接启用

  • 以前:小程序优惠券页只能看,页尾写着「建券、发码、作废在电脑后台,手机上做容易点错」。
  • 现在:优惠券页顶上有「建一张券」。满减券填「满多少、减多少」(满多少留空或 0 就是立减),折扣券填「减百分之几、最多减多少(可不封顶)」,再填领到后几天有效、每人限领几张(可不限),点「建好并启用」。发给客人走「顾客」页(原来就有)。校验会当场提示:减的钱不能比门槛还多、折扣只能填 1~99、有效天数至少 1。
  • 作废、批量发码、渠道码仍在电脑后台,页尾说明改成了真实的去向。兑换券要挑商品,也留在电脑上。
老板/店长尚未上线

小程序可以开调拨单了:选调入店,逐项选商品、批次、数量,提交

  • 以前:小程序「调拨」页只能处理别人开的单(批准、发出、收货),开新单要在电脑上做,页面上直接写着「开新单请店长在电脑上做」。
  • 现在:调拨页顶上有「开调拨单」。选调往哪家店 → 「加一个品项」:搜在手商品、选批次、填数量(酒水按「瓶」填,系统自动换算成库存单位,框旁写出换算结果)→ 加进清单,可以加多项、不要的点「去掉」→ 填备注 → 提交。提交后直接进入这张单的详情,等店长批。需要「调拨」权限。
  • 单位还没读到、或读不到时不让加(不然数量会被当成毫升,差 330 倍);批次剩余不够会当场提示。待我批核页里原来「调拨开单要在电脑后台」那句也改成「调拨在『调拨』里开」。
  • 调拨单详情里原来只写「批次 ea51940f…」这种看不懂的编号前缀;后端现在回批次号,页面显示真正的批次号(旧后端没有时仍显示前缀)。
店长尚未上线

排班新增「复制上周到这一周」:一键把上周的班按周几复制过来

  • 以前:店长每周排班只能一个人一个班地加;系统里没有任何复制排班的功能。
  • 现在:网页「排班」页的周切换行、小程序「排班 → 谁该来」的周条下面,各有一个「复制上周到这一周」。点一下,把上周的班按周几原样复制到当前这一周(时间、岗位、备注一起带过来),做完写出结果,例如「上周 1 个班,已复制 1 个(跳过:…)」。
  • 不会乱:只复制已经生效的班(待接受/已婉拒的补班邀请不复制);已停用或已删除的员工不排;这一周同一个人同一天已经有班就跳过,不覆盖也不叠加,所以重复点不会翻倍;那天已通过请假的人也跳过。只在本周及以后的周出现,不能复制到过去的周。需要「排班管理」权限。
老板/店长尚未上线

小程序走查小修:优惠券概览数字对得上、运营异常逐项分行、移仓先选商品、调拨货值带「¥」等

  • 优惠券页的「券效概览」原来会出现「累计发放 0,已过期 2,已作废 13」自相矛盾(后端总数不含测试模板,页面却把测试模板的过期/作废加了进去);现在已过期、已作废也用后端同口径的总数。
  • 运营异常中心「对不上的是这几笔」:充值金、赠送金、总余额原来用分号连成一整句,现在每个字段一行。
  • 本班现金:「收款 8 笔 / 退款 2 笔」改成「这班已收款 … · 退款 …」,不再被误读成开班现金的说明;交班前要先点抽屉,页面里补了一句提示,原来只有警示条说「先交班」,却看不到交班按钮。
  • 移仓:「数量」原来排在「商品」前面,输入框还写着「先在下面选商品」,现在先选商品再填数量。
  • 调拨列表:右侧的货值原来是裸数字(「50」「0.26」),现在写成「货值 ¥50」。
  • 提成「抽哪些酒水」:能改的人,开关上已经写着「抽/不抽」,名字旁边不再重复写一遍「抽/不提成」。
  • 礼品卡页:搜索框、「发卡」按钮、「本店礼品卡」标题之间补了间距。
老板/店长尚未上线

小程序几个页面不再出现两个「返回」;今日账没有销售时毛利率不再印 0.0%

  • 以前:待我批核、运营异常中心、客人排队、团队角色、提成汇总、门店资料等页,页面里自己画了一颗「← 返回」,而微信顶部本来就有返回箭头,同一屏有两个返回。
  • 现在:在微信小程序里只留顶部那一个;网页版的小程序(没有顶部返回)照旧保留页内这一颗。需要「有改动先问」的页面(默认时薪等)没有动。
  • 今日账:今天还没卖出东西时,「毛利率」原来印「0.0%」,像是算出来就是 0;现在印「—」。
老板尚未上线

小程序「股东 → 确认分红」:金额加千分位;周期性成本没核完时按钮先灰掉并写明还差哪几项

  • 以前:本月净利、可分配利润显示成「¥7587.09」(没有逗号),同一页下面的历史分红记录却是「¥7,587.09」;还有周期性成本(人工、房租)没核对时,「确认分红」按钮看起来能点,点了才被系统拒绝,说明还差什么要滚到页面中部才看到。
  • 现在:这一页的金额统一加千分位、固定两位小数(人工原始金额也从「¥55」变成「¥55.00」);周期性成本没核完时按钮是灰的,按钮下面一行直接写「还有 2 项周期性成本没核对(人工、房租),核完这个按钮才能点」。
老板/店长尚未上线

小程序「预算」分页改成紧凑列表:一屏看全部成本类别,顶上先给合计

  • 以前:11 类成本每类一张高卡片,每张带一个「设预算」按钮,一屏只能看到 3 类。
  • 现在:顶上一行「本月合计」(预算、实际、几项超支),下面每类一行:左边类别名和「预算 ¥400.00 · 超支 +¥100.00」,右边实际金额(超支红色、略超黄色、没超绿色)。有「设置」权限的账号点一行就能设或改这一类的预算。一屏能看到 8 类。
老板/店长尚未上线

小程序分页页面往下滚时,分页签下面不再透出滚过的卡片

  • 以前:小程序「成本和家当」「会计」这类带分页签的页面,往下滚时分页签吸在顶上,但它和内容之间那条缝是透明的,滚过的卡片会从缝里露出半截字。
  • 现在:那条缝也有底色,滚过的卡片被完整盖住。
老板/会计尚未上线

财务健康「利润归因」会指出哪个品类成本率超过目标

  • 以前:毛利看板里可以给品类设目标成本率,但财务健康页的利润归因不用它,老板要自己去对。
  • 现在:某个品类实际成本率比目标高 3 个百分点以上,利润归因里会多一条「品类成本率高于目标」,写明差几个点(高 8 个点以上标高);没设目标的品类不判断;如果这个品类里没有成本依据的销售占 30% 以上,只说「成本依据不足」,不下「超标」的结论。
老板/店长尚未上线

成本超预算会提醒了:老板首页「要你处理」出一条,小程序「成本和家当」多了「预算」分页

  • 以前:网页成本页可以给每一类成本设每月预算,但超了没人提醒,小程序里也看不到、设不了预算。
  • 现在:某一类成本本月实际比预算高 10% 以上,老板首页「要你处理」会出一条「成本超预算 N 项」,写明最严重的那项(例如「房租 本月 ¥500.00,比预算 ¥400.00 多 25%」),点进去直接到预算页。没设预算的项目不判断;时薪工资只有设了预算才参与。
  • 小程序「成本和家当」新增第四个分页「预算」:每一类成本一张卡,显示预算、本月实际、差额和「超支 / 略超 / 没超 / 未设预算」;有「设置」权限的账号可以直接在手机上设预算、改预算、留空清掉。网页成本页的预算表口径不变。
  • 顺带补了一个漏:小程序老板首页「要你处理」的白名单里没有「证照合同到期」和「成本超预算」,后端有、首页看不到,现在都列出来了(模块「成本和家当」关了就不列)。
老板/店长尚未上线

新增「证照合同」:营业执照、卫生许可、租约等到期日记录和提醒

  • 以前:营业执照、卫生/食品许可、消防、酒类/烟草零售许可、租约、保险、设备保养合同都有到期日,过期有罚款或停业的风险,但系统里没有地方记。
  • 现在:网页「成本和家当」页的「家当」里多了「证照合同」分页,小程序「成本和家当 → 家当」里也有同名分页。记一项:名称、类别、到期日、提前几天提醒(默认 30)、备注。每一项显示「还有几天到期」或「已过期几天」,续期就点「续期 / 改」把到期日改到新的日期。删除前会先确认。
  • 到期前(进入提醒的天数后)会出现在老板首页的「要你处理」里:已过期或 7 天内到期标高,其余标中;点进去直接到这个分页。这是人工记录,不会自动去查政府系统,也不用新的权限——能看账的人能看,有「成本管理」权限的人能记、改、删。
老板尚未上线

成本页新增「预算 vs 实际」

  • 以前:成本页只有实际数,没有预算可对比。
  • 现在:成本页多了「预算 vs 实际」表:每一类成本(房租、水电、固定薪资、保险、维修保养、营销、耗材杂支、其他、开办摊销、员工提成、时薪工资)一行,左边是你设的每月预算,右边是本月实际,再给差额和状态。实际比预算高 10% 以上标红「超支」,高一点标黄「略超」;没设预算的写「未设预算」、实际读不到的写「读不到」,都不下结论。点「设预算」填一个金额保存,留空就是不设。
  • 先做每月同额的预算,还没有按月分别设。预算只用来并排对比,不是凭证,不进会计账。设预算需要「设置」权限,没有的人只能看。
老板尚未上线

毛利看板新增「各品类成本率 vs 目标」

  • 以前:毛利看板只看每个商品的毛利率,没有「这一类的成本率比我定的标准高了多少」。
  • 现在:毛利看板顶部多了一张表,每个品类一行:商品数(成本已知几个)、实际成本率、你设的目标、差几个百分点、状态。点「设目标」填一个百分数(例如 30 表示 30%)保存;每家店的标准不同,系统不替你猜,没设的写「未设目标」。实际成本率比目标高出 3 个百分点以上标红「超标」,超标的排在最前面。
  • 成本读不到的商品占该类三成以上时,只写「成本依据不足」,不下超标或正常的结论,免得成本缺失把数字拉低、给出假安心。设目标需要「设置」权限,没有这个权限的人只能看。
老板/店长尚未上线

网页补上「家当」:押金、保证金、设备、装修的登记(三端统一)

  • 以前:门店资产(押金、保证金、设备、装修)只有小程序能登记,网页没有这一页,只有会计页的「资产入账」。
  • 现在:网页「成本」页改名「成本和家当」(跟小程序同名),页内多了「家当」视图:顶部汇总「押在外面」「现在大概还值」「已了结」,列表分「在手上 / 已了结」,可以记一笔、改、点「处置掉了」或「押金收回了」(填收回金额和日期)、删除;删除和了结都要先确认。每张卡片标「已入会计账 / 没入会计账」,已入账的写明会计账上这笔是多少钱。
  • 已入会计账的资产不能改原值、月数、取得日、类别,也不能删除,页面会提示先到「会计 → 资产入账」撤销入账;已入账的押金点「收回了」、设备点「处置掉了」会自动记会计账。写操作需要「记账/成本管理」权限,只有查看权限的人只读。
  • 会计页「资产入账」里的提示也改成指向「成本和家当 → 家当」。
老板尚未上线

小程序家当页:每笔资产标明有没有入会计账

  • 以前:「成本和家当」里的家当卡片看不出哪笔已经挂进会计账。
  • 现在:每张卡片右上角标「已入会计账」或「没入会计账」(押金退回并记账的标「已退回并记账」)。已入账的卡片下面多一行小字,写明会计账上这笔是多少钱、为什么和「大概还值」可能差一个月——本月的折旧要等月底「费用入账」才从会计账里扣。已处置但自动转出失败的设备或装修会用红字提醒要手工转出。
  • 后端的门店资产列表同时多回了入账状态、入账日、方式和会计净值,一次查询取回,数字都由后端算。
老板尚未上线

成本页写明上月运营成本记进会计账了没有;现金流水保留两位小数

  • 成本页多了一行:写明上一个月的运营成本有没有记进会计账——已记进去就写金额,还没记就提示「会计利润表里看不到这笔费用」并给「去会计 → 费用入账」的链接,成本改过则提示重新入账。以前老板在成本页看不出它和会计账差多少。
  • 成本页口径说明里原来写「提成结算……在账上没有分录」,现在员工提成已经按月记进会计账,这句话改正了。
  • 现金流水页的现金差异(长款、短款)、班中现金进出、净额改成保留两位小数。以前取整,0.4 元的差异会显示成「¥0」。
老板尚未上线

财务健康、股权分红、成本页的内部词改成人话

  • 财务健康页:「毛利趋势」旁的徽标「挡风玻璃」改成「预测」;利润归因表的「后端怎么判的」改成「为什么低」,每行的「后端没把它归进某一类原因…」改成「没归到具体原因,见上面这条说明」。
  • 股权分红页:「pending 分红」改成「待发放分红」,「requested/approved/paid」改成「已申请、已批准、已打款」,「两套 paid」「后端列表上限」「服务端」这些说法改成老板读得懂的话。成本页和股权分红页的「payroll 类固定成本」改成「固定薪资类成本」。
老板/店长尚未上线

小程序会计页分页标签不再折成两行

  • 以前:小程序「会计」页有 7 个分页,标签被挤成两个字宽,「渠道结算」「资产入账」这些折成两行,很难读。
  • 现在:分页超过 4 个的页面(会计页、员工名册等)改成可以左右滑动的单行页签,4 个及以内的保持原样。会计分录页顶部那句「法人 xxxx。金额是服务端字符串。空不是 0。」也改成了人话。
老板/会计尚未上线

设备、装修处置时自动转出账上剩余净值

  • 以前:入了会计账的设备或装修处置(报废、卖掉)后,账上剩余净值不会自动转出,要手工做凭证。
  • 现在:在「门店资产」里点处置,会自动把剩余净值转出。收回的钱进银行存款,收回得比净值少的差额记营业外支出,卖得比净值高的部分记营业外收入。折旧从处置当月起停止;处置月之前还没入账的月度折旧,仍然由「费用入账」补记,补完设备账刚好归零。
  • 已处置转出的资产不能再撤销入账。如果自动转出失败(会进「没入账」页待补记),处置本身不受影响,「资产入账」页仍会标出「要手工转出」。
老板/会计尚未上线

小程序会计页:资产入账、分店利润表、银行对账

  • 以前:分店利润表、银行对账、资产入账只有网页能用。
  • 现在:小程序「会计」页多了三个分页,老板在手机上也能做。「资产入账」:逐笔把押金、保证金、设备、装修挂进会计账,选「早就有的」或「刚买的」,有疑似重复会先提示,入账和撤销都要先确认。「分店利润表」:选日期和内账外账,每家店一行看净利,最后有公司合计。「银行对账」:粘贴对账单导入、自动勾对、看未达账项和余额调节表、取消勾对。
  • 手工一对一配对没放到手机上(要同时点两张清单),用网页做。看分店利润表和银行对账需要「看账」权限;资产入账、导入和勾对需要「记账」权限。
老板/会计尚未上线

门店资产(押金、保证金、设备、装修)可以逐笔入会计账

  • 以前:「门店资产」里登记的押金、保证金、设备、装修只是一份登记,会计账(资产负债表)上没有。
  • 现在:会计页多了「资产入账」页签,逐笔把它们挂进会计账。两种方式:「早就有的」按今天的净值挂账,对方是「历史数据迁移调整」,不动银行、不影响利润;「刚买的」按原值挂账,同时从银行存款付出,入账晚了的话已过月份的折旧一次补上。
  • 设备折旧、装修摊销入账后随「费用入账」按月记(取得后每月一步,合计恰好等于原值)。押金、保证金不折旧,在「门店资产」里点「退回」会自动记账:收回的进银行,被扣的记营业外支出,多收的记营业外收入;记账失败不会挡住退回。
  • 为了不重复,不自动入:设备、装修有可能同时登记在「成本」里(那边已经随「费用入账」记过),入账前会提示运营成本里看起来是同一笔的,核对过才让入。入账后不能改原值、摊提月数、取得日、类别,也不能删除,改错了先撤销入账(记一张反向凭证;已记过折旧的月份会提示重新入账)。设备或装修处置后账上剩余净值不会自动转出,页面会标出来,要手工做凭证。
会计尚未上线

银行对账:勾错了可以取消勾对

  • 银行对账页多了「最近勾对上的」清单(最近 50 笔,写着对上的凭证号和是自动还是手工),每行有「取消勾对」,勾错了点一下,两笔回到未勾对清单可以重配。
  • 分店利润表底下关于「未分配门店」的说明改得更准:没有收入时不再写「收入 ¥0.00」。
老板/会计尚未上线

员工工资(按小时/月薪)也能随月度费用入账

  • 现在:「费用入账」按月入账时,把员工工资(按小时或月薪算的)一起记进会计账:费用记「员工工资」,从银行存款出。金额用月度损益里人力成本同一个算法。
  • 口径有疑问的月份不记,并在页面上写明原因:有员工没填时薪或月薪、算不出完整数字时,整笔不记(不会只记一部分);既有「固定薪资」成本、又有打卡时薪的员工,可能把同一个人算了两遍,要先到「成本」页核对再入账。网页和小程序的费用入账页都会显示这条说明。
会计尚未上线

新增「银行对账」:导入对账单、自动勾对、出余额调节表

  • 现在:会计页多了「银行对账」页签。把网银导出的对账单粘进去导入,点「自动勾对」(金额一样、日期差 3 天内的自动配成一对),剩下的就是未达账项,分「账上有银行没有」「银行有账上没有」两张清单;也可以各选一笔手工配对。
  • 填上对账单期末余额,就出余额调节表:银行余额加减未达,对比账面余额加减未达,两边调完是否相等一眼看出。
  • 只对账,不产生任何凭证;银行有而账上没有的,要你自己补凭证,补一边就够,不要两边都补。导入整份成功或整份失败,哪一行看不懂会告诉你第几行;同一份重复导入会跳过。导入和勾对要记账权限,看不用。
老板/会计尚未上线

会计账分门店:新增「分店利润表」

  • 以前:会计账只有一个公司整体的利润表,多家门店看不出每家店各赚多少。
  • 现在:每张凭证都记着它属于哪家店,会计页多了「分店利润表」页签:选日期和账套,每家店一行,看收入、成本、毛利、营业费用、净利,最后有公司合计。没有门店归属的(渠道结算手续费、手工凭证、早期凭证)单独列在「未分配门店」,不平摊、不乱猜;各店加未分配等于公司合计,后端会自检,对不上会在页面上提示。
  • 老凭证已按订单、退款、礼品卡、采购、盘点、调拨、订位、费用入账等凭据补上了门店;订单已被清理掉的老凭证查不到门店,就留在「未分配」。
老板/店长尚未上线

员工提成进会计账:按月计提、发放时冲掉

  • 以前:员工提成只在「成本」页算进净利,会计账里没有。
  • 现在:「费用入账」按月把员工提成一起记进会计账——先记「员工提成」费用和「应付提成」,员工提成结算发放时再从银行存款冲掉应付提成。金额用月度损益同一个函数算(已排除作废的,也不含收银差异奖惩),所以会计账和老板看的净利里的提成一致。收银差异奖惩的结算不入账,避免多冲。入账失败不会挡住提成结算,会进「待补记」队列。
  • 同时堵了一个会悄悄漏记的洞:记账规则以后再加新的一条时,老账户手里还是旧规则,新金额会被悄悄丢掉(凭证看上去还借贷相等)。现在每次入账前先补齐规则,记完再核对凭证金额,对不上整笔回滚。按小时的工资还没入账(涉及固定薪资是否重复的确认,另做)。
老板/店长尚未上线

运营成本终于进会计账:费用入账(按月)

  • 以前:房租、水电、固定薪资、装修摊销这些运营成本(费用报销审批通过后也会落成运营成本)只在「成本」页算净利,会计利润表里没有费用行,老板看的净利和会计账是两个数。
  • 现在:会计页新增「费用入账」。每个已结束的月份点一下「入账」,系统按网页「月度损益」同一个算法,把当月运营成本记进会计账:房租、水电、固定薪资、保险、维修、营销、耗材杂支、其他各记各的费用科目,钱从银行存款出。装修这类要摊销的,首月整笔先挂「长期待摊费用」,之后每月摊进「开办摊销」。
  • 每月/每日的成本从记下它的那个月起才入账,不会给成本出现之前的月份记虚费用。成本改了可「重新入账」:先冲回旧的再记新的,凭证只增不改。只能入已结束的月份;费用报销已经在运营成本里,不会重复记;按小时的工资和提成暂不在这里。网页、老板手机(小程序会计页「费用入账」分页,需记账权限)都能做。
老板/店长尚未上线

微信、支付宝、银行卡的钱终于能「到账」:渠道结算 + 手续费入账

  • 以前:微信、支付宝、银行卡的销售全额记在「清算户」里,从来没有人把它结清——清算户只增不减、银行存款没有来源、手续费(约 0.6%)没算进费用,利润虚高。
  • 现在:会计页新增「渠道结算」。选渠道和日期,系统从总账算出这段账上净收款;你填账单上的实际到账(没有账单就按费率估算),差额自动记为「支付渠道手续费」,到账进银行存款。记错了可撤销:记一张反向分录,原凭证保留。
  • 防手误:到账比账上还多不让记;手续费超过 5% 要勾「确实这么高」;同一渠道日期区间不能重叠。网页、老板手机(小程序会计页「渠道结算」分页,需要记账权限)都能做。
  • 顺手:分录列表里 30 多种事件原来印英文,现在都是中文(网页、小程序)。
老板/店长尚未上线

班中现金进出现在会进会计账

  • 收银台和小程序「记一笔进出」登记的现金进出,原来只记在抽屉流水里,会计总账看不到,抽屉现金和账上现金对不上。现在每笔都会生成会计分录:杂支、代购计入费用;找零备用金、临时取现、其他先挂「现金往来待核销」,不进利润表;流入冲往来。已有的 38 笔历史登记在测试机补记完成。
  • 礼品卡发行/充值、储值清退这几处本来就有自己的分录,不会重复记。入账失败不会挡住登记现金进出,会进「待补记」队列。
店长尚未上线

小程序本班现金没开班时标题挤在一起

  • 本班现金页在还没开班时,副标题和「还没开班」贴成一团。现在中间留出一档间距,已开班的页面不受影响。
老板/店长尚未上线

员工账号「最近登录」不再一片「还没登录过」

  • 员工账号页的「最近登录」原来几乎总是空:系统登入时从来没记这个时间,开过班、天天在用的人也显示「还没登录过」。现在员工每次登入成功都会记下时间,已有账号按登入日志补回了最近一次(测试机补了 132 个)。
老板尚未上线

开店设置:首页待办和设置页的「还差几组」对上了

  • 小程序首页「要你处理」里的「开店设置还差 N 组」,现在和点进去的「开店设置」页读同一份结果:页面写「已完成 x/6」,首页就写还差 6−x 组,名字是页面里那几行的标题原文(出品站分流、税率与小票、桌台状态颜色…)。
  • 以前首页数的是「开店第一周清单 + 人工/成本两格灯」,页面数的是另外 6 组,两边数字和名字对不上,首页还可能整条不显示而页面里仍有几组没填。
  • 人工占比、成本占比「填一次就能看」不再混进开店设置那一行,各自单独一条待办(先填工资设置 / 先做菜单体检),没有消失。
  • 网页后台首页同名待办:「x/y」和「还差…」只数点开后那张第一周清单里的项,人工/成本占比同样拆成单独待办(以前会写「3/6 · 还差打卡、人工」,点开清单里却没有人工)。
老板/店长尚未上线

小程序运营异常页补上「对不上的是哪几笔」

  • 运营异常页「虚拟余额对账」原来只写「会员账户:检查 104 项,发现 2 项不一致」,老板看得到数量,看不到是谁。现在下面列出对不上的账户:谁、账面多少、流水多少、差多少(最多 8 笔,手机号打码),跟网页后台同一份数据。
顾客尚未上线

外带取餐大屏在手机上不再挤成竖排

  • 外带取餐叫号页(#/pickup)在手机宽下,「制作中」一栏被挤成一字一行,取餐码盖出屏外。现在手机宽改成上下叠放:制作中在上、可取餐在下,取餐码一行一张。电视大屏版式不变。
顾客尚未上线

客人扫码点单:手机上菜品列表只有一半宽

  • 客人用手机扫桌贴打开点单页,菜品列表只有约 250px 宽,左右各空出一大块,菜名价格挤在中间。现在列表占满屏宽,左右边距跟页头一致。大图网格、幻灯片两种展示模式一起修。
顾客尚未上线

客人扫码点单:找不到桌台的提示改成中文

  • 扫了过期或印错的桌贴时,提示原来写「QR code 可能过期或有误」,中英文夹在一起。现在写「桌上的二维码可能过期或印错了——请找服务生协助确认」。
老板/店长尚未上线

网页日结页数字表下面的口径说明折叠

  • 日结页数字表下面约 150 字的「几列母体不同、为什么不能直接相减」说明,原来直接铺在手机首屏,占掉半屏。现在折成一行「这几行为什么不能直接相减(口径说明)」,点开看全文,内容一字没改。
收银/店长尚未上线

收银页「有新版本」黄条盖住结账入口、订单面板表头挤成竖排

  • 手机上出现「有新版本可用」黄条时,底部购物车栏(结账入口)被盖住。现在购物车栏自动抬到黄条上方。
  • 订单面板顶部:桌名「P3 · 露台 · 2 位」原先被 10 个操作按钮挤成一字一行;手机宽下桌名独占一行,按钮另起一行排开。
老板/店长尚未上线

网页日结空白天的提成块、订位表单手机宽、裸表单控件样式

  • 日结页:当天没有任何提成时,不再摆一整张全是 ¥0.00 的提成表,只留一句「今天没有符合资格的提成」。
  • 订位表单:手机宽下「时间 / 人数 / 称呼 / 手机」标签在输入框上方,一行一项,不再左右挤。
  • 没有写样式的下拉框、输入框(例如开台选桌)统一成跟其它表单一样的深色圆角控件。
老板/店长尚未上线

网页日结页手机宽的翻日期一排、优惠折让页订单号

  • 日结页顶上「← 前一营业日」「日期」「后一营业日 →」三个控件在手机宽折成三层。现在手机宽只留箭头和日期(读屏仍读完整名字),宽屏不变。优惠折让页的订单号缩成尾号。
老板/采购尚未上线

应付账款、收货单号缩短(网页+小程序)

  • 网页「采购 → 应付」每张应付卡原来把 PAY / PO / RCV 三个 30 位长码重复印好几遍(卡头一行,下面每个品项行又印一次应付单号)。现在缩成尾号,完整号停在鼠标上可见;付款申请表、收货纪录表同理。小程序「补货/收货」页的「最近收货」里的收货单号、退货单号用同一规则。
店长/采购尚未上线

网页采购单详情(手机宽)走真流程后修的几处

  • 在测试机上用真数据走完「集团采购单送出 → 门店确认下单 → 补单位换算 → 收货入库」:库存从 29 瓶变成 173 瓶(+6 箱 = 144 瓶),数字对得上。走的过程中修了:草稿单的明细表有 9 列,缺货/已收/已退/剩余在事情没发生前全是「—」或 0,手机宽被挤出屏幕,现在没发生的列不画;明细表、收货表、收货纪录表手机宽自己横向滚动,不再把整页拖偏;备注里的集团采购单号缩短;收完货的单不再写「供应商还没接单」。
老板尚未上线

集团采购:供应商没有名字时下拉显示空白

  • 集团采购新建单的供应商下拉里,没有名字的供应商显示成一个空白选项。现在写「(未命名供应商)」。测试机上 189 个测试供应商(Codex…、E2E…、T…编号、空名)已清理(软删除),下拉从 204 项降到 15 项。
全员尚未上线

网页顶栏「后台 ⇄ 收银」手机宽只留目的地

  • 手机宽度下,顶栏的「后台 ⇄ 收银」「铃铛」「退出」把页名挤成「订单…」。现在手机宽(≤480)这个切换按钮只写要去的那一边(在后台就写「收银」),宽屏不变。
老板/店长尚未上线

网页订单查询、调拨列表单号缩短;采购待收货卡去重

  • 网页「订单查询」每行的订单号(ORD-6A3E-20261016-863676)在手机宽被截成「ORD-6A3E-2026…」,看不出是哪一单。现在写「863676 · 10/16」,调拨单号同理(完整单号停在鼠标上可见)。采购「待收货」卡头原来写一遍「这张单没有金额」,展开区又写一遍「…不能收货」,还把右边的总额挤成两行;卡头那句去掉。
老板尚未上线

首页「要你处理」里的内部单号读得懂了(网页+小程序)

  • 首页待办里夹着的内部单号原来原样显示,例如「PAY-6A3E-20260828072617-4BED 已逾期 56 天」「SH-…」。现在统一缩成「应付单(…4BED)」「8/31 班(…DEF9)」,采购单、订单、寄存单同理;负金额「¥-350」改成「-¥350」。网页和小程序首页同一规则。
店长/采购尚未上线

小程序补货页:参数区排版

  • 「补货 / 收货」页底部的参数区原来是「近 [7] 天日均用量 × 安全天数 [3]」——一个输入框在行内、一个掉到下一行,都没有标签。现在是两格并排:「看近几天的用量 7 天」「按几天的量备货 3 天」,下面一句话写算法。
老板/店长/采购尚未上线

采购单号缩短 + 集团采购单几处排版

  • 采购单号(PO-6A3E-20261001050020785-E139)、集团采购母单号(GPO-…)原来 30 位上下,在列表里占满整列。现在列表里写成「E139 · 10/1」,鼠标停上去(网页)仍是完整单号。网页采购页、集团采购页、小程序「补货/收货」的在途单和补货草稿提示都用同一规则。集团采购单还修了:子单状态原来显示英文 draft,现在写「草稿」;展开明细后第一项上方一条空带去掉;新建表单顶上的说明句和下面标签贴在一起,加了间距;税率旁标注「0.13 就是 13%」。
老板尚未上线

网页和小程序的操作日志都写出「操作人」;网页 8 页重复标题收掉

  • 网页操作日志「操作人」列、小程序操作日志每条的第二行,统一写「系统自动 / 姓名 / 已删除的账号」三种;原来的通用写入行只写「自动操作日志」,现在只留「谁、什么时候」。另外网页 8 个页面(股权分红、营销业绩、商品管理、咨客台、店规与公告、报销、请假、运营异常中心)顶栏已经有页名,页内又写一遍同样的大标题,现在页内那份只给读屏软件看。
老板尚未上线

操作日志能看到「谁做的」

  • 操作日志接口新增「操作人姓名」。原来网页只能靠另查员工名单,小程序根本没有这一项;现在接口直接给姓名(跟资金流水同一套),导出的 CSV 也多一列。
老板尚未上线

小程序员工角色页:「建议收窄」横幅不再占满首屏

  • 小程序「员工角色」页顶部的「建议收窄」横幅原来把同一份账号名单印两遍,占满第一屏,还排在店名条上面。现在店名条在最上,横幅只有一句结论加一句原因,名单折叠成「看名单(3 人)」点开才看;员工名册里的手机号改成中间四位打星。跟网页「员工权限」页同一个改法。
老板尚未上线

角色模板说明改成白话

  • 网页「连锁总部 → 员工与角色」页的角色卡片上,集团人资、集团营运总监、集团财务总监、店长等角色的说明原来是开发者内部笔记(含「审计报告 B9」「store_id=None」「accounting:journal」「码组合」),老板看不懂,还有繁简混排。现在统一改成简体白话短句,例如「管理所有门店的用户和权限组,可查看操作日志供合规检查。不能点单、动库存、动财务」。
老板尚未上线

操作日志:75 种动作补上人话名字

  • 操作日志里有 75 种动作(上班打卡、下班打卡、修改密码、更换登录手机号、生成客人扫码点单码、冲回提成、提交报销、发送短信等)原来都显示成「其他」,列表和筛选下拉里分不清谁是谁。现在都有中文名字,被拒绝的版本自动写成「××被拒」。
老板尚未上线

操作日志动作下拉:十几个「其他」合成一行

  • 筛选「动作」下拉里有 75 种没有人话名字的动作,全被写成「其他」,排着一长串一模一样的选项,点哪个都不知道筛什么。现在有名字的照常列,没名字的合并成一行说明「另有 75 种没起名的动作(用关键字搜)」。
老板/店长尚未上线

操作日志不再被「读取失败」刷屏

  • 后台「客人扫码点单(桌贴)」页每打开一次,会为每张桌请求一次小程序码;还没配微信 AppID 时这些请求按设计返回 503「微信小程序尚未配置」,页面静默退回临时码。但系统把每个 503 都记成一条「读取失败」写进操作日志,每开一次页写 4~30 条,真的故障被淹没。现在只豁免这一种有明确业务码的 503,其他 5xx 照记。
老板尚未上线

网页桌效、菜单工程:KPI 卡不再 4+1、4+2 地掉行

  • 桌效页 5 张数字卡原来排成 4+1(第 5 张孤零零掉一行),现在一排放下;菜单工程页 6 张卡原来 4+2,现在 3×2。窄屏仍自动折行。
老板/店长/采购尚未上线

网页进销存:14 个页签收成「常用 7 个 + 更多」

  • 进销存页顶上 14 个页签排成 3 行。现在第一排只放常用的 7 个(预警中心、库存总览、手动入库、批次/效期、库存流水、盘点、损耗),其余 7 个(仓库、移仓、历史快照、补货建议、周转天数、进货vs销售、操作日志)收进「更多」。当前停在其中一个页签时「更多」自动展开并高亮,晨报里「查看全部补货」这类直达链接不受影响。
老板/店长尚未上线

网页:订位空态、客人扫码点单、股东卡排版

  • 订位页没有预约时的说明从 3 句压成 2 句(去掉和上面重复的订金政策)。「客人扫码点单(桌贴)」每张卡片里的长说明缩成一句。股东档案卡片上 6 颗操作按钮原来在窄卡里参差折行,现在是两列等宽。
老板尚未上线

网页优惠券页:行销活动、券模板提到分析前面

  • 老板进来要做的是发券、建券,但页面最上面是复购率、连带率、券效概览、逐张券、ROI 一堆分析,券模板在约 3 屏之下。现在「行销活动」「券模板」排在这些分析前面(AI 建议卡和「还没有券」开场卡仍在最前),分析块顺序不变。
老板/店长尚未上线

网页后台设置页:输入框恢复统一样式

  • 设置页里文字、电话、网址输入框、下拉、多行框原来是浏览器自带的白灰小框,只有时间和数字框有样式。现在统一成和其他页一样的深色圆角输入框。后台所有用同一种表单排的页面一起受益。
老板尚未上线

成本页:口径说明折叠

  • KPI 卡和「新增成本项目」之间原来压着 3 段约 350 字的口径说明。现在折叠成「口径说明(净利怎么算,别跟分红页相加)」,点开才看;「本月时薪工资读不到」这种红字警告时默认展开,不会被藏。
老板尚未上线

员工权限页:「建议收窄」横幅不再占满第一屏

  • 原来这个横幅把同一份账号名单印了两遍,还带完整手机号,第一屏全是它,角色列表被挤到下面。现在一行结论 + 一句原因,名单折叠起来(每人一次,手机号中间四位打星)。
老板/店长尚未上线

网页后台:窄一点的屏幕上顶栏不再溢出、侧栏不再重复「总览」、总览里的班次号读得懂

  • 1024 宽(平板横放、半屏窗口)下顶栏塞了 10 个东西,右侧溢出 52px 出现横向滚动条,「问管家」输入框被压成 0 宽、店名折成三行。现在这一段宽度里「问管家」整条另起一行。侧栏「总览」组头和「总览」项目上下叠了两遍,现在只留一个。总览「要你处理」里班次现金差异原来写 31 位内部班次号和「¥-350.00」,现在写「9/27 班(…61E1) 差 -¥350.00」。会计页筛选下面 4 行说明折叠成「怎么读这一页」。
老板/店长/员工尚未上线

待我批核、菜单医生、临期预警、经营周报、补货:店名条在标题上方,版面对齐

  • 这五页的店名切换条原来在标题下面,整页也比别的页多缩进一圈。现在店名条在标题上方、边距与其他页一致。待我批核没有待办时的说明从 110 字压到 45 字。
老板/店长/员工尚未上线

我的客户:名单行不再印内部会员号

  • 名单每一行原来印「MB9E1000094」这种内部会员号,员工认不出来也念不出来。现在只留手机尾号、累计消费、到店次数、上次到店。
老板/店长/员工尚未上线

实时桌况:店名条挪到标题上方,版面和别的页对齐

  • 实时桌况的店名切换条原来在标题下面,别的页都在上面;页面还比别的页多缩进了一圈。现在顺序和边距都和其他页一致。
老板/店长尚未上线

员工账号:岗位名重复只写一次

  • 同一个人挂了两条同名岗位时,详情里写成「店长、店长」。现在只写一次「店长」。
老板/店长尚未上线

成本和家当:列表每行不再摆「删除」,金额加千分位

  • 「每月」「开店投入」列表里每一行都摆着「改 / 停用 / 删除」三颗按钮,删除是不可逆的低频动作。现在每行只留「改」和「停用/恢复」,「删掉这笔」放到点开「改这笔」之后的底部(红字)。三个页签(每月、开店投入、家当)的金额都补了千分位(¥3100 → ¥3,100)。
老板尚未上线

分红确认页:历史月份和金额读得出来

  • 历史分红原来一整行写「202607 · 净利 ¥253965.92 · 可分配 …」,月份像流水号、金额没有逗号。现在写成「2026年7月」,净利 / 可分配 / 留存另起一行并加千分位(跟网页 AdminDividend 一致);成本核对的提示压成一句。
老板/店长/员工尚未上线

咨客「待带位」行、商品管理页排版

  • 咨客页每个候位客人原来名字被 4 颗按钮挤成 3 行;现在名字占整行,叫号 / 带位 / 爽约 / 取消另起一行等宽,备注最多两行。商品管理页去掉多余的「搜商品」标签,沽清提示压成一句,改商品抽屉里「换一张封面」降为次级按钮。
老板/店长尚未上线

礼品卡:搜索框直接放页上,发卡作主按钮,卡号缩短

  • 去掉常驻的「查找」大按钮,搜索框带放大镜直接放在列表上方(键盘「搜索」键触发),「发卡」成为主按钮;未核销负债三行 + 长说明压成一行 + 一句话;列表里 29 位自动卡号缩成「…E97C29 · 9/24 发」,抽屉里仍是完整卡号;抽屉标题不再重复卡号。整页一屏。
老板/店长尚未上线

运营异常:风控信号两行都写「其他」,现在写清楚是什么、能点开账单

  • 风控信号行原来只写「其他」,看不出是哪张单、什么事。现在写「风控提醒 · 订单 · 时间」,点开直接看那张账单(比如一单被打了 50% 折扣)。
老板/店长/员工尚未上线

我的账号:改密码、换手机号不再整张表摊在页面上

  • 原来一页里摊开两张表单(6 个输入框、3 个按钮、2 段长说明),要滑 3 屏。现在页面只有身份卡 + 「登录密码 · 已设置」「更换登录手机号」两行入口 + 「我能做什么」,点开才弹出对应的抽屉,按钮吸在抽屉底部。手机号在身份卡上脱敏显示。
全员尚未上线

默认登录页不再写「绑定」

  • 没绑过手机号的人冷启动进小程序,看到的页面写「绑定手机号」「绑定」按钮,还带一个「← 返回」(退回顾客中心)。现在标题、按钮、页签统一写「登录」(密码登录 / 验证码登录),冷启动不放「← 返回」,底部多一条「我是顾客,去扫码点单」。
全员尚未上线

开瓶寄存:36 位寄存单号只显示末段短号

  • 寄存清单和「带走」抽屉里写的是 STO-6A3E-20261016090140-92B023 这种 30 多位内部编码,吧台没法抄到酒标上也念不出来。现在超过 14 位的只显示末段,例如「编号 92B023 · 剩 1 / 1 瓶」;短单号(如 STG-0001)原样。完整单号仍在后端。
全员尚未上线

跟进提醒:「打电话」「已联系」并排等宽,号码只显示前 3 后 4

  • 跟进提醒每张卡里「打电话」是大按钮、「已联系」是小按钮,上下叠着,打完电话容易漏点「已联系」,第二天又来。现在两个并排等宽。
  • 卡片上一整句备注里混着完整手机号。现在号码显示成 139****8881,点「打电话」仍拨完整号码;没留名字时也不再把完整号码当名字显示。
  • 手机号渲染闸门基线 60 处收紧到 58 处。
老板尚未上线

挂账列表:行里不再印长订单号,「挂多少、收了多少」看得见了

  • 挂账页每行副标题被 36 位订单号占满,后面的「挂 ¥… 已收 ¥…」被截掉。现在只写桌号和金额,订单号点进去抽屉里仍有。
全员尚未上线

交班留言:系统自动提醒折成一组并去重;沽清「已沽清」按钮改淡红

  • 交班留言里真人写的话和系统自动写的「📦【库存自动】1 项低库存:世涛黑啤」混在同一条时间线,而且同一句隔几天来一条,把真人交代的事淹掉。现在系统提醒单独成一组放在最下面,默认折叠,相同的只留最新一条,点开能看;真人留言留在时间线上。已置顶的不动。
  • 沽清页「已沽清·点击恢复」原来整块实心红,比其它行的按钮抢眼太多,而恢复是好事。改成淡红底红字。
老板尚未上线

顾客名单:右侧那列金额标明是「累计消费」

  • 顾客名单每行右侧有一个金额但没写是什么,Wang 显示 ¥1,090.00 而他的储值余额是 ¥0,看着像对不上。现在名单上方写「右侧金额 = 累计消费」。
全员尚未上线

员工侧搜会员:结果里的手机号只显示前 3 后 4

  • 收款抽屉里「绑定/更换会员」的搜索结果、「跟进」页挑选会员的搜索结果,原来直接显示完整手机号。现在显示 139****0099 这种前 3 后 4,与隐私政策里「默认只显示前 3 后 4」一致。需要完整号码的地方(拨号、表单)不受影响。
全员尚未上线

默认进小程序直接到登录页,不再先停在「顾客中心 · 请输入桌贴编号」

  • 没扫桌贴、没登录过、微信也没绑过员工账号的人,打开小程序以前先看到「顾客中心」和一个要手敲桌贴编号的输入框,体验不好。现在直接进「绑定手机号」登录页;页内左上有「← 返回」可去顾客中心。
  • 扫桌贴进来的顾客不受影响(带桌贴参数直接进菜单);微信审核用的「看看点单是什么样」仍在顾客中心里。原来冷启动弹的「来管店还是来点单」选择单,因为这一路本身已是登录页,不再弹。
全员尚未上线

开瓶寄存:存酒的商品可以搜索了;数量/单位/售价加了标签

  • 存酒时选商品原来是一整面纯文字胶囊(正式库 30 个已经滑不到头,真实门店一百多支酒更长)。现在超过 8 支就出现搜索框,按品名、拼音首字母、别名都能搜(「波本」「ss」实测命中);已选中的那支搜不到时仍排在最前面。
  • 「1 / 瓶 / 售价」三个只有占位字的格子改成纵向表单、带「数量 / 单位 / 售价(元)」标签。
全员尚未上线

微信审核整改:收集手机号前先展示《用户服务协议》《隐私政策》,勾选同意后才提交

  • 微信审核指出小程序收集手机号,需补充用户服务协议与隐私政策,写明收集目的、方式和用途,并取得用户同意后才能收集。
  • 新增「用户服务协议」「隐私政策」展示页(主包、免登录,审核人员与未登录顾客都能直接打开);正文逐项写明:手机号用于登录/绑定、自助订位、认领会员、用餐反馈回访、开票通知,只在用户主动填写并提交时收集;另说明订单/订位/发票/反馈、微信登录凭证(OpenID)、相机/相册的用途;保存期限、对外提供范围(门店、短信与云服务商)、用户查询/更正/删除/撤回同意的权利、联系邮箱。
  • 五类收手机号的入口——店主员工登录与绑定、顾客自助订位、认领会员、用餐反馈「需要店里联系你」、开票申请联系电话——在发验证码/提交之前必须已勾选「我已阅读并同意《用户服务协议》和《隐私政策》」,没勾就不发请求,弹提示并把勾选框标红;勾选记在本机(协议改版后会再问)。顾客「这家店」页底部与登录页底部加了常驻的协议入口。
老板尚未上线

班次、会员等级这类名字改成人话,不再露出一串编号

  • 今日账、本班现金的班次卡标题改成「谁 · 几号几点 班」+「已开 N 天 N 小时」,编号只放详情页最底。
  • 后端新增 display_name,前端只画它;审计类型、门店名同理。
股东尚未上线

股东首页:没绑定门店时写清原因,股比和出资要先短信验证才显示

  • 股东未绑定门店时,分红卡写「还没绑定门店,分红记录会在绑定后出现」,不再用一个 0 当成「没有分红」。
  • 我的股比与出资折叠在「查看股比与出资」后面,验证是本人之后才显示。
老板尚未上线

「AI 主动发现」前期是 0 或很小的时候不再算环比,样本不够的结论不出

  • 以前前期为 0 或很小,也会写成「环比 +800% 以上」「某时段成长最多」,基数小得没有意义。现在前期为 0 改成「本期 X,上期没有这个时段的记录」,不给百分比、不参与「最多」排序。
  • 「最/最多/成长最快」类结论要求本期和上期都达到店设下限(初值:订单数和金额都有门槛);不满足就这一条不出,不是出一条弱的。
  • 比较窗口包含「数据截止」之后的空白日时,只比到截止日,并在句首写「截至 10-13」。变化太小(绝对值或占比)的不进卡片。没有够格的发现,整块不出现,不写「暂无发现」。
文案

官网多了一篇:怎么让客人扫码点单

  • 打开 /guides/scan-ordering/ 可以看生成桌贴、客人下单、看进度的步骤。
  • 这一页已经在官网,网页后台和小程序没有一起发。
全站尚未上线

官网新增常见问题、费用、术语、导入指南等说明页

  • 官网新增了常见问题页,把店里常问的事写成可以直接打开的说明。
  • 新增了费用说明页,写明目前不收软件使用费,也不按门店数量或功能分档加价,并以该页的更新日期为准。
  • 新增了术语页,用一句话解释日结、交班、挂账、开瓶寄存、最低消费这些词。
  • 新增了关于页,说明功能清单和已经上线的更新分别以哪一页为准。
  • 新增了导入指南:在设置里的数据迁移,用表格文件导入菜单、会员和期初库存。先预览,确认后才写入;重复的记录会跳过,不会覆盖已经有的资料。
收银

桌台第二行、店名和厨房单位不再被拆开,超过两小时改写成小时或天

  • 桌台卡片第二行改成一整句,圆点不再落到下一行的开头。
  • 待清洁的卡第二行写「尚未清洁」,清洁按钮紧跟在这句话后面。
  • 手机宽的店铺按钮和店标同一行,至少留四个字。班次药丸保持整句,放不下的主题和退出换到下一行。
  • 厨房统计卡上的数字和单位整段换行。
  • 超过两小时的等待改写成小时或天。超过两小时还没处理的服务呼叫,不再算进待处理。
  • 销售页写明:今日已结营收不含未结的桌;员工销售额按送出金额,含还没结账的。
收银

桌台和后台标签不再一个字一行

  • 收银台桌台卡片上的状态和标记保持一行,窄屏不再竖着排。
  • 后台排班、后厨、销售、菜单工程、折扣、优惠券、菜单、商品、存酒、礼品卡、请假这些页的标签同样保持一行。
  • 窄屏顶栏里店名会缩短,退出和铃铛留在屏幕里。
收银

收银台铃铛的请求列表现在完整留在屏幕里

  • 窄屏点收银台右上角铃铛,请求列表现在左右都在屏幕内,不再被切掉一半。
  • 每条请求是一行主信息、一行小字,「已处理」保持在一行。
收银

开票、挂账这些列表恢复成正常的一行一行

  • 开票、挂账、班次纪录、员工账号的列表重新是一行主信息、一行小字,点开是左边标签、右边数值。
  • 之前样式少了一个括号,这些页面的排版整段没有生效,看起来像裸文字。
老板尚未上线

新增「作废和赠送」报表:谁送了什么、什么原因、谁授权;谁作废了什么、送单后多久,一页看清

  • 网页后台「作废和赠送」页(侧栏「报表」组)和小程序同名页(更多功能里,需要查看报表权限):两个页签「赠送和招待」「作废」。赠送按原因、类别(送给客人 / 店里招待)、操作人、授权人汇总;作废按原因、作废人、点单人、送单后多久作废汇总,整单作废单独列;网页上还有按品项和明细、可导出 CSV。
  • 让利金额按原价算,跟日结页「让利」里的赠送是同一个数;作废率 = 作废单品金额 ÷ 同期净销售,没有净销售时写「算不出」不画 0%。退款不算作废。
  • 有「看成本」权限的人才看到成本;还没结账的赠品成本还没回填,会写「另有 N 件还没结账,成本没回填」,不当成 0 成本。明细只列金额最大的前 50 条,会写「只列了前 N 条(共 M 条)」。「没记录原因」表示这项功能上线前、或旧版本记的,不是没有原因。
  • 同批把「作废、赠送、招待都要记原因和授权人」(T-3030)正式合并上线:后端新增原因表和授权人记录(设置里可管理原因),网页收银台作废、赠送时必须选原因,送单后赠送不再用 100% 折扣顶替。
老板尚未上线

小程序新增「线上收入」和「优惠统计」两页:线上收款对账、促销折扣免单让利一目了然

  • 「线上收入」(更多功能里,需要查看报表权限):微信、支付宝逐笔收款,顶部写合计、笔数和「有几笔没对上账」;可按渠道、对账状态(已对上 / 待确认 / 缺流水号)筛选,营业日不选就是今天的营业日。「缺流水号」是最该先查的一种——这笔没有第三方流水号,没法跟支付平台核对。合计读不到写「合计没读到」,不画成 ¥0.00,也不说「全部对上了」。
  • 「优惠统计」:选一个月,看让利合计(占小计几 %、几笔、几张已结账单),下面按类型一行一类:促销活动、会员折扣、时段优惠、优惠券、手动折扣(含抹零)、整单免单、店长特批,免单和特批标「重点看」;收起行「谁在用」按操作人列出。
  • 这两页网页后台早就有,手机上以前没有;数字用的是同一个后端接口、同一个口径。「优惠统计」不放明细清单(后端明细只回金额最大的 100 条,放出来会被误读成全部)。
老板尚未上线

交班时提醒「打烊清单还没勾完」,只提醒不拦

  • 网页交班弹窗和小程序交班抽屉里,如果这家店设了打烊清单、已经到了打烊时间、还有没勾的项,会多一句「打烊清单还有 N 项没勾(不影响交班)」,列前几项没做的,点「去勾」直接进开档打烊页。
  • 只是提醒:不影响交班,也不要求先勾完。清单读不到时写「打烊清单没读到(不影响交班)」,不当成「都做完了」。没配置清单、还没到打烊时间、已经勾完时都不出现。
老板尚未上线

新增「开档打烊」清单:每个营业日勾一遍,谁几点做的记下来,到点没做完才提醒老板

  • 网页后台和小程序都多了「开档打烊」页(小程序在「更多功能」里):开档、打烊两张清单,按岗位(服务员、吧台、厨房、通用)分组,一项一行一个勾,勾了写「谁 · 几点」,网页上还能写备注;顶部写「还没做:吧台 4 项 · 服务员 1 项」。店里任何登录员工都能勾,不需要额外权限。
  • 每家店自己设清单:有「设置」权限的人在页内「管理清单」里加事项、改名、换岗位、上下移、停用;一家店还没有清单时,点「套用酒吧模板」一键带入一套开档 8 项、打烊 8 项(小程序里可以套用模板、加事项、停用,改名和调顺序在网页上做)。读一下页面不会偷偷写进数据库。
  • 老板首页「要你处理」到点没做完才出现:开档清单从营业前 1 小时起、打烊清单从打烊时间起,没勾完就出一行「开档清单还有 7 项没做」,点进去看是哪几项;勾完就消失。没配置过清单的店不出现。按店里的营业日和营业时间算,跨午夜的店(17:00–02:00)也对。
  • 不拦任何营业动作,只提醒。
老板尚未上线

老板首页参考区第一行改成「昨天」:进账、客单、毛利、人工占比、异常几班,一眼看完

  • 网页总览和小程序老板首页的参考区,第一行是「昨天」,收起时就能看到:进账、客单、毛利、人工占比、现金对不上的班数;点开是原来的近 7 / 30 天营业,里面多一个「看巡店日报」入口。
  • 「昨天」指门店营业日的前一天(按店里的时区和营业日切点算),不是日历上的昨天。昨天没营业就写「昨天没营业」,不画一排 0。
  • 每个数字读不到就写「XX没读到」,不画成 0;没设时薪或没出勤数据时写「人工没设时薪」,不写「人工 0%」;没有看成本权限的人看不到毛利、人工、异常,只看到进账和客单。
  • 小程序里这一行文字较长,会换行显示完整,不再被截断。
老板

网页后台侧栏收成 8 个入口:总览、AI 管家、钱、生意、商品库存、客户与营销、团队、设置

  • 侧栏原来 12 个分组加「决策/功能/设置」三段标题,现在只剩 8 个一级入口,反馈固定在最下面;默认全部收起,点开才看到里面的页面。
  • 几个原来的小组并进来后,在展开的里面用一行小标题保留原来的叫法,例如「生意」里分「现场」「报表」,「商品库存」里分「吧台库存」「门店与商品」。
  • 所有页面、权限、网址都没变;搜索框、「常用」、审批和调拨的红点照旧。
后台

后台设置能看到每种通知短信现在能不能发出去

  • 后台设置里能看到每种通知短信现在是已开通、模板没配,还是短信账号没配。
  • 短信账号没配时,不会写成已开通。
  • 存酒三条、发券、供应商两条这次没有新的发送。小程序和 App 这次没有上传。
厨房

吧台的隔夜没划的票可以折叠、一次清掉,等待时间写成几天

  • 隔夜没划完的票收成一行。全是已好的另收成「隔夜已好待上桌 · N 张」,后面紧挨着写(展开),打开后写成(收起)。可以一次标成已好,10 秒内能撤销。超过一天的等待写成几天。
厨房

厨房首页只留待做清单,沽清可以撤销

  • 网页厨房首页第一行只留「待做清单」。没有清台权限的人看不到清台。沽清之后可以撤销。
全员

半夜到早上 8 点的单和储值,算在当天营业日

  • 半夜到早上 8 点写下的单、储值和会员消费,算在当天营业日,不再被世界时的零点切到前一天。换日时间仍是这家店自己设的,没改。
  • 订位周视图改按营业日。凌晨 1 点的订位排在前一晚那一天。
  • 增值税申报、召回、供应商承诺日仍按日历日,这三处没有改。
老板/财务

提成、分红、未结、应付和今天进账改读服务端合计

  • 提成的待发、已发、冲回一次算完,外部推广和营销归因分开。推广页也读这份汇总,不再自己算客单、退款率、复购。
  • 待发分红按股东一次算完。出资合计读不到就写读不到,不再显示本地估算。
  • 开台未结按这家店现在所有没结的单算,缺金额就标不完整,不再只加这一页桌况。
  • 要付的钱分成已逾期、7 天内、更晚。付款申请改叫「付款申请中」,不和欠款加在一起。
  • 今天进账读不到时写「今天进账没读到」,真的是 0 时写 ¥0。不再显示没扣退款的毛额。
登入

登录之后优先放进钥匙串

  • 登录之后,会话优先放进系统钥匙串,不再默认明文放在普通偏好里。
  • 钥匙串用不了时才退回原来的偏好,并清掉留下的明文。
登入

有报表或会计权限的人,登入后进总览

  • 有报表或会计权限的人,登入后进后台总览,不再被收银页截走。
  • 只有收银权限、没有这两把权限的人,仍然进收银。
  • 上次记住的页面如果这个人打不开,不会再送去那个页面。
后台

存酒不再有「没收」:到期可以延期,或转回店里库存

  • 存酒拿掉「没收」。到期的酒现在有两种处理:给客人「延期」(设新的到期日),或者「到期转回库存」(剩下的酒回到店里库存,客人之后就不能再取)。
  • 延期的确认框会写清楚原到期日和新到期日;转回库存的确认框会写「这瓶酒已过期 N 天。剩余 N 瓶转回店里库存,客人之后不能再取」。只有真的过期了才能转回库存。
  • 存酒列表新增「7 天内到期」筛选,在打开页面时计算,没有定时任务。已经过期但还没处理的,也会列在里面。
  • 客人在「我存的酒」里看得到已经转回库存的那一瓶,排在最下面、灰色显示,写着哪一天转回。
  • 延期和转回库存都要有存酒管理权限;只有查看库存权限的人看不到这两个按钮。
  • 网页、小程序、Flutter 三端都改了。
后台

流失预警读不到时,不再说「没有需要联系的常客」

  • 后台总览的「流失预警」卡:名单读取失败时,卡片照常显示,并写「流失预警读取失败,不代表没有需要联系的常客」,附重试按钮。
  • 还在读取中、或这项功能没开的时候,维持原样不显示;真的读到了而且名单是空的,才不显示这张卡。
全站

官网首页改成简单直接:是什么、要不要钱、怎么开始

  • 首页只剩五段:首屏「免费的收银系统」和两个按钮(免费开店、先看演示店);能做什么(6 行);酒吧用得上的(4 行);费用加 3 个常见问题(要买设备吗、能从现在的系统换过来吗、数据安全吗);结尾。
  • 新增「全部功能」页 /features/,完整功能清单搬到这里。
  • 删掉演示动画、自造词和比喻句(管家、五柱、雷达、口径、满血等)、首页的「最近更新」和对比表。
  • 每一句都对照过代码:例如微信、支付宝写明「用你店里原来的收款码」,简报写「打开后台就有」而不是「每天早上推送」,换系统写「商品和会员可以用表格导入」。
后台

打烊后的提示在读不到桌况时,不再硬说「是还没打烊」

  • 网页:桌况读不到或还在读取时,打烊提示拿掉「不是没做生意,是还没打烊」这句没有根据的话。
  • 小程序:同一个情况改用已有的「桌况读不到」说法,跟同一页的其他提示一致。
后台

预订、翻台、分红、月结、合伙出资、提成、库存、存酒等页面读不到数据时,不再显示成「没有」或 0

  • 预订页、翻台效率:数据一时读不到时,以前会显示成「今天没有预订」或空白的效率表;现在显示「读取失败」加重试。
  • 分红页:分红记录读不到时,以前按钮可能照常可按;现在读不到就停用「确认分红」,读到了才恢复。
  • 月结交接、合伙出资总览:读不到时不再显示成「没有待办」或金额 0。
  • 咨客台、提成明细:读不到时不再显示成「没有人」「没有提成」。
  • 库存页、存酒页:读不到时不再显示成「没有记录」,改为读取失败加重试。
收银

App(iOS/Android/macOS)选桌页面读不到桌台清单时,不再悄悄显示成本店没有桌台,统一先说读取失败再给重试

  • 选桌页面——以前读不到桌台清单时会直接显示「本店暂无桌台」,看起来跟「这家店真的没有设置任何桌台」一模一样;现在读不到就换成「桌台读不到——不是没有桌台」加一个重试按钮,同时「一键清台」旁边的数量也老实显示成「—」,不会看起来像「没有要清的桌」。读失败但手上有上一次读到的旧桌台清单时,桌台图照常显示,只在最上面加一条提示,说明这是旧数据、当前读取失败。
全员

老板首页开台数、选桌页面、客人扫码点单页读不到桌台清单时,不再悄悄当成确定的数字或没有桌台,统一先说读取失败再给重试;结账最低消费门槛读不到时也不再悄悄当成没有门槛

  • 老板首页「此刻脉搏」区块的开台中/在店客人/待结账/开台未结这四个数字——以前读不到桌台清单时会静默沿用一套只看时间的旧判断,首次读取失败时这四个数字会直接显示成 0 或 ¥0,看起来像「现在完全没有生意」;现在读不到就统一显示「—」,读取中显示「…」,读失败但手上还有上一次读到的旧数字时数字照常显示、加一个「旧数据」标记。
  • 选桌(桌台图)页面——以前读不到桌台清单时,不管是平面图还是列表视图都会直接画成空的,看起来跟「这家店真的没有设置任何桌台」一模一样;现在读不到就换成一句「桌台读不到——不是没有桌台」加一个重试按钮,不会误导成本店没有桌台;读失败但手上有上一次的旧桌台清单时,桌台图照常显示,只在最上面加一条「这是旧数据、当前读取失败」的提示。
  • 客人自己扫码点单的页面——以前如果桌台信息一时读不到,桌号会退化成显示一串没有意义的服务器内部编号,而不是客人认得出来的桌号;现在读不到就老实显示「桌号暂时读不到」,不会把内部编号露给客人看。
  • 结账时的最低消费门槛——以前如果桌台信息一时读不到,门槛会被悄悄当成 0 处理,可能让原本设了最低消费的桌子被当成完全没有门槛去收款;现在读不到就把「确认收款」这个按钮锁住,画面提示读取失败并给一个「重试」按钮;点单页面的合计金额旁边也会加一句「低消读不到」的提示,不会让画面看起来像「这桌明确没有低消门槛」。外卖单、吧台单本来就没有桌台、没有最低消费这个概念,这次改动确认不会误伤这两种订单。
全员

收银结账、费用编辑、会员备注、供应商异议等多处数据读不到时,不再悄悄当空值处理,统一先挡住再给重试

  • 结账时「已收订金」这个数字如果一时读不到,以前会被当成「没收过订金」,可能让客人被要求再付一次已经付过的钱;现在读不到就把收款按钮锁住,画面提示读取失败并给一个「重试」按钮,不会拿一个不确定的数字去收钱。
  • 客人自己在手机上「自行付款」时是同一个订金数字、同一个风险,而且这个画面没有店员在旁边盯着;现在同样读不到就不显示金额、不给按,只提示稍候或呼叫店员。
  • 编辑一笔订单的服务费/开瓶费时,如果这张单原有的费用数字一时读不到,以前会把输入框悄悄预填成 0,一旦确认就会把服务器上真实的费用直接改成 0;现在读不到就把输入框和确认按钮都锁住,不会误删已经设定好的费用。
  • 应付账款页面,如果「供应商是否有异议」这份记录一时读不到,以前会当成「没有异议」处理,店员照样能替这个供应商申请付款;现在读不到就先把所有供应商的「申请付款」都锁住,等确认真的没有异议才放行,避免付款给一个其实有未解决异议的供应商。
  • 会员详情页的私下备注和服务偏好,如果原有内容一时读不到,以前保存时会把这些内容悄悄覆盖成空白;现在读不到就把输入框改成只读、保存按钮锁住,不会把已经存在的备注或偏好覆盖掉。
  • 会员等级管理页,如果现有等级列表一时读不到,以前新增等级可能会跟既有等级的编号撞在一起、打乱升降级顺序;现在读不到就把「新增等级」锁住,等确认列表真的读到了才能新增。
  • 员工角色的权限设置页,目录读不到时原本显示「共 0 项权限可选」,把「读不到」说成了「系统里就是没有权限」;查过旧代码,保存角色这个动作本身不会把权限清空(勾选框是照着目录画出来的,目录读不到时没有勾选框可以改,新建角色时空集合本来就会被挡住存不了),这次只是把误导人的文案改成「权限目录读取失败」并给重试按钮。
  • 收银台首页扫码枪扫到条码、顶栏「出餐」计数、以及零门店账号看到的「你是谁」手机号——这三处以前读不到时会分别误报「未找到这个条码对应的商品」「出餐 0(看起来像后厨已经清空)」「这个身份没有手机号」;现在改成读取中/读取失败的老实提示,顶栏「出餐」读不到时显示「—」而不是假的 0(跟同一栏「毛额」的既有做法一致)。
  • 商品主档表里「本店是否上架」这一栏、成本条目「建立人」这一栏、日结页「本月待发提成」这个数字——以前读不到时分别会误显示成「未上架」「已离职/停用账号」「¥0.00」;现在改成读取中/读取失败并给重试,不冒充这三种具体结论。
  • AI 财务管家「成本覆盖率」判断、库存商品的进货流水记录、应付账款的订单三方核对表——以前读不到时分别会误报「近期没有发现异常」「这件商品还没有采购收货记录」「这张采购单本来就没有品项」;现在改成老实说读取失败,不下没查过的结论。
  • 商品寄存页的会员搜索、月度交接包「后端说没启用会计模块」这句提示是否属实的核对、以及前场「待取看板」——以前读不到时分别会误显示「找不到这位会员」「这句提示确实成立」「暂无待取的单」;现在改成读取失败/核对不了/看不到的老实提示。
  • 开业向导里「重做」面板、「桌贴码开通进度」、「添加第一个商品」这一步——以前读不到时分别会误显示「没有可重做的品项」「进度 0/N(像没开通)」「这一步还没做」;即使店家其实已经做完,也会被显示成没做,现在改成读取失败并给重试,不会让已完成的进度看起来像没做。
  • 总部集团采购单展开明细时的门店名称、以及收银结账画面的会员搜索——以前读不到时分别会误显示「未知门店」(即使是正常营业的店)和「找不到这位会员」;现在改成读取失败并给重试。
  • 收银台首页顶栏「开台」这个数字——以前读不到时前端只是跳过把新数据写回画面、继续显示上一次的本地状态,首次读取失败时这个状态就是初始空值,画面上看起来跟「真的开台数是 0」一模一样;现在读不到就显示「—」而不是假的 0,读失败但手上还有上一次成功读到的旧数字时,数字照常显示、旁边加一个「旧数据」的小标记,读取中显示「…」。
收银

订单退款记录三端一致:谁退的、什么时候、为什么都写清楚;读不到时明说读不到

  • 网页、小程序、平板/手机 App 的订单详情都有一块「退款记录」,逐笔列出金额、状态(已退款/审批中/已批准·待退款/已驳回)、时间、操作人、原因。以前 App 的订单详情完全没有这块,小程序的退款那一行太长会被截断、看不到时间。
  • 操作人分三种说法:有名字就写名字;账号已经删掉的写「账号已不存在」;单子上从没记过操作人的写「未记录操作人」。原因没填的写「未填写原因」,不会空着。已驳回的那笔金额加删除线,不算进合计。
  • 退款记录读不到的时候,三端都明写「退款记录读取失败」,不会显示成「没有退款」。
  • 老板首页的今日金额在小程序和 App 上都标明是「净销售 · 已扣退款」;小程序经营诊断页那个没扣退款的数字改叫「毛额」并注明「未扣退款」,跟网页的叫法一致。
  • 先查过小程序和 App 的「今日/本班」金额:都已经直接读后台的汇总数字,没有网页之前那种「自己拉单子加总、超过 200 单就少算」的问题。
全员

收银台顶栏、财务页、交班弹窗多处「今日」数字改读后端统一聚合口径,退款明细补齐真实时间与原因

  • 收银台顶栏原来标「营收」、其实显示的是毛额(标签与数值不一致),现在改成读后端统一的今日汇总接口,并把标签订正为「毛额」。
  • 财务页的打印摘要与导出表格、按支付方式分桶的数字,同样改读后端同一份日结报表;此前有几种支付方式被错误合并显示,现在分开显示,退款那一格的标签也改成明确写「退款笔数」。
  • AI 页的「今日摘要」卡片改用同一份后端数据,并理清了页面上「营收」与「净营收」两种说法互相冲突的地方。
  • 交班弹窗里的退款数字标签改成注明是「全店范围」,作废数字标签改成注明是「当前这台设备本次开班以来」——这两个原本容易被读成同一个范围。
  • 退款明细此前遇到历史数据缺口时会显示成固定的占位文字(原因写「未填写」、时间用付款时间代替、经手人用当时的收银员代替);现在改成显示每一笔退款真实的时间、方式、经手人和原因,查不到经手人时也会写明原因而不是编一个。
  • 订正了后台一处代码注释里对「某个全局提示条在这个页面也能看到」的错误描述——实测这个页面走的是完全独立的另一条路由,那个提示条渲染不到这里。
  • 后端三支与「今天」相关的统计快照(会员、会员周报、桌台翻台率)原本没有按门店自己设置的交班时间切分「今天」,统一改成按门店自己的设置计算——这条界面看不到变化,但会让这几类数字本身更准。
  • 还没来得及换成读后端的数字(仍靠本地拉取当天记录汇总的部分)补上了「读取失败/被截断」时的明确提示,不会再悄悄显示成一个看起来正常但可能不完整的数字。
财务

角色首页在日结报表重读失败时,不再把旧数据当成当下事实

  • 网页角色首页:手上有上次读到的日结报表、但这次重读失败时,旧数字照样显示并逐项标「旧数据」,上方写「刷新失败,下面是 HH:MM 读到的旧数据」。
  • 这种情况下:店长的「确认日结」挡住并写明原因;收银不再推开班或交班盘点,改为「看今天的班次」;会计不再显示「本期已关账」。
财务

订位查询的日期参数全是空白时不再报错 500

  • 订位清单的营业日、起日、迄日参数只填了空白时,一律当作没填:与新的营业日区间一起送不再报 500,单独送则回默认的日期范围。
财务

预警中心三张卡和日结确认按钮:读不到时不再显示成 0、「没有」或照常可按

  • 库存预警中心的损耗率卡读失败时数字写「读不到」,不再显示 0.0%;盘点提醒卡不再说「这家店还没有过确认盘点」,改说读不到、不确定盘过没有;进价异动卡不再显示 0 和「都在 15% 波动范围内」。
  • 网页日结页:报表没读到时,「确认日结」按钮挡住并写明原因;读成功过、这次重读失败时,旧数据照样显示并标明,按钮同样挡住。
  • 小程序日结:拿掉「红字错误」和「可以按的旧报表」同时出现的矛盾,照同一套判准处理。
  • App 日结:下拉刷新或确认后自动重读失败时,不再只弹一次提示,改成常驻「刷新失败,下面是 HH:MM 读到的旧数据」,确认/取消确认按钮都挡住。
财务

日期填错不再被悄悄忽略:订位、提成明细、门店资产改为直接报错

  • 订位清单的营业日参数填了不合法的日期时,以前会不加任何日期条件、回传整张表的历史订位,现在直接报错并点名参数。
  • 提成明细(明细、按人、按日、按类、对账五支)的起止日期填错时,以前会悄悄返回全部期间的数据,现在直接报错。
  • 门店资产的购入日期、关账日期填错时:以前关账会被悄悄记成今天并直接关掉、修改会悄悄不改却回成功、不存在的日期会报 500;现在一律直接报错并点名参数,没填的照旧。
  • 检查测试脚本会不会连到正式机的扫描器,补上一种原本看不到的写法,并修掉「正式机 IP 只用作请求 Host 标头」的误报;既有 586 条逐条具名记入基准,之后只挡新增。
财务

预约页爽约统计的「近 90 天」改为真正按营业日计算,凌晨场不再算错天

  • 预约页爽约统计的近 90 天区间改按营业日算:凌晨的预约归到前一个营业日(按这家店自己的换日时间),区间两端不再有几小时误差。
  • 订位清单接口新增营业日区间参数;与旧日期参数混用、日期格式不对、起日晚于迄日都会直接报错,不再悄悄返回不对的结果。
财务

待批、异议、券、交班等数字改显示后端真实总数;提成明细超过 2000 笔时明示合计可能少算

  • 提成明细每类流水超过 2000 笔时,网页、小程序、App 都在提成合计旁明示「提成明细超过 2000 笔,合计可能少算」(App 写在应发/已结/待发和日结提成卡上)。
  • 待批请假、入职待审(App)、对账异议、会员手上的券、客人可用券(小程序)、交班留言(App)改显示后端给的真实总数,不再停在 50、20、100 这类上限;真的被截断时才加「只列了前 N 张」一类说明。
  • App 的供货申请改读后端的「是否截断」,不再用「笔数到 200」去猜。
  • App「我的请假」待批数改为翻完全部再数,不再只数最近 50 张;读不到时写「读不到」。
  • 股东「启用 N · 停用 M」优先读后端计数(后端计数上线前沿用原写法,到上限时注明可能偏小)。
  • 旧后端没给总数时照原写法显示笔数,只有笔数撞到上限时才写「至少 N」。
财务

App 换店或换人后,不再带着上一家店或上一个人的班次、桌台和购物车

  • 同一台机器换人(PIN 或生物识别)或换店时,当前班次立刻清掉、显示「班次读取中」再重读;交班、班中盘点、现金异动不会再拿上一个人或上一家店的班去送。
  • 读取中时不说「未开班」、不开开班单;结账前会先等这次读完再判断。
  • 换店时清掉上一家店的挂单、选中的桌、绑定的会员、桌台与订单缓存、扫码索引,再重新载入新店的菜单和桌台,不会再用旧店的桌和商品在新店开单。换店前如果这台机器上还有没送出的品项,先弹框「还有没送出的单」,默认「留在本店」;选「清掉并换店」才清。
  • 离线队列每一批都记下是哪家店排进去的,补送时只送目前这家店的,回到那家店才补送其他批。
  • 开店准备情况换店时清掉,读失败时标记读不到,不再沿用上一家店的资料。
财务

网页和小程序换店或换人后,不再带着上一家店或上一个人的单、桌和班次;爽约统计改算近 90 天

  • 网页收银断线暂存的单记下是哪家店的,换店后只在本店补送,不会再用新店身份送出旧店的桌和商品。
  • 登出后换另一家店的人登入,页面整页重新载入,不再沿用上一家店的收银台、选中的桌、绑定的会员和缓存。
  • 同一家店换人(PIN 切人或登出后下一位接手)时,重置该人相关的数据,不再显示上一个人的当前班次;菜单、分类、桌台不受影响,收银台的单继续保留。
  • 切换门店前,如果有还没送出的品项,先弹框「还有没送出的单」,默认「留在本店」;选「清掉并换店」时,这几张单在断线队列里的批次一起丢掉。
  • 小程序客人购物车绑定门店和桌台,换桌或换店就清空,同一桌重扫不清。
  • 预约页的爽约统计原本只算今天以后的预约,现在改算截至今天营业日的近 90 天,卡片注明区间。
财务

后端清单翻页不再重复或漏掉同值的项;自己截断的清单回真实总数并标明被截断

  • 所有分页清单的排序最后都补上唯一键,同名同价的商品(例如收银菜单)翻页时不会一页重复、一页漏掉。
  • 待批请假、我的请假、入职审核、交班留言、券模板、会员可用券、客人可用券、供货申请、对账异议、股东、分红批次、个人打卡、今晚订位、客人菜单、活动等清单:回传里带上截断前的真实总数和「是否被截断」,供货申请的待处理数不再最多只到 200。
  • 今晚订位改在数据库里按状态过滤,总数是真数;客人菜单先过滤隐藏品项再截断;客人首页可用券张数改为数据库计数。
  • 提成明细每类流水仍有 2000 笔上限,超过时回传标明被截断(前端提示另开票)。
  • 会员相关接口的页码等参数不是数字时回 400 并点名参数,不再 500。
财务

网页和小程序的清单翻完所有页,不再把第一页当全部;浏览型明示只列最近 N 笔

  • 应收账龄、逾期合计、线上收款、寄存、礼品卡、会员、提成、采购、退款、交班等清单改为翻完所有页,任何一页读失败就整体提示读不到,不再给半份。
  • 供应商端的应付(未到期/已逾期金额)翻完全部应付再加总,不再只算前 20 笔。
  • 拿掉已经不成立的「仅统计前200笔」「这个数偏小」「只列了最近」「只读得到50条」「只统计了最近」等提示。
  • 浏览型的长清单明示「只列最近 N 笔」。
  • 第二批:库存注意徽章、在架与临期批次、滞销、菜单复制、订位与爽约统计、总部调拨、供应商入驻审批(原本只看得到 20 张)、供应商清单、待跟进、员工与排班名册,小程序的库存、临期、订位、调拨、在途采购、我的客户、进行中盘点与班次等,都翻完所有页。
  • 会员积分/订位/跟进历史、集团采购单、平台模板库改成明示只列最近 N 笔,并可分页或载入更多;搜索结果满上限才提示「只列前 N 笔,请输入更精确的关键词」。
  • 滞销数读失败显示「—」,不再显示 0;储值沉睡改名「余额最高前 5 位」、进货改名「最近 N 次进货」。
财务

读不到当前班次或日结报表时,不再当成「没开班」或「可以日结」

  • App 收银端读不到当前班次时,显示「读不到当前班次,不确定有没有开班——检查网络后重试」,按钮改成重读,不再推「去开班」、不再弹开班单、结账前也不再先弹开班单。
  • 读不到时,只有同一家店、同一个人、那班还开着,才沿用上次读到的班继续收银,并标明「班次状态刷新失败,显示的是上次读到的」;换店、换人一律清掉。
  • 开班单打开前会先重读一次;读不到就不开单,发现其实开着也不开单。
  • 网页角色首页在日结报表读不到或还在读时:收银不再显示「今天还没开班」;确认日结按钮灰掉,并写明「今天的未结台/未交班/现金差异读不到,刷新确认后再日结」;会计不再显示「本期已关账」。
财务

Flutter 营运首页读不到的提醒不再消失,也不再显示「一切正常」

  • 待核准退款、采购待收货、在途采购、门口候位、库存见底、财务异常雷达、现金对账、开太久没交的班、要付的钱、此刻脉搏等提醒:读失败时照样出现在原位,写「读不到,不是没有」,数字位置写「读不到」,不再显示 0 或整张卡消失。
  • 只要有提醒类来源读不到,首页就不画「一切正常」。
  • 当前班次读失败不再当成「未开班」、不再推「去开班」;开店准备读失败不再用上一家店的旧资料推引导。
  • 角色首页在日结报表读不到时,各待办数字写「读不到」,现金差异不再写「无」。
  • 换店时先重设读失败标记,换店期间才回来的旧请求一律丢弃。
财务

Flutter 清单不再只拿第一页当全部;读不到的不再显示成「没有」或 0

  • 收银主菜单、供应商入口的订单/应付/对账/退货/商品、逾期应付合计、退款没退出去的清单、提成明细、采购商品目录、员工名册、会员礼品卡:都翻完所有页,任何一页读失败就整体提示读不到,不再给半份。
  • 库存流水与批次、采购追踪与草稿、请购、调拨审批、会员跟进、订位、寄存、菜单提成:同样翻完所有页。
  • 只显示数量的地方(进行中盘点、待收货)改读后端总数,读不到明说,不再显示 0。
  • 会员目录、会员详情的储值/积分/跟进/订位、单品流水、跨店调拨:显示「已载入 x / 共 N」并提供载入更多;搜索结果到上限时提示输入更完整的关键词。
  • 日结与月账单的应计提成、已结、待发以前一直是空,现在对上后端数字;日结「酒水基数」接上后端,并注明「计入提成的基数,不是酒水净销售」。
  • 会员详情 9 个子区块、调拨该发/该收张数、结账礼品卡、角色与指派、提成口径读失败时原位显示读不到;提成口径读不到时不让整表保存,避免用默认值盖掉店家设置。
权限

班次清單 meta.scope 補上 orders:shift 全店放行的情況,三端拿掉各自的猜測繞過邏輯改直接信任

  • 背景:`GET /shifts/` 在 `status=open` 時,只要使用者在這家店有 `orders:shift`(即使沒有 `accounting:view`/`reports:view`),後端本來就會放行看到全店進行中的班次(WALK-172 既有設計)——但回應的 `meta.scope` 欄位只看 `accounting:view`/`reports:view`,完全沒把這個放寬算進去,錯誤地回報 `"mine"`,對前端撒謊。這個欄位(T-2772 加的)本來的目的正是讓前端不用再靠登入時快取的權限聯集猜,要看這個欄位才知道「這次請求我真的看得到全店嗎」——結果它自己在這個組合下也不準。
  • 後端修法:`apps/payments/views.py` `ShiftViewSet.list()` 抽出單一布爾值 `narrowed_to_mine`(等於原本判斷「查詢有沒有被收窄成只看自己」的那份邏輯),`qs.filter()` 跟 `meta["scope"]` 都讀同一份,不再各自維護兩份可能分岔的判準。補了正反兩格測試(status=open+只有orders:shift→scope必須是store;顯式mine=1、以及非open歷史→scope必須是mine),拿掉修法時正格測試會真的變紅,已驗證。
  • 三端因為不信任這個欄位,各自寫了「土法煉鋼」的繞過邏輯:拿到清單後,自己檢查清單裡有沒有出現別人的資料,反推真正的範圍——web(`useOpenShifts()`)甚至完全不讀 `scope`,靠「沒權限的人會 403、有權限的人拿到全店列表」這種經驗行為側面判斷。後端修好之後,三端都拿掉了這套反推邏輯,改成直接讀 `meta.scope` 三態(全店/只有自己/讀不到),連帶清乾淨所有「後端修好後刪掉」的舊注解。
  • web:`useOpenShifts()` 改回傳 `{ rows, scope }`(跟既有 `fetchAllShiftHistory()` 同一種形狀),五個消費端(班次紀錄、日結阻塞明細、隔夜未交清單、店長治理屏「未交班N班」)都補上依範圍分流的文案——scope不是「全店」時,清單旁邊會提醒「這個帳號目前只看得到自己開的班,清單可能不完整」,不會讓使用者誤以為清單已經涵蓋全店。
  • 小程序:今日班次頁拿掉「拿全部查詢原始列反推scope真假」的交叉核對函式,改直接映射scope三態,文案邏輯不變(全店/只有自己/讀不到範圍三選一講清楚)。
  • Flutter:`lib/domain/shift/shift_list_scope.dart` 拿掉 `OpenShiftsCoverage`/`openShiftsCoverage()` 反推邏輯,今日班次的標題與空狀態文案改直接吃後端回的 `ShiftListScope`。
  • 2026-09-27 部署當天採取的安全過渡期設計:部署順序是後端先上(11:25)、三端後上(web/小程序19:49,Flutter隨後),前端改動在後端還沒上線的窗口期就已經是安全的——舊後端對 status=open+只有orders:shift 的組合仍會錯誤回 scope=mine,新前端此時會顯示「只看得到自己」這種保守文案,不會顯示「全店都沒有」這種樂觀文案,不需要額外的相容邏輯。
  • 驗收:web、小程序各截兩張真實畫面(有店級查看權限的帳號 vs 只有orders:shift的收銀帳號),負例畫面文案逐字核對過;web `npx tsc -b`、小程序 `npx tsc --noEmit` 皆0錯誤;Flutter `flutter analyze`0 issue、`flutter test`3/3過(合併前另外由rico1跑過全套test/analyze);後端班次相關既有測試4支跑動,2支因本機環境限制(名冊密碼登入、真實LLM key)跳過,與本次改動無關。
登入尚未上线

Flutter 登录后不再先对一家写死的门店发请求;门店列表读不到时给重试

  • App 里不再有写死的默认门店:登录后只有一家店的账号直接进店,多店账号在选店页选择(上次进过的店只做预选)。
  • 选店之前不会对任何门店发出门店范围的请求,也不会先把门店设成别人的店。
  • 「上次进过的店」按账号分开记,换人登录不会带到上一个人的店。
  • 门店列表读不到时显示「读不到你能进的门店,不是没有——检查网络后点重试」,附重试按钮。
体验

9處「讀不到」被誤顯示成「沒有」的介面文案修正:帶位開台/出品看板/供應商付款申請/股東預約/分紅確認/耗材調撥,web+小程序已上線

  • 帶位開台頁(網頁後台+小程序員工端):查桌況讀取失敗時,原本會誤顯示「沒有空桌/可併桌/使用中/待清潔的桌」,現在先顯示讀取失敗提示並可重試,不會誤導員工去追不存在的空桌。
  • 廚房出品看板讀取失敗時,原本誤顯示「今晚沒有待出餐點」,現在先顯示讀取失敗提示與重試按鈕。
  • 供應商付款申請列表讀取失敗時,原本誤顯示「沒有付款申請」,現在先提示讀取失敗、請刷新重試。
  • 股東預約頁切換分區時若該分區讀取失敗,原本可能誤顯示「這區沒有空桌」,現在先提示讀取失敗。
  • 分紅確認流程裡,「雙重計入確認」的核取方塊原本在資料還沒真的讀到時也可能出現,現在只在確定讀到資料後才出現。
  • 小程序耗材調撥頁搜尋不到結果時,若其實是讀取失敗,原本誤顯示「沒有匹配的商品」,現在先提示讀取失敗。
供应商

供应商和商户的合作改成双方同意:供应商申请、商户同意或邀请,可以随时撤回

  • 供应商在门户「申请供货」只会送出申请,商户那边不再被自动建档;商户同意后才开始合作。
  • 商户后台新增「供应商」页:合作中、申请、邀请三个页签。同意申请时如果可能是同一家,必须选合并到哪份档案或新建。
  • 商户可以产生 6 位邀请码、链接和二维码,供应商输入后直接建立合作;一个码只能用一次,可以作废、重新产生。
  • 商户可以随时撤回门户:撤回前会显示未结应付和进行中的采购单数,撤回后对方在门户看不到你店的任何单据。
  • 停用的供应商不能再下新采购单,补货建议也不会再推荐它;下单短信只发给已经开通门户的供应商。
  • 供应商门户显示「合作门店」数、我的申请状态(申请中/已合作/被拒/合作已结束),采购单链接只在合作中才看得到内容。
  • 网页、小程序、Flutter 三端都能处理申请;邀请码在网页和小程序产生。
会员储值

門店管理範本補齊會員儲值跳過簡訊驗證權限,三端SMS卡關文案改按權限描述,web/小程序/Flutter三端已上線

  • 背景:T-2926全流程走查(rico1指派)发现会员储值扣费简讯验证码的「无码时店长级跳过」权限(orders:member_pay_override,apps/core/permission_catalog.py,標SENSITIVE)从建置起就登记在权限目录里,却从未被种进任何一份默认权限范本——只有tenant_admin(全通道admin)能用。店里只有店长以下班底在场、客人手机收不到简讯(信号差/换号)时,储值支付会完全卡死,挡住真实营收。
  • 後端修法:seed_default_permission_templates.py只把这条码种进manager(店长)范本(v0.6.0→v0.7.0),cashier/lead/server/bartender/kitchen/finance/purchasing_clerk/group_ops_director/group_finance_director/group_hr等其余范本刻意不给——这条码本身是SENSITIVE(有审计),店长是这次裁定认为合适的授权层级。
  • 文案修法:member_pay_sms.py「无码+无跳过权限」分支原本回泛用的MEMBER_PAY_CODE_REQUIRED(400,「使用会员储值前请先向会员手机发送并填写验证码」),这句话对真的收不到简讯、又没有人有跳过权限的现场是死路不是提示。改回专属码MEMBER_PAY_OVERRIDE_REQUIRED(403),訊息直接點名權限本身(按權限描述,不按職稱)——「客人收不到验证码时,请找有「跳过储值扣费短信验证」权限的人来处理这笔支付」,web/miniapp既有的错误显示惯例(catch一律用error.message原样显示)不需要额外接线就会显示新文案。
  • 顺带修复:_audit()此前没有传user_id给AuditService.log(),导致「谁跳过了简讯验证」这条SENSITIVE动作的审计记录里,操作人栏位一直是空的(其余栏位都记得到)。已补上从request.user反推,匹配同档其余稽核呼叫点的既有惯例。
  • Flutter三端契约检查发现的连带问题:complete_billing_copy.dart既有的12码白名单机制会在没有识别的文案后自动补一句「请重试完成收款」,新文案不含既有识别关键字,会被接成「……请找有权限的人处理这笔支付。请重试完成收款」——语意矛盾(叫人去找别人处理,又叫他自己重试)。修法:白名单新增本条文案(逐字跟web/miniapp同一句)+ _ensureRetryHint()新增关键字「跳过」使其不被接上重试提示,不改动既有12码任何一条。
  • 门店权限落地:一号店(cfff14e9)店长范本用官方既有的「同步到最新平台范本」机制(sync_group_to_latest_platform_template(),既有的per-group可审机制,非临时脚本)补齐这条权限,顺带一并补上该群组此前遗漏的members:view_full_phone(同一支同步机制附带修复)。
  • 验收:web/小程序各拍到正例(有权限的店长账号直接用会员储值付款成功、无SMS码)与负例(无权限的收银账号触发403、逐字显示新文案)两组真实画面,数据库audit log核对skipped_by_manager_override与操作人id均正确;Flutter端用4项纯函式测试验证文案与「不含重试」两件事,另有既有的memberPayOverride能力位既能正确驱动结账画面的「店长跳过验证」按钮主动出现(不需先触发错误)。
财务

撤銷結帳重結路徑三合一修復:COGS重複入帳/訂單永久卡billing/退款找不到儲值流水,正式機只讀核對零遺留

  • 背景:T-2926全流程走查(rico1指派)抓到「撤销结账(reverse_checkout)后换付款方式重新结账(complete_order())」这条二次路径上,同一支状态机藏了三个各自独立的钱/状态缺口。
  • ①COGS重复入账:complete_order() Step4的sale_cogs会计分录原本没有跟Step2/Step3同一个is_recomplete守卫,重结时存货并没有再出库一次,COGS分录却借贷各多记一次。修法:Step4补上跟Step2/Step3同一个is_recomplete判断,不新发明判准。
  • ②订单永久卡在billing:前端complete()的Idempotency-Key按付款内容定址,撤销后若重结时付款内容跟撤销前一字不差,同一把key会撞回撤销前就已存档的COMPLETED快照原样回放——挖到两层缺口:(a)apps/core/idempotency.py的.create()撞唯一约束时没包savepoint,导致MySQL一报IntegrityError就把外层事务标记needs_rollback,下面的fallback查询被挡成TransactionManagementError,重放路径因此每次500;(b)修完500之后,重放路径会原样回放撤销前的快照(HTTP 200但订单在DB里其实还卡在billing、无新状态记录)。修法:(a)用嵌套事务(savepoint)圈住.create() (b)reverse_checkout()撤销当下删掉这张单COMPLETED的幂等记录,强迫之后任何重放请求真的重跑一次业务。
  • ④退款找不到储值扣款流水:退款分摊查询原本用Payment.objects_unscoped(连软删的旧付款列都捞回来),撤销+换付款方式重结后会把已撤销退回的旧付款也算进这次退款的分摊比例,炸MEMBER_BALANCE_CONSUME_NOT_FOUND、挡死这张单的任何退款。中途一度改成Payment.objects,经rico1指出这会让跨店/无请求上下文(如背景任务)发起的退款查询变成0笔付款、静默分摊出错,已订正为保留objects_unscoped、只额外加is_deleted=False过滤,不改动租户/门店范围语意。
  • 新增回归测试scripts/test_t2933_reverse_recomplete_triad_flow.py(A-E五格,27项断言),每个修法都先还原成修复前代码确认真的会红、再还原修法确认转绿,含订正后的跨店context反向验证格。
  • 回归验证:run_local_tests.py对84支涉及complete_order/reverse_checkout的既有脚本全跑,74 PASS/0因本票改动而FAIL(3支FAIL经比对未修改代码确认是既有环境限制,与本票无关)/7 SKIP(需要真实HTTP服务器或名册密码登录);另加跑18支refund/checkout相关脚本全绿。
  • 正式机只读核对(零写入,用atomic+force-rollback包住):reverse_checkout相关AuditLog历史13笔,但对应Order/OrderStatusLog均已不存在于当前表中(demo/测试店数据清理所致);当前表中重结成功/COGS重复入账/卡在billing三项计数均为0——平台目前零真实商户,此前没有遗留数据需要人工订正。
体验

代为交班补齐:Flutter 也能真的操作了,判准三端只剩一份

  • Flutter App 之前(T-2935)只把「只有本人交得了」这句谎话止住,没有做真的操作入口;现在有代为交班权限的人在老板首页的未交班提示、日结页的未交班清单,都能直接点开「代为交班」输入现金+原因完成代关,行为跟 web/小程序一致(要写原因,必留稽核)
  • web 端顺手把 ProxyCloseRow.tsx 跟老板首页(T-2935 新加的)两处各自抄的权限判准式子,合并成一支共用函式,以后改判准只用改一处、三端(web/小程序/Flutter)对应的三份不会再各自漂移
财务

结账/交班相关金额统一显示到分,不再整元四舍五入

  • 结账弹窗的找零金额改成精确到分显示,不再出现类似 ¥91.000000000000001 这种浮点误差,也不会被四舍五入成整元
  • 交班/日结页面的开班现金、应有现金、实点现金、现金差异、退款金额,统一显示到分,不再有的画面到分、有的画面整元的不一致
  • 现金差异趋势卡片里每一班的差异数字也改到分显示,避免几毛钱的差异被整元格式吃成看不见
  • 退款弹窗的可退金额、送出按钮上的金额改成到分显示
  • 收款方式明细补上「现金退款」这个中文标签,不会再看到英文原始代码
  • 「本班至今 vs 上班」对比卡片:本班还没结束时不再用红色警示色显示差异,改成中性提示并加一句「本班还没结束,数字会继续变化」
体验尚未上线

Flutter App 5处「读不到」不再显示成「没有」

  • 会员储值页:绑定会员的资料/本金/余额读取失败时,不再误判成「先选会员」或「没有可退本金」,改成明说读不到、可重试
  • 盘点选品清单读取失败时,不再显示成「没有可选商品」
  • 会员消费纪录读取失败时,不再显示成「这位会员目前没有消费纪录」
  • 老板通知中心读取失败时,不再跟「今天没有待办事项」共用同一句话
  • 今晨补货草稿读取失败时,不再整张卡片悄悄消失
体验

小程序 8 处「读不到」不再显示成「没有」

  • 会员消费时间线读取失败时,不再整块消失,改说读不到、可刷新重试
  • 订单/活动小抄(时段价、满赠)读取失败时,不再一个字都不显示
  • 部分盘点选品清单读取失败时,补上明确的错误提示
  • 今晨补货草稿读取失败时,不再整张卡片悄悄消失
  • 候位列表读取失败时,不再跟「目前没有人在候位」同时矛盾显示
  • 开店回本进度、近7/30天营业趋势读取失败时,分别改说读不到、可刷新重试(营业趋势会区分真的没权限看跟单纯读不到两种情况)
  • 股东回本进度读取失败时,改说读不到、可刷新重试,不影响同屏待发分红照常显示
体验

未交班提示不再说「只有本人交得了」——代为交班早就有了

  • 老板首页「这班开了 N 小时还没交班」的提示,原本对所有非本人的班一律说「只有 X 本人交得了」——这是过期的谎话,代为交班功能(有权限的人可以代替开班人结掉这一班,要写原因,会留记录)T-2601/T-2686 就已经上线了,只是这条提示没跟着改
  • 现在:有代为交班权限的人会看到「……或你去「班次纪录」代为交班」;没有权限的人看到「……或找有代为交班权限的人」
  • 结账页开班后的提醒,同一句谎话也改掉:「打烊前记得回来交班;你没空交的话,有「代为交班」权限的人可以代交(要写原因、会留记录)」
  • Flutter App 同一句话也改了;Flutter 目前还没有代为交班的实际按钮(这是下一步要补的功能缺口),先止住说谎的文案
体验

小程序开票页403权限不足不再误显示成0笔申请

  • 开票申请页以前读取失败(比如账号在这家店没有看开票的权限)会显示成「还没有开票申请」,跟真的没有申请长得一模一样;现在权限不够会明确显示「没有权限」,其他读取失败(比如断网)会显示「读不到,不是没有」并给一个刷新重试按钮。
体验尚未上线

督导端(Flutter)班次范围说真话、开票清单不再只拿第一页、日结和现金流水标出经手人

  • 班次页不再写死「全店进行中」:按后端返回的可见范围显示;只看得到自己的班次时明说,读不到范围时说读不到,不假装是全店。
  • 开票清单翻完全部分页,任何一页读失败就整体报错,不再只显示前 100 笔。
  • 日结横幅显示确认人/重开人和时间;现金流水每笔显示操作人(读不到显示「—」,不省略,免得代做的一笔被当成本人做的)。
  • 开票记录显示经手人和开票时间;运营异常中心显示生成时间。
财务

固定薪资/时薪重复计算警语改准了:两个页面现在用同一套后端判断

  • 成本页里「固定薪资和时薪工资可能被算两次」这句警语,以前不管本期有没有人真的在领时薪都会显示——现在改成后端真的算过才显示:本期真有未关联员工的固定薪资项目、且真有人在打卡领时薪,两个条件都成立才提醒,少了一个都不提醒
  • 同一个判断现在跟股权分红确认页共用同一套后端逻辑,两个页面对同一家店、同一个月的判断保证一致,不会一边说有风险、另一边说没有
  • 警语下面直接列出两份清单:本期有打卡时薪记录的是谁、还没关联到员工的固定薪资是哪几笔,方便直接去处理,不用自己猜
  • 如果这项判断本身读取失败,页面会明说读不到、不代表没有风险,不会因为数据没读到就当成安全
现场

沽清/恢复零确认改直接切换,长按与点击两种手势各自讲对应话术

  • 店长/员工在商品管理页把一支商品标成沽清或恢复销售,不再需要先跳出一个确认框才能操作——按一次(或长按清单列)就直接生效,成功后用一句提示告诉你怎么撤销
  • 清单列长按跟编辑抽屉里的按钮是两个不同的入口,提示话术依你实际做的手势分开讲:按钮点击说「再点一次恢复」,长按清单说「再长按可恢复」(跟点单页既有的长按沽清是同一种说法);恢复销售那句提示两个入口共用同一句,不受影响
  • 移除这个确认框的理由:它属于'可撤销、按错能马上按回来'的动作,不属于系统规定要问一次的三类(不可逆/动到钱/改别人的权限)之一,硬留着确认反而是把'防误触'包装成了不合身的分类
  • 同一轮顺手处理的内部维护:合并闸门里管这条规矩的脚本新增了一张'输入防呆'例外清单(跟三类分类是两回事),把盘点存货页一支'数字跟账面差太多才问、问完还能改'的确认收进去;一支验证用的 e2e 测试因为环境限制暂时跳过测试而非重写;清理了一个全端零呼叫端的历史遗留函式
老板

下架商品不再误报「已下架」成功,采购退货驳回补上后果警语

  • 商品下架被后端挡下(这个商品还有生效配方/库存/活动)时,原本会一边跳出「仍要强制下架」的决定画面,一边同时显示「已下架」成功提示——商品其实根本没停,现在这种情况下不会再显示假成功
  • 选「仍要强制下架」真的执行之后,才会显示真正的成功提示
  • 采购退货被驳回时,补上一句提醒:驳回后这批货不会退还给供应商,要再退货得重新发起一张退货单
体验

空态说谎:29条读取失败被误当没有数据,补isError三态显示

  • 全站排查出29处「读不到数据」跟「真的没有数据」被当成同一种画面处理——数据请求失败时(权限不够、网络问题、后端错误),用户看到的是「没有xxx」「目前没有需要关注的事项」这类肯定句,以为是真的空,实际上系统根本没读到。逐一改成三种状态分开显示:读取中、读取失败(明确提示+建议刷新重试)、真的是空。
  • 本次先落地子任务(b):15处需要重建三态逻辑或补上游信号的复杂修法,包含通知铃(聚合7支查询的失败信号)、供应商入驻申请审核(呼叫端把失败静默转成空清单)等跨层级的修法。另一个子任务(a,15处机械型的加错误判断)另开变更记录。
全员

前端合并闸门第二轮清零:破坏性操作补二次确认+请求失败不再吞成空白+连带修好设计合规/中文换行等多支闸门

  • 作废未结单、取消/标记候位、关账、驳回退款/报销/请假、恢复应收科目默认值这几个「一做就收不回」或「涉及金钱」的操作,原本有几处点一下就直接送出,现在都会先看一段讲清楚后果的提示再确认——例如作废未结单会提醒「如果已经跟客人收了现金,请先把钱还给客人」,关账会提醒「关账后本期凭证不能再改」。
  • 小程序端好几处「读不到」被静默显示成「没有资料」或「0」的地方(现金班次、商品分类、仓库名称、待掛账客人名单等),现在会老实显示「这次没读到,点此重试」,不会让人误以为真的是空的。
  • 顺手修好一批不影响使用体验、但会让代码品质悄悄退化的检查工具本身的问题:账单弹窗的金额数字换成跟其他「英雄数字」一致的更醒目字级,分类列表「全部」那一格拿掉了一个不必要的星号图示,一处中文说明文字的排版换行会让句子中间多一个空格的问题也一并修好。
全员

运营异常中心新增「审计写入失败」监控:计数改跨进程共用+首次失败主动告警

  • 「运营异常中心」新增一格「审计写入失败」,显示累计次数、最近一次错误和发生时间——之前这个计数只存在单一台服务进程的记忆体里,重启就归零、四台进程各算各的,看到的数字既不准也留不住;现在改成四台进程共用同一份计数,不会因为重启或看错某一台而失真,次数为0也会照常显示「0」,不会因为没有异常就让这一格消失。
  • 第一次出现审计写入失败时,会主动发一则告警通知(走既有告警通道),15分钟内重复发生不会重复骚扰,但计数本身仍然持续累加。
小程序

小程序首页:没有桌台或班次权限的账号不再报错,老板那行不再误说「今天还没开始营业」

  • 只有出品等权限、看不了桌台的账号,打开首页和经营看板不再去读桌台清单(以前每次都失败 3 次)。
  • 有报表权限但看不了桌台的账号,今天还没单时写「今天还没有新开的单」,不再叫人去一个打不开的桌况页。
  • 纯咨客账号现在看得到桌台、能带位入座;没有点单权限时点空桌会提示需要「开台点单」权限,不再打开一个送不出单的点菜面板。
  • 咨客账号能进「客人订位」查看(只读),新建和带位开桌按钮只给有对应权限的人。
体验

网页提示里的 ⚠✓✕ 换成统一线稿图示,所有弹窗关闭按钮统一

  • 各页提示文字前的 ⚠、✓、✕ 等字符,换成统一的线稿状态图示(提醒/正常/错误/说明四种),按句子意思选,不按原来是哪个符号。
  • 所有弹窗右上角的关闭按钮(共 44 个)换成同一款线稿叉,粗细与原来一致;原来没有读屏名称的补上「关闭」。
  • 几处「提醒」原本放在红色错误底里,改成橙色提醒底;其中两处原本其实一直显示成白字。出品看板的超时单与过敏原保持红色(紧急与食品安全)。
  • 动作按钮不再带符号,例如出品看板逐行按钮改成文字「出餐」。
全员

AI 经营巡检与利润归因:两处比较基准的自证陷阱已改成留一法,两处审查后维持原状

  • 「跨店经营一致性巡检」以前拿全部门店(含被检查的那家自己)算平均值当基准,门店表现越极端反而越容易把自己的基准也拉极端,导致该被标记的情况被掩盖;现在改成拿「排除自己后其他门店的中位数」当基准。
  • 「利润归因报告」里品项毛利率被判定为拖累整体的两处判断(分档判断、以及查无所属分类时的兜底判断)都改成同样的算法:排除该品项自己后,用其他品项的毛利率重新算基准,不再拿含它自己的全店均值来比较。
闸与治理

咨客台凌晨不再漏掉今晚的订位;几处报表导出日期改按营业日

  • 咨客台「今日预约」按营业日归属,凌晨两点还看得到今晚的订位。
  • 开票申请、补偿任务、对账不一致的导出档名改用营业日,北京时间早上 8 点前导出不再标成前一天。
  • 员工提成月末计算改用营业日;会员生日「不能是明天」按日历日判断。
  • 若干错误提示改成简体中文和大陆用语。
  • 股东分红设置里「自己台封顶」「店级默认分润比」两个输入框下架(网页、小程序、App 三端):T-1190 起分红已改按品类/品牌费率计算,这两个值改了也不生效;说明文字按现行公式重写。
  • 「分红开关」「营业额封顶比例」两个设置登记了平台默认值(关闭、0.20),跟后台实际在用的一致,不再显示成「未设定」。
全员

本店客人名单:部分退款的顾客以前会从名单里消失,现在不会了

  • 会员管理里「本店客人」名单(判断一个会员算不算这家店的客人)以前只认「有一笔状态是已支付的订单」,如果这笔订单后来被部分退款、状态变成了退款单,这位顾客即使没有在这家店注册过会员,也会从名单里彻底消失。现在改成只要这家店消费过就算(不管订单后来有没有部分退款),不会再因为退款而看不见这位客人。
全员

AI 财务归因:单一品项损耗占比越高反而越难被判成异常,已改成跟同类比较

  • 「利润归因」报告里「哪些品项损耗率明显偏高」这项分析,以前的算法有一个隐藏漏洞:计算比较基准时把被检查的品项自己也算了进去。一个品项的损耗金额占全店损耗越大,反而会把自己的比较基准也一起拉高,导致本该最显眼的异常反而被掩盖——损耗越严重的品项,越难被系统标记出来。现在改成拿「排除它自己之后,其他品项的平均损耗率」来比较。
  • 遇到店里当期只有这一项有损耗记录、找不到其他同类可比较的情况,以前会算出没有意义的「倍数」;现在改成老实说明「店里目前只有这一项有损耗记录,无从比较,先列出来」,不再编造一个误导性的倍数。
现场

小程序桌台长按补上「有人先走」「催单」「赠送」「改人数」

  • 小程序长按桌台的动作列表跟网页一致,新增「有人先走」(先结一部分)、「催单」、「赠送」、「改人数」,各自打开小程序已有的对应流程。
  • 加菜时的「赠送」勾选,只有有赠送权限的人才看得到,网页和小程序一致;以前没权限也能勾,送出才被拒。
  • 订台人选择、咨客入座改走统一的防重复提交。
权限

只有入库/出库/调拨权限的人,也能在对应页面选到仓库和商品

  • 只有入库权限的店员,进「手动入库」「移仓」可以选到仓库了;以前仓库清单是空的,没法操作。
  • 只有报损权限的店员,进「报损」可以选商品和批次了;成本金额照旧只给原本看得到的人。
  • 调拨页的商品清单不再要求点单权限,只有调拨权限也能建调拨单。
  • 进销存总览:没有对应采购权限时,不再弹「在途没读到」「应付没读到」的错误,直接不显示那一格。
全员

AI 财务雷达:两人店以下的作废异常检测以前永远测不出来,现在修好了

  • AI 财务雷达里「作废单数明显偏高」这项异常检测,以前的算法有一个隐藏漏洞:计算「店内平均值」时把被检查的这个人自己也算了进去,人数越少这个漏洞影响越大——只有 2 个操作者的店,不管其中一人作废了多少单,系统都不可能把他标记为异常,因为他自己的数字把平均线也一起拉高了。现在改成拿「除了本人以外其他同事的平均值」来比较,不再让一个人的数字影响衡量他自己的标准。
  • 同一个服务里其他几种异常检测(现金差异、毛利倒挂、进货价异常、风险提醒)逐一核对过,只有这一处有这个问题。
财务

虚拟余额对账从 7 月底起一直没真的查过,现已修好并在财务健康页显示结果

  • 每天自动跑的虚拟余额对账(会员积分、储值、礼品卡、提成汇总),从 2026-07-31 起因为没带商户、每次都回报「0 笔、无差异」,实际什么都没查,告警一次都没响过。
  • 现在改为请求结束后顺手逐个商户对账(每 10 分钟最多一个商户,同一商户 24 小时一次,优先近 7 天有活动、最久没对过的),有差异照原路径告警并记录到该商户名下。
  • 网页财务健康页、小程序财务雷达显示一行「虚拟余额对账:上次 某时间,检查 N 笔,差异 M 笔」;从没对过显示「尚未对账」。
  • 财务对账同样改为逐商户,并补上「只有提现、没有分红批次」的商户(原本会整个漏掉)。手动对账命令不带商户时直接报错,不再回「0 笔无异常」。
权限

只有出品权限的后厨能走完整个出品:看分站单、出菜、标沽清、看出品时效

  • 只有「出品」权限的后厨账号,原本在网页厨房页读不到分类(分站单出不来)、页面不会自动刷新、出品时效看不了。现在这三处读取接受「点单查看」「下单」「出品」任一权限,都不含金额与员工资料。
  • 小程序服务员首页的「厨房/吧台」入口认出品权限,跟首页清单一致。
  • 沽清页:只有「点单查看」权限的人只看得到「已沽清/未沽清」状态,不再显示按下去才被拒绝的「沽清/恢复」按钮(网页、小程序、App 一致)。
  • 网页「今日已结账单」只有订单查询权限的人才会读取,后厨不再每次打开都被拒两次。
全员

反馈页排版修复:填写表单时标题/描述/联系方式不再互相压字,手机上提交记录改成卡片显示

  • 「反馈」页面(后台左侧菜单)点击「+ 提交反馈」后,填写标题、描述、联系方式这三个输入框以前会挤在一起、互相覆盖看不清楚,不管电脑还是手机屏幕都会这样;现在改成一行一个,正常填写。
  • 手机屏幕上「我提交的」这份列表以前是电脑版的表格硬挤在窄屏幕里,内容会很挤;现在手机上改成一张一张的卡片显示,跟本系统其他页面(例如成本设置)手机版的习惯一致。
全员

采购单出货的微信通知,以前可能因为另一个功能没设置就一直不发

  • 员工确认采购单出货后,原本该发给有采购权限员工的微信订阅通知,以前有一个隐藏条件:只要「服务呼叫」这个完全不相关的功能没有配置好模板,出货通知就会静静地不发出去,即使出货通知自己要用的模板已经设置齐全。这次修正后,出货通知只看自己该用的设置,不再被别的功能连带影响。
  • 本次一并检查了本系统内所有用到同一段判断逻辑的地方,确认目前只有这一处受影响,其余用法本来就正确,不需要更动。
权限

只有出品权限的后厨也能打开沽清页、标记沽清了

  • 后厨账号只有「出品」权限时,沽清页一打开读商品清单就被拒绝,标不了沽清。现在读取清单接受「点单查看」「下单」「出品」任一权限;标记沽清本来就接受出品权限,未改。
  • 网页厨房出餐的「沽清管理」、小程序首页「一键沽清」、App 的沽清入口统一按这三个权限任一显示;网页的沽清面板不再依赖分类读取(只有出品权限时分类读不到,面板原本一直空白)。
  • 读取的商品清单只含菜单售价、沽清与上架状态等,不含成本、毛利、会员价,并有测试锁住字段清单。
权限尚未上线

App 桌面版侧栏的日结、财务健康、库存等工作区也按权限显示

  • App 桌面版(宽屏)左侧栏直接打开的日结、财务健康、现金差异、库存、库存台账五个工作区,原本完全不检查权限;现在跟手机版同一道判断:读取中显示加载、读取失败提示重读、当前门店没有权限显示原文案并可切换门店。
  • 侧栏项目按账号权限显示,跟经营首页模块清单同一套,也照门店模块开关显示。
  • 第二轮:入口与页面全面对齐——今日决策、进销存中枢、仓库、日结、今日经营、会员列表、股东分红政策,以及经营管家磁贴、收银「更多」、财务与进销存链、老板首页页内连结、角色首页动作列,都改成「看得到入口就进得去、进得去的人都找得到入口」。
  • 现金差异页:没有班次或会计查看权限的人,不再发出一定会被拒绝的「开班中班次」请求,那一块直接不显示。
  • 第三轮:股东分红政策只有提成查看权限也能进来看(唯读,有设置权限才能保存);收银的「去开班」在没有日结权限时改连到班次页;连锁与集团周报以报表查看权限为准;新增出品权限,只有出品权限的后厨也找得到出品看板和沽清;经营管家、收银「更多」、老板首页页内连结也改看账号权限;切换门店时门店模块设置跟着刷新。
全员

操作日志:商户现在看得到系统代操作留下的这些纪录了

  • 商户的「操作日志」页面,以前有些系统自动写入或平台协助操作留下的纪录(例如:新建员工账号、指派权限组、修改密码、退出登录、给员工发权限组、支付渠道回调这几类),会因为没有正确记上是哪个商户而看不到。这次修正后这些纪录会正确显示在自己商户的操作日志里。
  • 支付渠道(微信/支付宝等)的回调通知本身不受影响,回调返回给渠道的内容没有变化;只是内部记录这笔回调时,现在能正确记上是哪一笔订单/退款所属的商户。
全员尚未上线

Flutter 会员批量导入对帐改用列序号,同一手机号出现两次不再算错到帐金额

  • 会员资料迁移批量导入的对帐环节,原本用手机号去核对哪些人成功导入,如果一批数据里有两笔手机号相同(一笔成功、一笔因号码已存在被跳过),会把没导入成功那笔的金额误算成已到帐,现在改用每一笔在这批数据里的位置来核对,不会再算错。
全员

手机号遮蔽规则统一:7-10位真的藏住中间几位,不再有看似遮蔽实则全露的情形

  • 11位手机号(绝大多数用户的号码)遮蔽显示不变,仍是前3位+****+后4位。
  • 7-10位的号码(座机、部分境外号码)原本因为一个计算上的疏漏,遮蔽后其实一位都没藏住,看起来安全实际没藏;现在真的会藏住中间的位数。
  • 6位及以下的号码全部换成星号,不显示任何一位。
权限尚未上线

App 的功能入口按账号权限显示,别家店有权限时进得去并提示切换门店

  • App 经营首页的模块清单、快捷栏、各中心的磁贴和进销存链,原本按「当前门店」的权限决定显不显示:在 A 店有、B 店没有的人站在 B 店,入口直接消失,也就看不到「切换门店」的提示。现在入口按账号在任何门店有没有这个权限显示。
  • 点进去后,页面内容仍按当前门店判断:没有就显示原本的「没有…权限」(原本没有这句的页面显示「没有查看权限」),并提示「你在其他门店有这个权限,可以切换门店后再看。」和「切换门店」。
  • 为此先给入口打开的 46 个页面接上同一道权限判断,避免出现「进得去、数据请求被拒」的空页。
  • 快捷栏「等位」改为按等位权限显示,跟模块清单和等位页一致(原本按会员查看权限,点进去会被拒)。
权限尚未上线

App 在权限还没读到或读取失败时,不再显示「没有权限」

  • App 约 38 个页面在当前门店权限还没读到、或读取失败时,会直接显示「当前账号没有…权限」,把「读不到」说成「没有」。
  • 现在权限读取中只显示加载;读取失败时页面显示「权限读取失败」和「重新读取权限」按钮;读到了、当前门店确实没有,才显示页面原本的文案。
  • 如果你在其他门店有这个权限,原文案下面会提示「你在其他门店有这个权限,可以切换门店后再看。」和「切换门店」,门店清单只列出切过去真的有这个权限的店。
  • 当前门店没有权限时,页面不再发出一定会被拒绝的数据请求。
库存

只有库存权限的仓管,入库、盘点、移仓时也选得到商品了

  • 只有库存权限(没有点单权限)的员工,打开入库页时商品框显示「商品没读到:权限不足」,永远选不到商品;盘点页商品名会退成一串编号。原因是商品清单读的是点单用的接口。
  • 新增一个只要库存权限就能读的选品清单,只给名称、规格、条码、分类和单位换算,不含任何价格或成本。小程序入库、盘点、报损、移仓,网页入库、移仓,App 入库、移仓、盘点都改用它;App 原本只拿第一页 100 个商品,现在会取完全部。
  • 入库选择商品后会提示采购单位与库存单位的换算(例如 1箱 = 24瓶)。
  • 盘点可选的商品从「本店上架中」改为「本商户所有非服务型商品」,原料这类不上架的商品也能盘点。
会计

对外科目对照:每个科目可设定对应金蝶/用友等外部记账软件的科目码

  • 会计页新增「对外科目对照」页签:选择适用准则(小企业会计准则/企业会计准则),表格逐科目显示对方科目编码/名称,可手动改、可「恢复默认」;切换准则时,没手动改过的科目自动换成新准则的默认对照,手动改过的保留不变。
  • 「导出完整分录」(逐笔明细/按日汇总)在科目编码/名称后新增「对方科目编码」「对方科目名称」两栏;没有对照的科目这两栏留空,不会填自己的科目码充数,并额外生成「未对照科目」工作表列出这次导出里没有对照的科目、名称、笔数。
  • 平台预设了 21 个系统科目(含本年利润、未分配利润等)在两种准则下的默认对照;商户自建的科目、或跟平台预设码碰巧重复的自建科目,一律算「没有对照」,不会套用别人的默认值。
  • 本次先做通用格式:「一键导成金蝶/用友专用格式」这类按软件区分栏位的功能还没做——金蝶、用友的实际导入模板需要登入产品才能拿到,目前无法确认其精确栏位,留待后续核对过再做。
权限

员工的折扣、退款、挂账、报损上限终于能在页面上设定了

  • 员工在每家门店的「最低可打到几折」「单笔最多退款」「挂账额度」「单次报损上限」以及「整单免单」「手工记凭证」开关,原本后台有这些限制,却没有任何页面能设定——结果除了有全部权限的账号,员工实际上都不能打折、不能挂账。
  • 现在在网页「员工权限」页每位员工多一个「金额与操作上限」,小程序在「团队角色」页、App 在员工账号列表都有同样入口;只对当前门店生效,每栏下方写明空着代表什么(退款、报损空着=不限金额;挂账空着=不允许挂账;折扣空着=不允许打折)。
  • 设定人自己的上限是天花板:不能给员工比自己更宽的额度;设定人自己退款、报损不限时,可以给员工设任何上限。超出时的提示改为中文栏名。
  • 保存后,被设定的员工在当前设备上会立刻用新上限(例如挂账从停用变成可用)。
  • 修改记录现在记到对应商户名下,商户的操作日志查得到。
权限尚未上线

小程序「切换门店」只列出切过去看得到这一页的门店

  • 在当前门店没有某页权限、但其他门店有时,页面会提示「切换门店」。原本弹出的门店清单列出全部其他门店,切到另一家可能还是没有权限;现在只列出切过去真的看得到这一页的门店。
  • 某家门店的权限读取失败时,照样列出,店名后标「(权限未读到)」,不替人把它藏掉;一家都没有时显示「暂时找不到有这个权限的其他门店。」,查找中显示「正在查找有这个权限的门店…」。
权限

小程序员工页面在权限没读到时不再说「没有权限」;别家店有权限时提示切换门店;折扣等上限随门店重新读取

  • 小程序约 60 个员工页面:权限还在读取时显示加载占位,读取失败时顶部提示并提供「重新读取权限」,都不再误显示「没有…权限」。
  • 读到了、而且在当前门店确实没有权限时,显示页面原本的「没有…权限」文案;如果你在其他门店有这个权限,下面会多一行「你在其他门店有这个权限,可以切换门店后再看。」和「切换门店」按钮,切换后内容直接出现。
  • 首页和各入口磁贴按账号范围显示,不会因为当前门店没权限就消失、也不会在读取中把人踢回首页。
  • 周报、经营问诊、顾客分析、菜单诊断、运营异常这几页,原本当前门店没权限会直接跳回首页,现在改为留在页面说明原因。
  • 折扣下限、退款上限、挂账额度、报损上限这些数值,原本只在登录时读一次;现在切换门店、换人、登录续期时都按「员工+门店」重新读取(网页和小程序),读不到时相关操作按「未知」处理,不沿用旧值。
会计

红字冲销统一口径:明细账/对帐等多处净额算正确,历史快取已修复

  • T-2802 核验发现的问题(红字冲销后,只看「已过账」凭证会漏算已被冲销的原凭证,导致净额算成 ±原始金额而不是 0)不只影响 T-2798 的导出:明细账(逐笔账)、会员储值本金与总账 220301 对帐、余额快取重算这几处都有同一个模式,本票统一修正,原凭证与冲销凭证一并计入、各自留在自己所在的期间。
  • 历史快取修复:全平台只有 1 个租户曾经发生过红字冲销(692 家 Codex 测试门店那个租户,不是演示店),116 笔冲销全部落在这个租户名下。受影响的余额快取分布在 2026-06、2026-07、2026-08 三个期间(每期 8 组科目/账套),共 24 处差异,全部是「快取比正确值少算」,其中 2026-08 那 8 组原本被旧重算逻辑整列删掉。套用修正前先对这 24 处存了快照,套用后合计补回借方¥1,824.00、贷方¥3,472.00、贷方¥528.00(依期间拆分),重算后差异归零。这三个期间当时都还没有月结,不影响任何已出的月结报表。
  • 利润表对「全反冲、净额恰好为 0 的收入类目」拒绝返回(SELECTOR_SCOPE_UNRESOLVED)是另一个独立缺陷,跟本票要解决的「算错数字」性质不同,不在本票范围内,交由另一张票处理。
权限

会计年度初始化与年结要每家门店都有月结权限;发票标记、AI 报表、门店健康摘要按门店核对权限

  • 会计年度的初始化、年结,以及「基础初始化」都会影响整个商户所有门店的账,现在要求在每一家营业中的门店都有月结权限才能操作,跟月结、重开用同一道检查;只在一家店有权限会被挡下并说明原因。新商户注册时系统自动建账不受影响。
  • 会计年度初始化时如果传入别家商户的法人主体,原本会成功并返回别家的年度资料,现在会被拒绝。
  • 发票「标记已开」按发票所属门店核对权限:原本只在 A 店有权限的人,不带门店时能把 B 店的发票标成已开,现在不行。
  • AI 报表、调拨建议、日结集团走势能看到哪些门店,改成逐店按当下权限核对,过期或停用的授权、别的商户、停用的门店都不再算进去;各功能仍按各自需要的权限判断。
  • 门店健康摘要与比价只列出你在该店有组织设置权限的门店。
  • 「是不是这家店的股东」的判断跟「我能进哪些店」统一口径,停用门店与别的商户不再算。
会员储值

取消订单时,储值订金按本金和赠送原样退回

  • 用储值付过订金的订单被整单取消时,原本不管当初扣的是本金还是赠送金,全部当成本金退回——赠送金因此变成了可以当现金用的本金。
  • 现在按当初扣款的比例,本金和赠送金各自退回原处;分几笔付的订金一次合并退回。
  • 退回钱包失败时整个取消不成立,订单状态和订金都不变,不会出现「订单取消了但钱没退」。
  • 同一张单不会被重复退款。
会员储值

撤销结账后重新结账,储值负债不再被多冲一次

  • 收银撤销一张用储值付款的结账后再重新结账,原本重新结账那次的会计分录会把两次扣款加在一起记,储值负债(220301)多冲一倍、收入多记一倍。
  • 现在重新结账只按这一次实际扣的储值记账;之后若退款,也按这一次的本金/赠送比例退回。
  • 先部分退款再撤销结账仍然会被挡下(T-2763 的保护没有被拿掉)。
全员尚未上线

Flutter 会员相关手机号比对改用后端精确查找,拿掉重复购卡人手机号,复制电话前先取明码

  • 推荐人/合并目标/发卡绑定等精确匹配手机号的地方,改走后端精确查找端点,不再对前端拿到的会员列表做明码字符串比对。
  • 发卡时若已选择会员,不再额外送出手机号字段,避免跟绑定的会员记录不一致。
  • 复制客户电话号码前,先向后端取一次明码,不再直接复制画面上可能已被遮蔽的号码。
会计

会计模块新增「导出完整分录」,原「导出 CSV」改名「导出凭证列表」

  • 凭证查询页新增「导出完整分录」按钮,弹窗可选期间、账套(外账/内账)、格式(逐笔明细或按日汇总),按整个期间在服务端重新生成 Excel,不受当前页筛选或截断影响(原本的导出只能拿到当页已加载、最多 50 笔的分录)。
  • 原本的「导出 CSV」按钮改名为「导出凭证列表」,行为不变,仍是把当前页已加载的分录转成 CSV。
  • 同一批数据重复导出,除了「导出时间」这一行,其余内容逐字相同,便于跟记账软件的导入流程核对。
  • 所在期间借贷不平时,「按日汇总」格式会被拒绝导出并提示原因;「逐笔明细」格式不受此限制,仍可正常导出用于排查。
权限

按钮按「当前门店」的权限显示,不再在没权限的店露出点了才报错的按钮

  • 原本页面上显示哪些按钮,是按你在所有门店权限的合集算的:在 A 店有某权限、B 店没有,站在 B 店也会看到那个按钮,点下去才被拒绝。现在按钮按你在当前门店的实际权限显示,切换门店、换人、登录续期时都会重新读取。
  • 读取权限失败时会自动重试 3 次;仍失败时页面照常显示,顶部提示读取失败并提供「重新读取权限」按钮,不会整页空白,也不会把「没读到」说成「你没有权限」。
  • 在当前门店没有任何可用权限时,显示说明页「你在「门店名」没有可用的权限。」,有别的门店可选时可以直接切换,也可以换一个账号登录。
  • 收银台换人时,收银界面和购物车保持不变。
  • 需要他人输入 PIN 核准的动作(折扣核准、客人自助送单、客人入会),核准人是否有权限也改按当前门店判断。
权限

收回员工权限后立即生效,不用等对方重新登录;厨房账号能标记沽清

  • 原本收回一个员工的权限后,他手上已登录的账号最长 7 天内还能照旧操作(系统读的是他登录那一刻的权限记录);新给的权限也要重新登录才生效。现在每次操作都按当下的权限判断,收回和新给都立即生效。
  • 同样的问题也出现在系统设置读取、业绩报表只看自己、AI 查询指令、待审批数字、会员与 VIP 资料的读取,这些一起改成按当下权限判断。
  • 商品上架相关操作以网址里的门店为准判断权限,不再以页面当前选中的门店为准。
  • 只有出品权限(没有下单权限)的厨房账号,标记「卖完了」原本会被拒绝,现在可以正常操作。
  • 股东成员只能加本商户的账号,指向不存在或别的商户账号会被挡下并说明原因。
  • 「我能进哪些店」原本四个地方各算各的,会把过期授权、停用的权限组、别的商户、停用的门店算进去;现在统一一个口径,四处结果一致。
财务

月度交接包能导出 Excel 了,月结会挡住没过完的月份和跳着结的情况

  • 「月度交接」的「下载 Excel」原本一按就出错(服务器内部错误),现在能正常导出;明细账页也会包含集团通用科目,不再几乎是空的。
  • 这个月还没过完、或未来的月份,不能月结,会提示「这个月还没过完(到 X 日才结束),要等下个月 1 日以后才能月结」。
  • 更早还有账没结的月份,要先结它;空的月份不会挡住。
  • 月结会锁住整个公司所有门店这个月的账,所以现在要在所有门店都有月结权限的人才能月结;只在一家店有权限的店长会被挡下并看到原因。
提成

排班页「工资估算」的提成不再一直显示 ¥0,合计应付包含提成

  • 排班页「工资估算」里每个人的提成原本一直显示 ¥0.00,本月合计也只算了工资——后端其实算好了提成,但返回给页面时漏掉了这几个数字,页面收不到就当成 0。
  • 现在每个人会显示实际提成(待结算+已结算,不含作废),以及「工资+提成」的合计应付;本月合计同样包含提成。
  • 如果哪天提成数据没有返回,页面显示「—」并提示「提成数据未返回,不代表提成是 0」,不会再把「读不到」画成「是 0」。
财务

试算表、总账、明细账、资产负债表的期初余额改为按历史累计计算,跨月不再少算

  • 原本各报表的「期初」只读月结写入的数字,而月结从没跑过,期初一律是 0;跨月有交易的科目,期末只等于本月发生额,资产负债表上的资产、负债都偏低。
  • 现在期初一律由本期以前的所有发生额累加得出:资产、负债、权益类累计全部历史;收入、费用类只累计本会计年度,换年归零。不再依赖有没有人按过月结。
  • 受影响的报表:试算平衡表、总账、明细账(含月中起算)、资产负债表与月度交接包、停用科目时的余额检查、年结。
  • 注意:跨年且还没做年结时,试算表会显示不平,差额就是上年的损益——做完年结即平。
财务

月结不再把下个月已记的账清零

  • 原本第一次按「月结」时,系统会把下个月已经记好的借贷发生额清成 0,利润表、试算表随之出错(凭证本身不受影响)。
  • 现在月结只把本月期末带成下个月的期初,下个月已有的发生额原样保留,期末按期初加发生额重新计算。
会员储值

收银撤销结账时,储值按当初消费比例退回本金和赠送金

  • 收银撤销一张用储值付款的结账,原本只退回本金,消费时用掉的赠送金就此消失。
  • 现在按这张单当初扣款的比例,本金和赠送金各自退回原处。
  • 先部分退款、再撤销整张结账,原本会重复退款;现在会被挡下,提示已退金额超过消费金额(MEMBER_BALANCE_REFUND_EXCEEDS_CONSUMED)。
  • 会计分录照这张单当初销售的口径冲回,和 T-2762 退款同一套规则。
会员储值

用储值付款的订单退款时,赠送金会按比例退回,不再消失

  • 客人用储值付款后退款,原本钱包只退回本金那一份,消费时用掉的赠送金就此消失。
  • 现在本金和赠送金都按消费时的比例退回;部分退款按退款比例拆分,分两次退也不会多退;同一张退款单重复退会被挡下。
  • 退回钱包失败时整笔退款不成立,不再「退款成功但储值没退回、需人工补录」。
  • 会计分录照这张单当初销售的口径冲回:9 月 23 日之后的单只冲本金,更早的单照原本按面额冲,储值负债不再被多冲。
設定真源

功能名真源补登「挂账」,「财务」改名「收款退款」

  • 三端功能名真源新增「挂账」,归在「钱」组,对应小程序挂账页。
  • 原「财务」功能名改为「收款退款」,并撤掉它原先错误对应的小程序页(那其实是小程序首页的财务概览,同名不同物)。
  • 重新生成网页与小程序两份 iaNames.ts。
小程序尚未上线

小程序首页功能区 27 个白方块图标恢复显示

  • 补回 28 张图标图片和 29 条图标遮罩样式(含「我的客户」),首页 27 格加员工模块 2 格不再是白方块。
  • 检查脚本新增「网格 A 同基底类」的判断,补上原来因为规则放在别的基底类而漏报的一格。
  • staffClient.ts 零改动:用的是原设计的图标原图,没有拿别的图标顶替。
小程序尚未上线

小程序补回 35 个样式文件里丢失的 69 条样式

  • 补回 35 个 CSS 文件共 69 条样式;这些样式原本只存在于救援快照里,主线的页面用着它们却没有规则,画面只是没有样式。
  • 小程序检查新增一类判断:页面里用到的 className 在全库 CSS 里没有任何规则时报出。
  • 盘点结论:无引用不补 181 个文件,构建产物 302 个不补,主线更新的 232 个不动。
后台

修复:采购退货完成、盘点过帐、损耗出库、调拨发货会报错;反结账作废的现金不再算进交班

  • 采购退货按「完成」、盘点审批过帐、损耗出库、调拨发货、期初补正,之前都会直接报错;现在正常。多仓门店的库存会按仓正确增减。
  • 反结账后原来那笔现金付款已作废,交班时不再把它算进应有现金(之前会被当成短款)。
后台

一批后台与小程序改进上线:会计规则可修订、调拨超期在途提醒、开票显示剩余可开等

  • 会计记账规则可以修订并保留版本;小程序新增只读的「会计」页,看分录借贷和记账规则。
  • 调拨:在途超过 7 天会提醒,列表可只看超期的;小程序显示「在途 N 天」。
  • 开票申请显示订单已付、已开、剩余可开。
  • 隔夜没交的班在班次页和老板首页都有提醒。
  • 运营异常中心的储值/积分对账行会点名是哪位会员。
  • 收款面板可选订台人;今日账显示「今日计提 · 本月待发」。
  • 测试商品和测试数据沉底折叠;客人扫码菜单不显示测试商品和原料类。
  • 股东订台的「已订时段」、提成明细时间不再早 8 小时(T-2577)。
客人

网页和小程序统一了「营收/实收」这类词的说法

  • 同一个词「实收」以前在不同画面代表四种不一样的数字,容易看混。现在按意思分开叫:净销售(扣退款后)、毛额(未扣退款)、收款合计(按支付方式实收,不含挂账)、实点现金(抽屉里实际点出的钱)
  • 单笔订单页面、发票、退款记录上原来写「实收」的地方,改叫「已付」,数字本身没变
  • 收银时输入客人给的现金、进货点收数量这两类「实收」是收银/进货行业的习惯说法,跟经营数字无关,没有改
后台

补回 9 月 22 日被一次误操作撤掉的一批后台改动

  • 财务、分红、提成、销售、成本、资金溯源、预订、交班纪录、会计等页面在 9/21 前后做的约 70 项修正与说明,9/22 被一次误操作整批撤回;这次逐项补回,并保留了之后的新改动。
  • 补回的包括:分红页人力成本口径与凭证、资金溯源每笔可展开看凭据、预订时间与桌位校验、每人带客上限设置、交班纪录的隔夜未交分级、现金长短款「无差异」提示等。
收银

代为交班时原因写长一点也能交了

  • 替别人交班时填的原因超过 12 个字,之前会报错、班关不掉;现在最多可写 200 字左右,正常交班。
后台

补回被误撤的两项修正:商品图片只收自家存储、排班未结束不算缺勤

  • 商品图片再次只接受本平台存储的图片,不接受外部网址(防止钓鱼/外链图片出现在报价页等处),上传后也不再写入一年有效的临时链接。
  • 月度考勤:今天还没结束的排班,不再被提前算成「缺勤」。
全站

修复:客人扫码点单一度全部失败

  • 今天凌晨一次更新后,客人扫桌贴点单提交时一律报「服务器内部错误」;现已修复,扫码点单恢复正常。
后台

日结被没交的班挡住时,列出每一个挡住的班,别人的班可以代为交班

  • 日结页「仍有 N 个班次未交班」底下,现在会把这 N 个班全部列出来,包括前几天开了一直没交的班,每一行标明是哪天开始的;前几天的班用警示色标出。
  • 别人的班,有代理交班权限的人可以直接在这里「代为交班」;没有权限的人会看到说明,告诉他找谁处理。交完后,阻塞提示和「确认日结」按钮会马上更新。
后台

店长可以在后台替别人交班了

  • 「班次纪录」里别人开着没交的班,有权限的人现在可以「代为交班」:填数到的现金和原因,系统留下是谁代交的。
  • 这个功能 9 月 21 日做过,次日被一次误操作撤掉,这次补回。
后台

逾期的应付款在库存页和应付页看得到了

  • 「要付的钱」相关页面以前只列未到期的,已经逾期的反而不显示;现在逾期的一起列出。
后台

「看桌况」直接打开桌台图,不停在快吧

  • 从后台点「看桌况」「收银台 · 桌况」,收银台直接切到桌台图;小程序「全部功能」的搜索框也补回样式。
后台

电脑版首页和侧栏可以直接点进实时桌况

  • 总览「此刻」四格和「看桌况 →」可以直接点,进到收银台的桌台图。
  • 侧栏最上面新增「收银台 · 桌况」,取代原本压在最底下的「← 回 POS」。
后台

厨房只拿「出品与沽清」权限,不再能点单;店长和领班能开咨客台

  • 新增权限「出品与沽清」:只管出品看板标记做好/已出和商品沽清。
  • 默认「厨房」岗位改用这个权限,登录后不会再落到收银台、看不到等位、不能开台点单;沽清照样能按。
  • 默认「店长」「领班」岗位补上迎宾/候位/带位权限,能打开咨客台。
  • 已建好的岗位只调整店家从没改过的(共 9 组),店家改过的不动。
全站

登录页和全站用词回到大陆用法:登录、设备、退出、全屏

  • 登录页的「员工登入」「登入」改回「登录」;全站约 60 处「装置/登入/登出/萤幕/连线/侦测」统一成「设备/登录/退出/屏幕/连接/检测」。
  • 「今天要做的事」里的「看詳情」「無」「擋住」、未结单提示里的「未結單」这些繁体字改成简体。
  • 这些改动 9 月 22 日做过一次,当晚被一次误操作整批撤回,这次连检查用的词表一起补回,之后再被撤会被闸门拦下。
全员

隔夜没交班会顶上提示,交班留言不再被测号刷屏

  • 班次页写出隔夜未交几班、最久多久,以及谁能交、谁不能代交。总览待办能点进班次纪录。
  • 测试和自动库存留言默认折起来,真人留言在上面。
老板

毛利看板和菜单第一屏是在卖的酒,测号沉底

  • 毛利看板、菜单、商品管理把测号配方和测试商品沉到底。搜 E2E 仍能找到。
  • 没有删除测试商品。
后台

跳页用的按钮不再带底线、字也回到正中

  • 「今天要做的事」里的项目按钮、「去关账 →」这类跳到别页的按钮,文字不再有底线、不再贴在按钮顶上。
  • 同一个修正同时作用在后台所有做成链接的按钮上(约 28 处),以后新加的也会自动正确。
後端

資產負債表的「應交稅費」不再固定顯示 0.00——它現在讀下單當時的銷項税快照,快照沒有的單另外列出

  • 原本那一列固定寫著 0.00,同頁還有一句說「系統未記錄增值稅銷項稅額」——而實際上資料庫裡存著每一筆下單當時的銷項税快照(近 30 天 571 筆裡有 563 筆有快照),未稅加稅額也剛好等於含稅小計、逐分不差。也就是說,報表不是在說「沒有稅」,是在說一件不成立的事。
  • 現在它讀那份快照:實測某租戶 2026-09 算出應交稅費 77.40 元,而且來源標明是「下單快照」而不是估計。快照沒有的單不會被混進同一個數字,而是另外列出來(附單號),頁面上的說明也改成事實。
  • 邊界講清楚:法人級的稅額拆分尚未支援,目前這個數字是租戶級;這一點寫在同一頁的說明裡,不假裝有。企業所得稅計提仍未記錄。
全员

更新日誌的模組頁搜尋原本按了沒反應(畫面不會有任何紅字)——現在會回「找到 N 条…」

  • 原本:在模組頁打關鍵字,畫面完全不動 ⇒ 看起來像「搜尋壞了」,而其實是頁面那段程式的識別鍵在那些頁面不存在、一按就拋錯。
  • 現在:識別鍵搬到共用位置,模組頁/全部面/功能更新面三個面搜尋都有結果,且頁面錯誤數為 0。
  • 怎麼查:在 `/changelog/m/finance/` 打「记賬」、在 `?view=all` 打「端點」,兩邊都應該出現「找到 N 条…」。
全员

更新日誌頁原本自稱「目前共 232 条」,而同一頁已經畫到第 233 条——那個數字現在跟著實際條目走

  • 原本:那個數字是**建置當時**的快照;頁面在瀏覽器裡補進新條目之後,數字不會動 ⇒ 讀者讀到的數字與他自己在同一頁上看到的清單對不上。
  • 現在:開頁後用同一份端點資料把數字對齊(兩面都適用),並補上「未上線」徽章的逐條狀態。
  • 怎麼查:`aimaidin.com/changelog/` 那行「目前共 N 条」與端點 `?kind=product` 的 `count` 必須相等。
全员

官網的更新日誌多了第二個檢視:「全部(含工程日志)」——原本只列已經上線的功能更新,工程面的紀錄一條都看不到

  • 原本:官網更新日誌只畫「已經上線」的功能更新(內部工程紀錄在 API 裡有、頁面上一條都看不到),所以「我們今天改了什麼」對外等於不存在。
  • 現在:同一頁多了「全部(含工程日志)」的檢視,切過去就看得見全部條目;而**還沒上線**的條目會標上「尚未上线」,不會被誤讀成已經生效。
  • 怎麼查:開 `aimaidin.com/changelog/?view=all`,對照 `aimaidin.com/changelog/`(預設仍是功能更新面)。
后台

集团壳两页补上「看不到」与「还没有数据」两句不同的空态

  • 集团的门店雷达与集团周报在无资料时原本只有壳、没有一句说明;现在两种空态分开:「你的账号在这个集团里看不到任何营业中门店(权限或范围问题·不是没有数据)」与「本周集团尚无指标(不适用):有 N 家店,但这一周没有任何一家有数字——这是『还没有数据』,不是你『看不到』」。
  • 判定布林改白名单(只认本周集团指标那 7 个栏位),并修掉把上周数字误当本周有指标的问题。
  • 空态句与标记用同一个布林,两者不会不一致。
后台

更新日志多了「全部(含工程日志)」这个视图,每条会标明上线状态

  • 更新日志页现在有两个视图:默认的「功能更新」只列客户看得懂的功能变更,「全部(含工程日志)」把工程与治理类的记录也一起列出来。
  • 每一条会带着它的上线状态显示;记录上还没有上线时间的那几条会挂一个「尚未上线」的标记,不会让人以为它已经生效。
  • 页面写的「目前共 N 条」现在跟着实际资料走——开页时会重新对一次帐,不再停在页面生成的那一刻。
  • 「全部」那个视图的网址是 https://aimaidin.com/changelog/?view=all ,可以直接分享或存书签。
客人

手机上的客人端顶栏,EN/列表/大图/幻灯片被挤到屏幕外

  • 扫码点单的手机页,顶栏原来是**一条不可压缩的长排**:390px 的手机上整页被撑到 600px 宽(横向溢出 210px),414px 溢出 188px,428px 溢出 174px。「中文」被压成 36.5×40、两个字竖着排成两行,「幻灯片」三行,而「EN/列表/大图/幻灯片」四颗整个落在画面之外——客人看不到,也就等于这几个功能没做。
  • 根因两条:①顶栏那排自己不换行,它的最小宽度(584px)直接把整个页面撑宽,所以不是「栏内横向滚动」,是**整页左右晃**;②那几颗开关按钮没有禁止压缩、也没有最小宽度,被挤的时候先被压扁、文字直排,触摸高度也掉到 40px(这个仓库自己定的触摸门槛是 44px)。
  • 现在手机上顶栏改成竖着堆:品牌一行、动作按钮一行、语言与浏览模式一起落在最后一行,放不下就折行,绝不撑宽页面。
  • 代价照实说:390px 下顶栏由 147px 变成 190px(多 43px,其中一部分是把触摸目标补到 44px),换到的是「没有任何一颗跑到画面外」。绑了会员再多三颗(寄存/积分/优惠券)的情况也量过:11 颗仍然零溢出。
客人

客人端切到 EN 没有任何反应——是依赖数组少列了一个变量

  • 扫码点单页右上角的「中文/EN」以前点了没反应:文案一个字都不变,连按钮自己的选中态都不动。原因是语言这个状态改了值,但没有被列进 state 的依赖数组里,外面拿到的永远是旧值。现在点 EN,商品主标题会换成英文。
  • 同一个对象里只有这一个变量漏了(浏览模式、分类、搜索都在依赖里),所以症状很怪:切视图、切分类、搜索都正常,只有语言不动——这也是它一直没被发现的原因。
  • 切回「中文」,主标题回中文;价格与售罄状态逐字不变(只换语言,不换数据)。
财务

记账规则表多了「账套」一栏(内账/外账),总账页可以一键去看明细

  • 记账规则表原本同一个事件会出现两列、逐字一模一样——让人以为资料重复;其实两列差在账套(内账/外账),而那一栏没有显示。现在多了「账套」一栏,两列当场分得出来。
  • 总账页原本只读到一句「后端已经有了、前端还没接上」,读完不知道下一步去哪;现在给一颗「去试算表看明细 →」直接跳过去。
  • 会计页的页签名称与面板标题统一(税那一页)。
财务

日结的人力那一格,会说明「人力按 ¥0·未含提成」

  • 日结「人力成本」那一格原本只给一个金额(例如 ¥0),没有说这个 0 代表什么。
  • 现在有值时补上「人力按 ¥0·未含提成」;门店没设预设时薪时写「未设置(门店未设预设时薪·未计入)」,不印成 ¥0。
老板

日结可以直接指名某一天;打错的网址会说「这个网址不是一个页面」

  • 日结页现在可以直接用日期打开(网址带 ?date=),翻前/后一营业日时也会把日期写回网址——截图、读数、转给别人看,都能指名是哪一天。
  • 后台里打错的网址(例:daily-close 这种拼法)不再静默显示成总览;会明说「这个网址不是一个页面」并且只给「回总览」。
  • 日结页在没有数据时也保留字段骨架与口径说明,指标锚点在任何状态下都在。
财务

日结多一列「低消补差」,赠送不再被当成扣减项

  • 日结的账目阶梯多了一列「低消补差(加)」,来源与折扣同一组(已结单)。
  • 阶梯现在可以当场对起来:原价合计 + 低消补差 − 折扣 − 退款 = 净销售。
  • 「赠送」原本印成「赠送(减) −¥X」夹在折扣与退款中间,容易被拿去减——现在它列在阶梯外面、不带动减号,并注明它自己的母体不同(当日全部单·含未结)。
  • 每一列都标了它的母体;同一母体内才可以相减。净销售的值没有因为这个改动而变化。
  • 某一格后端还没给时,写「后端还没给这一格」,不会印成 0。
财务

现金流水:短款/长款讲出来,全页只剩一种负号,折起来就看得到「应有现金」

  • 班次差异原本只印一个金额(例如 ¥-400),没有方向词——对账的人会读成「负业绩」而不是「抽屉少了钱」。现在写「短款(Short) −¥400」/「长款(Over) +¥X」。
  • 同一页原本有两种负号写法(一种在金额后面、一种是另一种字符),现在统一成一种:符号在前、负号用同一个字符。
  • 折叠状态下也会显示「应有 ¥X」——「交班 100/应有 4,088」与「交班 100/应有 500」在列表上就能分辨,不用先展开。
  • 净额那一行补上说明:净额 = 收入合计 − 支出合计。
厨房

出品看板上几天前的漏单,不再印成「已超时 31550 分钟」

  • 出品看板每一张票卡右上角原本都印「已超时 N 分钟」;跨日的漏单会把好几天前的时间也换算成分钟,实测出现过「已超时 31550 分钟」(约 22 天)。
  • 现在本营业日内的照旧印分钟;跨日的一律换单位并标出来:「逾 N 天未出餐」。
  • 还在等的单照显示、照排序,不会为了好看被清零。「跨日」标签、以及给机器读的年龄属性一起带上。
老板

对账说「检查 0 项,全部一致」的时候,现在会直接说「无可检查项(不适用)」

  • 对账页里每一项检查原本都印「检查 N 项,…」;当某一项**一笔都没扫到**时,它也印「检查 0 项,全部一致」——读起来像「查过了、没问题」,其实是什么都没查。
  • 现在扫到 0 笔的那一项直接写「无可检查项(不适用)」,与「查过且一致」分开。
  • 分母本来就算得出来(就是这一项实际扫过的单据笔数);后端没给分母时会写「分母未提供」,不会印成 0。
  • 有分母的那几项一个字都没动(例如「检查 128 项,全部一致」照旧)。
後端

供應商門戶:多租戶的情況不再被說成『檔案不存在』

  • 供應商在自己的入口查不到東西時,畫面說「档案不存在」——而真正的原因是跨租戶,不是檔案不見了。
  • 這一條把那句假話換掉(`supplier_portal_views.py`)。說法改了、供應商讀得到,所以是產品更新。
後端

供應商公開報價頁補上圖片/最小起訂量/交期三欄:三樣資料庫都有,那頁一樣都不給

  • 供應商打開公開報價頁看不到商品圖、最小起訂量與交期——而這三樣在資料庫裡都有。
  • 這一條把它們補上(`quote_link_service.py`)。供應商感覺得到,所以是產品更新。
後端

客人菜單的圖片全破:`image` 欄吐的是儲存體 key,不是簽名網址

  • 客人在菜單上看到的圖片全部是破的——序列化出去的是儲存體 key,前端拿它當網址用。
  • 改成吐簽名網址(`apps/publicapi/serializers.py` 等)。這是客人直接看到的修復,所以是產品更新。
会计

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

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

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

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

后台文案统一成简体:台湾用语与「还开著」这类漏网字(含老板/会计/出纳第一屏 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`);同一輪也撤回了另一條線重複做的後端半。
  • 店長與倉管在庫存頁直接感覺得到。
後端

出庫算哪個營業日:改問 `business_date`,不再問『這列什麼時候寫進資料庫』

  • 每一筆出庫被算進哪一天的營業日,原本問的是資料列被寫入的時間。
  • 回填的資料因此永遠只落在一天,補貨建議等於被結構性關閉;改成問 `business_date`(`inventory_selector.py`)。
  • 補貨建議是店長看的,所以是產品更新。
後端

預約訂金合計端點:財務頁那一格從『讀不到』變成真數字(分桶的軸不是 `status`)

  • 財務頁上『預約訂金』那一格一直顯示讀不到,因為後端沒有這一個合計。
  • 這一條補上端點,並且分桶用的軸不是訂單狀態而是預約自己的狀態(`apps/members/urls.py`、`views.py`)。
  • 那一格現在顯示真數字,前端半也一起落地 ⇒ 使用者感覺得到。
後端

同租戶商品重名:應用層守衛先擋增量(索引與存量留給 rico8)

  • 同一個租戶可以建出兩個同名商品,列表上分不出誰是誰。
  • 這一條先在應用層擋住新增的重名(索引與既有資料留給另一條線處理),所以現在建重名會被拒絕。
  • 使用者會遇到這個拒絕訊息,所以是產品更新。
後端

訂單列表補上已退款金額與淨額兩欄

  • 訂單列表原本只給總額,看不出哪一張被退過、退了多少。
  • 這一條在列表序列化器補上 `refunded_amount` 與 `net_amount`;這一條同時解鎖了前端與 P2-299 的退款篩選。
  • 金額欄位是老闆直接看到的,所以是產品更新。
後端

訂單查詢新增『有沒有退款』篩選(後端 `has_refund`),詳情帶退款集合

  • 先前『日結的退款筆數』與『訂單查詢看到的退款』對不上,前端也因此做不出篩選。
  • 後端補上 `?has_refund=true|false` 與詳情裡的退款集合(`order_selector.py`、`serializers.py`、`views.py`)。老闆與店長在訂單查詢頁感覺得到。
后台

窄一点的屏幕上,后台页面标题不再一个字一行竖着排

  • 1024×768 的 iPad 横屏、或者把窗口贴在 1920 屏幕一半的时候,后台左上角的页名(例如「班次纪录」)会变成四个字竖着排。现在恢复单行。
客人

没设置营业时间的店,不会再被显示成「营业中」

  • 顾客中心「门店信息」右侧原本永远显示「营业中」,即使这家店从来没有设置过营业时间。
  • 现在没设置营业时间的店不显示这个标记——不做没查证过的断言;设置过的店照常显示「营业中」或「已打烊」。
客人

「我的优惠券」看不到券时,主按钮直接带你去认领会员

  • 以前这页说明里写着「去『我的会员』认领一下」,但唯一的按钮是「返回」——说了路在哪,却不给路。
  • 现在主按钮是「去认领会员」,点了直接到认领页;「返回」降成一行小字。
客人

自助订位可以填「怎么称呼您」,店家不再拿到一串手机号当姓名

  • 自助订位表单多了「怎么称呼您」,排在联系电话前面,必填。
  • 以前没有这一栏,后端拿不到姓名就把手机号当成联系人写进去——店员看到的订位「联系人」是一串号码。
  • 桌边那句「这桌有一组预订」也因此能显示真正的姓氏,而不是一个认不出来的遮罩串。
老板

老板首屏的 AI 早报把「毛利掉了 35 个百分点」说成「低 0.0 个百分点」——已上线修复

  • 走查店实测:毛利从 94.3% 掉到 58.8%(少了 35.5 个百分点),而首屏那句话写「毛利较上期低 **0.0** 个百分点,3 个品项是这期毛利偏低的主因」——既说没变、又指认了元凶。
  • 根因:那个字段名字叫 points(百分点),装的却是比率。同一个文件里另外三处「个百分点」都乘了 100,只有这一句没有,整整少讲 100 倍。
  • 🔴 这个修法**早就写好并合进主干了**,一直没有部署 —— 缺陷在正式机上又活了一段时间,而代码库里它已经是修好的状态。
  • 已部署并实测:同一支接口现在回「毛利较上期低 35.5 个百分点」。
  • ⚠️ 同一次实测里冒出同族的下一个:一个品项写「拖累店级毛利约 62.7 个百分点」而总计只有 35.5 —— 部分大于全体。已转给该模块的人,本条不含它。
客人

「我存的酒」看不到记录时,会直接带你去认领会员

  • 以前这里说「只对已认领会员开放,或者这家店暂时还没上线这个功能」——两个理由并排,客人分不出自己属于哪一种。
  • 其中「这家店没上线」这条在后端根本不存在,看不到记录只可能是还没认领会员。
  • 现在只讲真正的原因,并且主按钮变成「去认领会员」,点了直接到认领页;「返回订单」降成一行小字。
客人

顾客中心首页的待结金额,也会说明结账时还要另计服务费

  • 扫码后的顾客中心首页,待结金额下面会多一句「结账时另计服务费等」。
  • 以前这里只印一个金额,看起来像最终要付的钱,其实低消补足和服务费要到结账那一刻才算。
  • 没有这类费用的店、以及已经结账的单,不显示这句话。
全员

后台「咨客台」和「会计」两个入口修好了——它们的代码在,但打开它们的那把钥匙没接上

  • 咨客台整页(759 行)、会计页、以及两条侧边栏入口,都已经合进主干。但**算「你有没有权限看到它」的那段代码,三个权限位一个都没接**——结果是这两页对任何人都不出现,而且不会报任何错。
  • 同一批还有「接手未结单」:按钮会派发两个动作,而处理动作的地方不认得它们。
  • 🔴 更值得记的是判断方式:**干净的主干编译不过(5 个错),而大家日常工作的那棵共享目录是通过的** —— 方向跟直觉相反。补齐它的那半只存在于共享目录的未提交文件里,是我昨天做的快照分支唯一留着它。
  • 有一个「类型通过了而错误搬到线上」的岔路我没走:接手的单子在界面上叫 adopted,而后端的服务通道只收 堂食/吧台/外带 三种(实读了后端的定义,不是推测)。把 adopted 加进类型会让编译变绿,然后把一个后端不认识的值送上正式机。正解是对接手的单子不送这个字段——那张单在服务器上早就有自己的通道。
  • 已部署并在线上确认:侧边栏 54 个图标、咨客台、会计三样都服务得到。
  • 同一天在小程序那半找到更大的一批:干净主干的小程序类型检查 **53 个错**,而大家日常用的共享目录只有 16 个 —— 又是「用的人合进来了、提供的人没合进来」。
  • 缺的东西具体是:两个界面组件整个文件不在、一个工具文件不在、19 支页面「被别人 import 却没有导出自己那一块」、五个共用组件少了新增的几个属性。
  • 已全部补齐,53 → 0。收敛过程是一步一量(53→46→29→14→2→1→0),不是一次全换 —— 每个文件都先确认「主干有而快照没有的导出」是空的(也就是快照是超集)才取。
  • ⚠️ 最后一个我没有照抄:快照那版有一处泛型参数省略了,照抄会留一个错。按库里既有的写法修,理由写在代码注释里。
  • ⚠️ 记录一次我自己的失误:写这条记录时我按「取第一条」去更新,而这个编号当天被两个人各领了一次,第一条是别人的。我把上面几条写进了别人的记录里。已还原并改到这条。**定位记录要按标题,不要按顺序。**
  • ⚠️ 票号订正:这条原本写成 T-2547,而那个号是别人 01:00Z 在公告板上领的。我算了「板上最大号 +1」却**没有在板上写下领号那一行**,也没查那个号是谁领的 —— 撞号的第二种:没领就用。已按协定补领 T-2550(写完立刻重读确认自己是唯一持有者)。
全员

更新日志现在分得出「做完了」和「已上线」

  • 以前这一页上的日期是「做完那天」,不是「上线那天」——写记录的人在提交代码当下就填了它,那时候还没部署。于是有些条目看起来已经上线,你打开产品却还找不到。
  • 现在多了一个真正的上线时间,由部署流程自己写,不靠人记得填。已经上线的显示上线时间;做完但还没上线的会主动写「尚未上线」,不是留空。
  • 留空有第三种意思:这条记录比「开始记录上线时间」这件事本身还早,系统当时没有这个信息,所以不显示——不会把它冤枉成「尚未上线」。
老板

老板首屏会说明「为什么今天的数字长这样」

  • 演示店、且今天还没有生意时,首屏多一句:「这是一家演示店,数据是历史叙事;今天没有营业。」——先讲清楚为什么下面几张卡是空的,不让访客以为产品坏了。
  • 演示店、今天有生意时,那句换成「演示数据:今天还在进行中,数字会继续变化。」
  • 真实店(任何状态)不显示这一格(后端回 null ⇒ 前端就不画)。
  • 这一句由后端产生并随首屏数字一起带下来(两个读取端各带同一句) ⇒ 前端只负责显示,不自己写文案、也不自己判断今天的营业状态。
設定真源

設定的「沒設」不再假裝成 false:值是哪一層來的、這家店有沒有覆寫,都說得出來

  • 讀設定時多回兩個欄位:resolved_from(store/company/platform/none)與 store_override_exists(這家店有沒有自己的覆寫)
  • 「沒設」不再用 false 代表——value 會是 null 且 configured=false(先前是 value:false 配 configured:true,等於告訴前端「已設定為 false」)
  • 寫入設定時會驗型別:宣告 bool/int/float/json 的值若讀不回那個型別,當場 400(CONFIG_VALUE_TYPE_MISMATCH),不再靜默存進去
  • ★ 12 個前線白名單 key(table_alert_minutes/table_state_colors/gift_with_purchase/happy_hour_pricing/kds_station_routing/receipt_template/service_call_stale_minutes/pos_production_flow_enabled/business_hours/expense_claim_max_amount/points_per_yuan_redeem/floor_plan_layout)先前回 value:false+configured:true,現在回 404 CONFIG_NOT_FOUND(它們沒被登記進 key 註冊表)——需要產品決定「登記它」或「從白名單拿掉」
  • ★ 消費端提醒:錢/旗標欄位若用 if (x) 判斷有沒有值,要改成判斷 key 是否存在(鍵仍在、值可能是 null 或 false)
欄位分級

商品端的「錢」只給會計/報表層:成本、毛利、提成費率、分紅率不再跟著商品檢視權一起出去

  • 只有 products:view 的帳號(走查咨客 4 碼)在 /stores/{id}/products/ 看不到 avg_unit_cost/inventory_value/estimated_gross_profit/estimated_gross_margin/cost_missing/commission_mode/commission_value(值變 null、鍵仍在)
  • /products/ 的 dividend_rate/is_taxable_luxury 同樣分級(非成本層回 null)
  • /products/{id}/recipe/cost/ 這一支從「商品管理權」改成「會計/報表層」(accounting:view 或 reports:view)——先前它把整份配方成本(含 unit_cost/line_cost/available_quantity)回給只有 products:view 的帳號
  • ★ 錢的欄位改成 null 但鍵仍在:消費端若用 if (x) 判斷有沒有值,要改成判斷 key 是否存在(鍵拿掉會讓 TS 型別說謊)
  • 商品管理權名單(products:view/create/edit)一個字沒動——不是用「收緊權限名單」當修法
契約純度

「狀態不允許」不再說成「這張單不見了」:結帳/退款/換台/採購單各有自己的錯誤碼

  • 撤銷結帳但訂單還沒結帳:ORDER_NOT_FOUND → ORDER_NOT_SETTLED(訊息不再含「或不存在」)
  • 退款但訂單還沒結帳:ORDER_NOT_FOUND → ORDER_NOT_REFUNDABLE
  • 換台/並台狀態不允許:ORDER_NOT_FOUND → ORDER_TABLE_CHANGE_NOT_ALLOWED
  • 取消一張已結帳/已取消的單:改用既有的 ORDER_ALREADY_FINALIZED(不為同一件事造第二個碼)
  • 採購單相關錯誤:ORDER_NOT_FOUND → PURCHASE_ORDER_NOT_FOUND;找不到這一桌的訂單 → TABLE_ORDER_NOT_FOUND
  • 真的不存在的銷售訂單仍然回 ORDER_NOT_FOUND(訊息「订单不存在」);跨店也不透露存在與否
  • ★ 狀態碼全部不變(仍 400);變的是 error.code 與那 5 處訊息
契約純度

掛帳沒綁會員的錯誤碼與儲值統一(NO_MEMBER_CREDIT 併回 NO_MEMBER)——同一件事不再兩個碼

  • 掛帳付款但訂單沒綁會員:錯誤碼由 NO_MEMBER_CREDIT 改成 NO_MEMBER(訊息與狀態碼不變:400「挂账支付需要先关联会员」)
  • 從此「這個付款方式需要先綁會員」只有一個碼 ⇒ 目錄的下一步語意給得出唯一答案
  • App 端的連帶影響:完成收款文案表對 NO_MEMBER 有一句儲值措辭,需改成通用措辭(已列進三端影響清單;舊 NO_MEMBER_CREDIT 分支留過渡期)
契約純度

別家店的東西不再說成「不存在」:門店範圍有自己的 403 碼,開台/預約會說清楚是哪一種

  • 門店範圍被擋(這家店不是你的)從 FORBIDDEN 改成專屬碼 STORE_SCOPE_DENIED(訊息不變:「無權操作該門店資源」)
  • 權限不足維持 FORBIDDEN「权限不足」⇒ 兩種病因從此分得開(以前同碼同狀態碼,畫面只能猜)
  • 開台/預約帶到別家店的桌台:訊息由「桌台不存在或不属于当前门店」拆成「桌台不存在」與「桌台不属于当前门店」
  • ★ 行為變更:同一公司內跨門店的桌台/預約,回應由 404 改成 403(別的公司的仍然回 404,不對外確認跨租戶資源是否存在)
部分部署

收貨指定倉庫不再被吃掉:選了哪個倉就入哪個倉(原本靜默落入預設倉)

  • 收貨時指定倉庫(warehouse_id)真的生效:收貨單與庫存流水都記在指定的那個倉
  • 未指定倉庫時,仍照舊落入門店預設倉(兩條路都保留)
  • 修正方式是把 P0-10 少上的一個檔補上(同一個 commit 的 model/migration 早已在正式機)
契約漂移

營運成本可以改、也可以刪了;樓面點單欄會動了(原本一個是 404、一個是欄位不存在)

  • PATCH /api/v1/operating-costs/{id}/ 與 DELETE /api/v1/operating-costs/{id}/ 從 404 變成可用(前端早已在打這兩個動作)
  • PATCH /api/v1/store-assets/{id}/ 同批上線(門店資產改一筆/軟刪)
  • 樓面訂單詳情的品項回傳 production_status——點單欄不再永遠停在「已下單」
  • 庫存流水列表補上倉庫名/操作人名/品項摘要,並統一兩處分頁
  • 桌台唯讀列表與小程序 QR 放寬到「開台或門店管理」任一權限
分析

销售页新增「毛利率」列,毛利率高于 90% 的品项会提示回头看进货成本

  • 销售页新增「毛利率」列,换算成百分比后离谱的数一眼可见。
  • 毛利率高于 90% 的品项数会在页上提示「请回头看看」,只出声不下判断,不改任何数据。
  • 附行业区间依据(酒吧 pour cost 18–24%,即毛利率 76–82%)。
分析

销售页高毛利提示的原因订正:不是没录成本,而是有一笔录错的进货把平均成本拉低

  • 订正 T-2511 的警语:删除「成本没录进来」的说法,改为指出真因是一笔录错的进货把加权平均成本拉低,该做的是去库存异动里找那一笔。
  • 补一句说明:同一个商品在销售页/毛利看板(当前加权平均成本)和菜单医生(售出时的成本快照)用的不是同一个成本,两者不一致本身就是症状。
文案

多处中文说明在页面里不再多出一个空格

  • 第一轮:8 个文件 10 处中文句子在源码里跨行,渲染多一个空格,接回一行。
  • 第二轮:按更宽的判准再找到 13 处,涉及成本、分红、排班、班次历史、桌效、门户免责声明、客人识别提示、总部目标等页。
  • 第三轮:补一个检查抓不到的同族(逗号前是全角右引号时)。
文案

页面上不再出现 Markdown 的星号

  • 修 7 处、5 个文件里原样印在画面上的 **加粗** 星号(会计、会员、门户布局配置、桌效、会员术语表)。
  • 页面文字统一改成加粗标签;会员术语表那一处在 JS 字符串里,改写成破折号。
  • 新增 check-jsx-literal-markdown.mjs 闸门并登记进合并闸门。
分析

毛利看板:毛利率高于 92% 会标「成本可能没录对」

  • 毛利率高于 92% 的品项标信息提示,同一格写「成本可能没录对」。
  • 页尾补说明:行业常见区间酒水 76–82%、餐食 65–70%,高出一截通常是进货单价录错;并给出到进销存比对每笔入库单价的查法。
  • 原有低于 70% 标黄、低于 50% 标红不变。
分析

菜单工程页把销量中位数印在平均数旁边

  • 销量平均值旁新增中位数;两者差得很多,就是平均数不具代表性的信号。
  • 没有过滤任何品项,也没有改分界线的算法。
老板

离线未送出的点单不会再因为读不到而被删掉

  • 本机离线待送队列:读不出来时(档案坏掉/存取失败/App 升版后旧格式 blob 还在),以前除了会被当成「没有待补送」,更糟的是**下一次写入会先读再整份覆写**,把磁碟上还没送出的点单整份写成空的——已点但没进厨房、帐上也查不到的静默删单。
  • 现在读不到就一律不写(新增/更新/删除都回 false 且不动磁碟),原始字串另存一份救援副本;真的没有与读不到在画面上分成两态(读不到时不给「联网补送全部」)。
  • 补送路径同步收紧:删不掉/写不回时不再宣称「已丢弃/已完成」,留在待补送(下一次靠幂等键重试,不会重复下单)。
  • 同族第 2/3 例(票面 §3 清单发现、指挥裁定并入本票):生物辨識名冊(`biometric_roster.dart`)與通知已讀集合(`notification_center_sheet.dart`)也是「先讀再整份寫」——讀失敗時舊碼會把先前已錄的人/已讀標記整批覆蓋掉。兩支現在都改成「讀不到就不寫」,狀態字用庫裡的 `LoadState`(loading/ok/unreadable)。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
服务生

订位冲突提示不再把 UTC 当成本地时间印出来

  • 实测:建一笔 14:04 的订位,去点那张桌送单,弹出来的 409 写「桌台已为 王小姐 预留,预约时间 2026-09-20 06:04」——差 8 小时,而画面其他每一处都写 14:04。
  • 伤害:这句话的工作就是拦住服务生。他下午两点读到「06:04」,最自然的解读是早上那笔没清掉的旧订位,于是照样开台——唯一一句会拦他的话,自己把自己讲成不用理会。
  • 真因:settings.TIME_ZONE 是 UTC,aware datetime 直接格式化印出来就是 UTC。
  • 注意:timezone.localtime() 是错的修法(取当前活动时区,而它就是 UTC ⇒ 改完什么都不会变而且看起来很对)。正解是门店营业时区 get_business_timezone(store_id)。
  • 同一支档案两句都改了(排订位撞车 / 开台撞订位),文案不同、在两条动线上,只改一句另一条会继续印 UTC 而完全不出声。
服务生

订位列按「取消」,不会再显示「报到中…」

  • busyId 是整列共用的,五颗钮(确认/报到/带位开桌/爽约/取消)全都掛 disabled,但只有「报到」那颗会换字 ⇒ 不管按哪颗,换字的永远是「报到」。
  • 报到(记录客人已到)、爽约(可能没收订金)、取消(可能退款)后果完全不同;按了取消却看到系统宣称正在报到,而整列同时被 disable,使用者没办法补救。
  • 改成另存「正在跑的是哪一个动作」,五颗钮各自只在自己那个动作在跑时才换字。不是拿掉进度字——拿掉的话网路慢时使用者不知道送出去了没,会再按一次。
  • 六个 handler 全部同步设/清,五颗钮全部接上,避免新 state 变成设了没人读的死码。
  • 宽屏表格与窄屏 RowCard 共用同一份操作区,所以一次改盖到两种版面。
服务生

点被预订的桌时,「带位开桌」不会再从画面上消失

  • 原本「带位开桌」按钮和「当散客开台」确认框是同一个三元式的两臂,互斥。整张桌卡本身就是按钮,服务生一点桌,「带位开桌」当场被卸载,只剩「确定当散客开台」和「取消」——最可能去按的那个手势,把唯一正确的动作从画面上拿掉了。
  • 确认框改成问人而不是预设答案:「此桌 14:04 有 王小姐 的预订(4 位)——现在坐下的是这组客人吗?」,三颗钮:是 王小姐,带位开桌 / 不是,当散客开台 / 取消。
  • 后果:只有走「带位开桌」这条路,订单才会带上 reservation_id,订金抵扣才跑得到(正式机订单 5,095 笔只有 67 笔带,1%;订金 63 笔全部退款、抵扣 0 笔)。
  • 同屏繁体字(订位/确定/开台)一并改简体——这支档案其他字串本来就是简体。
  • 没有改后端:自动按桌+时间比对绑定会把订位客人的订金抵扣记到散客头上,系统分不出早到的订位客人和刚走进来的散客。
收银

低消桌结帐的「刚好」改成填应收:按下去是 500,不再是 280

  • 现象:低消桌(测试门店 B1、低消 ¥500、已点 ¥280)按结帐后,画面写「应收 ¥500」、实收预填也是 500,但一按「刚好」就被覆写成 280(=小计),系统随即红字「实收不足,请向客人补收差额」——一颗叫「刚好」的按钮把正确金额改成系统自己会拒绝的金额。
  • 根因:主收款那颗「刚好」绑的是 remainder,而 remainder 在「伺服器还没核定」(dueTotal == null)这条 fallback 路径上用的是本地估的 total(品项−折扣+服务费),不含低消补差。
  • 修法:把低消补差算进 fallback(minSpendGap = max(0, 桌子的 lockedMinSpend − 折扣后小计)),形状对齐 H5 PaymentSheet.tsx:536 的 cashTarget;不动预填那条路(它本来就是对的);守门保留(按不足金额⇒红字且不送任何请求)。
  • 验收:先 billing 再按「刚好」(未 billing 时应收==小计==280,按下去填 280 是对的、不会显形)。
老板

历史详情读失败不再和「真的没付款」混为一谈

  • 今天历史(paid/refunded 清单)逐笔取详情时,读失败与「真的没付款」原本共用同一条 continue ⇒ 那笔单从历史整张消失。改成两个分支:读失败 ⇒ 记进 unread(带单号)并在画面上说「未列入今日历史(不是『没有交易』)」;真的没付款才照原本跳过。
  • 整批清单读取失败另走一句「今日历史没读到,下面这些数字只含本机记到的部分」;两种句子分开,不共用。
  • 事件水合的 .catch(() => {}) 一并收掉(原本整批失败完全静默)。不得为 unread 合成任何事件(会以 0 元计入营收/提成)。
  • 通知挂在已经挂这支 hook 的两棵树:后台(AdminShell)与 POS 顶栏(App.tsx)。
老板

月度目标读不到时不再清空其他月份(HQ 与店级同一道红线)

  • 根因:目标是一个「整份字典」的设定(value 覆盖不是逐栏位 patch),而读取失败被吞成空字典 ⇒ 在 HQ 下达当月目标时,送出的内容只有那一个月 ⇒ 该店其他月份的设定被整份删掉。
  • 读取层改成只吞 404(这家店没设过 ⇒ 空字典),其余错误一律往上抛;写入端加红线:只有「已成功读到」才允许下达(成功读到可以是空字典=真的没设过,功能不因此消失),读不到时保存钮不可按并写出原因。
  • 验收:阻断读取 ⇒ 出现「目标没读到」标示+保存钮 disabled(带说明)+容器内强制点击后写入计数 0;happy path 在二號店(原有 2026-08=50000)下达 2026-09=50000 ⇒ POST body 仍为 {"2026-08":50000,"2026-09":50000}(其他月份没被吃掉);反例:真的没设过的测试门店仍可下达({} → {"2026-09":50000})。
  • 已部署:index-B7FCGkW1.js(本地 2026-09-20 11:22),跨 chunk 指紋 目标没读到,不可下达=1/目标没读到,不可设定=1(部署前皆 0)。
  • 写入申报(验收用、已批准):二號店与测试门店 monthly_sales_goal 各设 2026-09=50000。
老板

HQ 进店检视不再把本店低库存写进别家店的交班留言板

  • 闸门加在写入点 src/state/autoLowStockNote.ts 的 effect 开头:if (isStoreOverridden()) return。与「正在查看某店」横幅用同一颗判断(规则 70 附则三:有旗标≠有闸门)。
  • 不采「改 GET」「延后到使用者动手」「只说不做」;.catch(() => {}) 不动(档头写明的 best-effort,补上闸门之后它才真的是 best-effort 而不是掩盖)。功能不删:本店进后台的低库存自动留言(T-013③)行为完全不变。
  • 验收(正式机 index-CViaaPrK.js,规则 74 判准=计数为 0):进 HQ →「查看这家店」进二號店(横幅「🔍 正在查看 rico 測試門店二號…返回本店」证明真的进了检视)⇒ 该 session 非 GET 请求总数 0、其中 handover-notes POST 0;被检视店留言板 16→16 笔不变(读回来数,不是「我没看到请求」)。
  • 反例与去重(诚实声明):本店进后台 handover POST 0、留言 30→30 笔;同一营业日再进一次仍 0(既有去重成立)。**我没有制造出「当日本店还没写过」的状态**,所以只证到「去重后不再写」,没证到「换一个新营业日会写」;19 笔既存自动留言证明写入路径活着、没被我删掉。
  • 跨 chunk 指纹(线上 149 个 chunk):这是平台预设 1、未启用 3、咨客台 2、接手结帐 1、财务健康 5 ⇒ P1-108 上线且 P1-101/P1-104/P1-102/WALK-182 无回退。
全员

App 狀態判準與讀失敗守衛(本機佇列/庫存七格/滿贈/模組閘)+工具線…

  • 改了什麼:fix(P1-112/P1-116/P2-116/P2-114): App 狀態判準與讀失敗守衛(本機佇列/庫存七格/滿贈/模組閘)+工具線 [P1-112/P1-116/P2-116/P2-114/P2-123]
  • 本票含 2 顆 commit,主旨各異:App 狀態判準與讀失敗守衛(本機佇列/庫存七格/滿贈/模組閘)+工具線… / 桌面工作區第二階段(財務健康)+ inventory_api 資料層縫 + 死旗標清理…
  • 動到的檔:lib/application/cart_send_controller.dart、lib/application/offline_queue_controller.dart、lib/application/providers.dart、lib/core/theme/rico_theme.dart(共 12 檔)
  • 怎麼查:git show 2e039e23(rico_flutter)
全员

財務健康敘述卡 paint exception(非同色 border + 圓角)

  • 改了什麼:fix(P1-128): 財務健康敘述卡 paint exception(非同色 border + 圓角)
  • 本票含 2 顆 commit,主旨各異:財務健康敘述卡 paint exception(非同色 border + 圓角) / 桌面工作區第二階段(財務健康)+ inventory_api 資料層縫 + 死旗標清理…
  • 動到的檔:lib/features/owner/finance_health_sheet.dart、lib/features/owner/finance_narration_card.dart、test/p1128_paint_exception_test.dart、lib/data/inventory/inventory_api.dart(共 12 檔)
  • 怎麼查:git show 7744b6a1(rico_flutter)
老板

收银台在「这张单已被别处结帐」时会说「不要再收一次」

  • 同一张单被两台装置接手时,输的那台按结帐会看到:「这张单已经在别处结帐(或已被作废)——多半是另一台装置接手收的款。这里不要再收一次;请按『重新读取』看未結單清单的最新状态。」
  • 若那张单连伺服器上都找不到了,讯息改成「可能已被另一台装置结帐或作废」并指出去哪看未結單清单。
  • 三个结帐出口(直接收款/分账收款/记部分结账)与「未結單接手结帐」都接上同一句;认不出来的错误一律保留原本的通用文案,不把「网路断了」讲成「别人结掉了」。
老板

脏数据不再被读成数字:推广预算这类的「12abc」一律显示为读不到

  • 推广活动 ROI 卡上的「预算金额」若后端回的是「12abc」这种带尾巴的字串,现在显示为**读不到**(不是硬转成 12)。
  • 同一支检查也用在桌台开台提醒分钟数上:非数字、布林、空值一律视为未设定,不会被读成 0 分钟。
老板

结账画面:低消补足算进「应收」,「刚好」不再只填小计

  • 低消桌结账:「应收」那一行现在把**低消补足**算进去(以前只显示小计),低消那一行仍逐项写出「低消 ¥500 / 结账将补收 ¥220」。
  • 「刚好」那一颗填的是**同一个应收数字**——以前它填小计,按下去会得到一个系统自己会拒绝的金额,收银员要在客人面前改口再收差额。
  • 低消门槛改用**开台当下锁在订单上的那个值**(locked_min_spend),桌台设定只当读不到时的退路:老板中途改过桌台低消时,同一张单不会再出现两个门槛。
  • 守门没有放宽:实收不足仍然红字提示且不送出任何请求。
全员

后台侧边栏的图标退回了系统 emoji——已修复并上线,同时补上让它不会再静默发生的两道闸

  • 问题:侧边栏 54 个自绘图标在 19:06 的一次发布后整批变回系统 emoji。原因是那次发布从一棵「共享工作目录」构建,而那里的侧边栏文件停留在图标接线之前的版本。
  • 🔴 最值得记的是:发布脚本的 20 项健康检查**全部通过**。它们检查的是「线上服务的是不是这次构建的包」,不检查「功能还在不在」。**是用户自己看到才发现的。**
  • 已修复并验证上线:线上的侧边栏分包里重新有 94 段图标路径,而且同一次发布没有撤掉其他人已经在线上的功能(逐条比对过)。
  • 同时量到同一个原因还影响 115 个网页文件共 838 行,其中 324 行是用户看得到的文字:会计页「本店尚未初始化」整段说明、一条安全提示、预收义务那段「客人手上有钱而账面一笔分录都没有」、分红的提现口径说明。小程序侧另有 1,549 行。
  • 两道新闸:①发布脚本发现「这次构建会撤掉用户看得到的文字」就中止,并列出是哪些文件、丢了多少行;②每轮收尾的检查补上「共享目录落后主干多少行」这个方向——它原本只看「新写的文件出不去」,看不到「别人写的会被你盖掉」。
  • ⚠️ 票号订正:这条原本写成 T-2531,而那个号早就有人领去做别的事了——**我用了号没有先登记**,撞上的正是我当天点名过别人的同一件事。改成 T-2539。两颗提交(ffeaf243 / e87615cf)的信息里仍写着旧号,查的时候以这张表为准。
  • 🔴 顺着同一个线索还量到一件更大的:后台「咨客台」整页(750 行)与「会计」的侧边栏入口,**只存在于那棵共享工作目录里,版本库里完全没有**。两页现在线上都是活的(之前从那棵目录发布过),但任何一次从主干的正常发布都会让咨客台整页消失、会计从侧边栏不见。
  • 另外量到 904 行用户看得到的文字只存在于工作目录(11 个文件整个不在版本库:老板第一屏、未结单、设置四态…)。
  • 两道闸补成对称的:一条挡「你会撤掉主干上已有的」,另一条挡「你会撤掉只活在工作目录里的」——后者才是大家默认走的那条路。判准相同,方向相反。
  • ✅ 保存问题已经归零:同事另开了一条快照分支收下 409 个文件里的 339 个,我补上最后 2 个(其中一个就是载着那两条菜单项的文件)。**现在共享目录里每一个文件的内容都在版本库里了**,再也不会「只存在于一台机器的磁盘上」。
客人

「我的订单」里还没结账的单,会说明金额还会变

  • 还在用餐中的单,金额下面会多一句「结账时另计服务费等,以结账金额为准」。
  • 以前这张卡只印一个金额,看起来像最终要付的钱,其实服务费和低消补足要到结账那一刻才算。
  • 已结账的单不显示这句话。
客人

购物车里也能看到商品图片

  • 客人在购物车确认自己点了什么时,每一行左边会显示商品照片。
  • 没有照片的行不显示灰色空框。改动之前存下的购物车没有这个字段,读回来就是不显示图,不会出错。
客人

顾客中心不再对正在吃饭的客人说「我的订单 还没有」

  • 以前客人桌上有一张没结的单,顾客中心的「我的订单」却写「还没有」,点进去又列着那张单。现在会写「本桌这一单还没结」。
  • 「我的会员」以前在「读不到资料」和「不是会员」两种情况下显示一模一样的字,现在分开:读不到显示栏目说明,不是会员就直说「还不是会员」。
客人

客人扫码点单的菜单会显示商品图片了

  • 客人扫桌贴进菜单,每道菜左边会显示一张照片。
  • 没有照片的品项不显示灰色空框——空框看起来像「图片加载失败」,而不是「这道菜没拍照」。
  • 图片延迟加载,进菜单不会一次性发几十个图片请求。
全员

后台侧边栏的图标不再是系统 emoji:54 个自绘线性图标已上线,每台电脑看到的终于一样

  • 以前侧边栏 34 个是彩色 emoji、21 个是单色符号,画它们的是你的操作系统而不是我们——所以同一个后台在 Mac、Windows、不同版本上长得都不一样,而且有 6 对不同功能被迫共用同一个字符(咨客台和等位是同一张椅子、财务和报销是同一个符号)。
  • 现在 55 项里 54 项换成自绘的线性图标,同一套线宽、同一个尺寸,跟着侧边栏的选中/未选中/悬停与深浅两套主题一起变色。
  • 剩下的 hostess(咨客台)、accounting(会计)两项的菜单碼还在别人的分支上没并进来,登记表里记着它们是待办,不是漏掉。
  • 看起来像的两颗是量出来的不是看出来的:每颗在真实渲染尺寸 20 像素下光栅化两两比对,54 颗共 1,431 对全部高于合格线。
  • 另外做了一件事:把这个量测从「我手动跑一次」变成仓库里的一支脚本,下一个画图标的人不用重新发明它。
全员

同时开多个页面时的提示改成简体,并且说清楚不照做会怎样

  • 以前这句提示是繁体字,而同一屏的登录表单是简体,一屏两套字。
  • 以前只说「建议只保留一个页面操作」,没说不照做会怎样。现在先讲后果:购物车和未送出的品项不会跨页面同步,在这一页点的单另一页看不到。
客人

客人菜单上卖完的东西,按钮会直接写「已售罄」

  • 以前卖完的品项,按钮还是写「加入」,按下去什么都不会发生、也不说一句话。
  • 现在按钮直接写「已售罄」——按之前就知道按了没用。
老板

线上收款流水页现在真的列得出每一笔微信/支付宝收款,时间也按门店当地时间显示

  • 以前不管挑哪一天,这页都显示「¥0.00 · 0 笔 · 全部对上了 · 这天还没有线上收款」。现在会把那天每一笔微信/支付宝收款列出来,并给出合计与未对账笔数。
  • 时间栏以前印的是 UTC,比门店当地早 8 小时——整晚的流水会显示成中午到下午。现在按当地时间显示。
  • 拿不到合计时改用列表自己算,不再退回 0——0 在这页的意思是「这天没有线上收款」,那是一句关于钱的话,不能当默认值。
老板

网页收银开台建单时带上服务员身份,结账才算得出服务员提成

  • 网页收银台开台/建单时,会带上「这台机器上现在是谁在操作」的身份,结账时服务员提成才算得出来。
  • 离线送单队列重放时带的是入队当下那个人,不是重放那一刻在线的人。
  • 客人扫码自己点的单不带服务员身份,不会记到店里员工头上。
老板

桌效页的各桌明细多了一行合计,终于看得到「营收贡献榜」那些百分比是拿什么当分母

  • 「桌效 / 翻台率」→「各桌明细」表格下方新增一行合计:总翻次、总营收贡献。
  • 下面那张「营收贡献榜」的百分比(例如「B1 占 38%」)一直是用全部桌的营收总额当分母,而那个总额**页面上从来没有以数字出现过** —— 走查实测是 ¥3,980,零处显示。现在它就在合计那一行。
  • 合计行的「平均时长」「平均人数」两格是**空的**,这是刻意的:把几个平均值加起来不是任何东西。
  • 窄屏(手机/平板竖屏,≤768px)下这张表会自动换成一张张卡片,不再横向滚动。
老板

演示店的「一句话」现在会自己说数据到哪天为止

  • 演示店最近没有当天生意时,页面会退回「上一个营业日」并照常给出一句话总结——以前它只说生意怎么样,不会说「数据其实停在几天前」,访客看不出来。
  • 现在这一句话的结尾会直接写出来:数据最新到哪一天、之后没有记录。访客现在就看得到这个改变。
  • ⚠️ 这一条只交付「把话说清楚」那一半;「资料不缺时不会出现这句」要等资料补到当前营业日(另一张票)才能验证。
老板

五处清单+补货建议:读不到不再说「没有」(逐档手改)

  • 储值套餐、成本记录、在途采购单、可用供应商、补货建议五处空态文案,改成真的读到才说「没有」;读不到时说「X没读到,不能当成『没有』」。
  • 这一轮改用符号锚(先找错误赋值、再往回找成功赋值)而不是位置正则,并逐档 analyze 验证:零个改坏(上一轮用位置正则坏了 5 档)。
  • 补货那句原本同时断言了「近 N 天没有任何商品有出库记录」这个具体原因,失败时是假原因,一并修掉。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
老板

首页主按钮字面说实话+两处缺码文案补去處

  • 首页主按钮「确认日结」点下去只是开日结页、还要再按一次确认——字面改成「去日结」;「开班」同理改成「去开班」。行为完全不动(没有把它改成真的确认,那会动到钱的流程)。
  • 收银规则/商品主档两处缺码文案,补上「请找有某权限的人(通常是老板/店长)」;这两屏没有自然的子集可给,所以只补去處、不硬造子集。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
老板

五个唯读清单:读不到不再说「没有」

  • 盘点任务、跨店调拨、库存台账、礼品卡列表、菜单建议五个清单,读失败时不再说「没有/暂无」,改成「X没读到,不能当成『没有』——刷新再看」。
  • 定位两件事实:楼面另有桌台图的订位提示与第二个订位入口;礼品卡另有卡号/扫码查卡路径——所以这两条维持 P1(有別处可核)。
  • 会员生日名单那条本轮未动(载入形状不同,硬套会让它永远说没读到),留待下一轮。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
老板

积分/收银规则等六个设定面:读不到就不给存

  • 积分规则、收银规则、欢乐时光、小票模板、桌况颜色、礼品采购规则六个整组写入面,改成真的读到才给储存钮(读不到就没有那颗钮,不是灰钮)。
  • 收银规则会整表覆盖税率,与网页端同一族;两端写法对齐:只把「未配置(404)」当未配置,其余失败照常冒出来并挡住入口。
  • 共用的判断改成从单一档案 export,画面只 import 一支就拿得到,不会有第四种写法。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
老板

后台设置:整组写入面读不到就不给改(含抓到一个假守卫)

  • 功能模组/营业时间/交班时间/打包费/桌台提醒/呼叫阈值六个整组写入面,改成真的读到才给改;读不到时模组开关不能动、欄位段没有储存钮。
  • 抓到一个假守卫:股东带台的「已载入」在 fetchPolicy 被 catch 吞掉后照样标成 true,等于守卫说可以存、实际上会把股东带台写成关闭+封顶清空;已改成真的读到才 true。
  • 盘点了其余整组写入面的失败路径实际画面,列在交卷与 .role-walk/contract/p0-22-三端清单.md 附录二。
  • 本條原本掛的模組 id 不存在於 registry,改為不掛(跨全站)。
全员

App 角色首頁:待辦在上、主按鈕=核心動作、沒面就不渲染

  • 經營模式第一屏改成「今天要做的事」:未結台/未交班/現金差異/待審批,每列寫出擋住了什麼(例:日結無法確認)。
  • 主按鈕=該角色的核心動作(店長確認日結、收銀交班盤點/開班);被擋住時灰掉並寫出原因,不是按了才提示。
  • 拿不到數量時顯示「看詳情」而不是 0;沒有對應畫面或沒有鑰匙的項目整列不渲染(不留灰塊、不放死鈕)。
  • 出納的付款鑰匙從「看採購」裡拆出來(新增 purchasingPay),避免看採購與執行付款共用同一個閘。
全员

按不动的按钮看起来就是按不动的

  • 主按钮被禁用时以前仍然是金色(只是稍微变淡),看起来还能按;现在改成中性灰、没有阴影,一眼看得出是按不动的。
  • 同一种灰也套到次要按钮(chip)那一族,不是只修一颗。
後端

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

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

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

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

更新日志同一天里,新的排在上面了

  • 同一天写进来的更新原本是「先写的在上」,于是刚做完的那几条沉到当天最后、甚至被挤到第 2 页。
  • 现在同一天里最新的排最上面,首页「最近更新」那几条也跟着对了。
全员

更新日志能搜了,也不再是长得看不完的一整页

  • 顶上多了搜索框:想知道某块改过什么,直接搜,搜的是全部更新不只是当前这一页。
  • 按时间分页,一天一段,段头写明那天出了几条——一眼看得出哪几天在密集地改。
  • 打开页面时会去对一次,这一页生成之后又多的几条会补在最上面并说明。
  • 左边「按模块查」现在每个模块有自己的一页,可以直接把连结发给人。
老板

收貨金額與採購單對齊——修正含稅/未稅基準錯置

  • 到貨時若把採購單的「未稅價」填進了「含稅價」欄位,系統會以採購單為準校正並留下說明。
  • 收貨單金額與應付金額都與採購單一致;真的重新議價(價差不是稅造成)不會被改動。
  • 校正結果回傳給畫面,收貨人當場看得見「已按採購單基準校正」。
老板

建立採購單不再失敗,並新增主流程煙霧測試

  • 採購單建立恢復正常:沒帶下單日時由後端補上門店營業日。
  • 新增一支煙霧測試:建單→確認→收貨→確認收貨→產生應付,五步真跑一次、跑完整批回滾不留資料。
全员

登录过之后,官网首页认得你

  • 登录过的人打开官网,首页会说「欢迎回来」,右上角从「登录 / 注册」变成你的名字。
  • 「免费开店」那个按钮会换成「回我的店」,一下就进得去。
  • 没登录的人看到的还是原来那样,一个字都没变。
全员

一块出问题,不会再整页白掉

  • 「我的账号」里某一块读不出来时,只有那一块会说「没能显示出来」,其他地方照常用。
全员

併入 Grok 的 WALK-155~179 網頁半 + T-2368 本單費用(77 檔)

  • 改了什麼:feat(web): 併入 Grok 的 WALK-155~179 網頁半 + T-2368 本單費用(77 檔)
  • 動到的檔:src/App.tsx、src/api/caps.ts、src/api/commissionLines.ts、src/api/expenseClaims.ts(共 12 檔)
  • 怎麼查:git show 1b317d98(rico)
後端

統一登入其實沒有合併身分:同時有兩種身分的人只看得到一半

  • 同時具有兩種身分(例如員工+供應商)的帳號,登入後只看得到其中一半——統一登入沒有真的合併。
  • 這一條把身分合併補上(`accounts/views.py`),那些人現在看得到自己的全部。
  • 使用者感覺得到(少一半功能),所以是產品更新。
後端

官網更新日誌搬進資料表:47 條種子+免登入讀取端點

  • 官網的更新日誌原本是靜態檔,改一條要動一次部署。
  • 這一條把它搬進資料表(遷移+種子 47 條)並加上免登入的讀取端點——官網那一頁從此跟著資料走。
  • 官網訪客直接看到這一頁,所以是產品更新。
後端

統一入口的回應帶回完整 `user_info`:官網那扇門才省得掉第二次登入

  • 官網登入後還要再登入一次,因為統一入口沒有把完整的 `user_info` 帶回來。
  • 這一條把 `user_info` 補齊(`accounts/views.py`),並連動前端部署腳本。
  • 使用者少登入一次,感覺得到。
全员

忘记密码可以自己找回了

  • 「我的账号」登录框下面多了「忘记密码」,用注册手机号收一条验证码就能设新的。
  • 设完直接替你进去,不用再登一次。
  • 一个手机号同时开了店又供着货的,两边的密码一起换掉——不会出现「明明改了却还是登不进」。
全员

51 个页面进去出不来,现在都出得来了

  • 员工端 80 个页面里有 51 个没有返回,进去只能整个重开小程序。这轮清零,并且加了检查挡它再长回来
全员

官网换了个样子

  • 纸白排印 + 深色产品剧场;26 秒回放管家的一天,取代原本那两张静态截图
小程序

小程序打开更快

  • 按客人、员工、供应商拆了分包:客人扫码点单只下载客人那份,不再整包等待
小程序

深色模式跟随系统

  • 奶茶店下午的客人看到浅色,酒吧凌晨的客人看到深色,跟着手机系统自动切换
老板

站内通知中心上线

  • 审批待办、库存见底、该联系的客户、该补的货……六类正事收进一个小铃铛,不用逐页去翻

这是全站的全部更新。 回按时间看全部。

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