二期业务讲解 研发 · 海南槟榔 V2-Beta
2026-09-21
00 / 本次讲解

一条货从进厂到回款,二期系统怎么接住

二期不是"再加几个销售页面",而是把工厂的采购收货、加工、成品库存、销售交付、应收核销、经营复盘接成一条可追溯的主线。这份材料只讲三件事:系统长什么样、主链路怎么走、哪些地方做错会返工。

60 分钟建议节奏:业务全景 10′ → 核心流程 21′ → 研发必须知道 25′ → 落地与答疑 4′
51 页业务小程序原型页面(2026-09-21 实测)
K01—K34经营看板指标 + 校验等式 E1—E12

口径声明(先看这一条)

事实源优先级:v2-beta/需求/00—08 + 附录-规则对照表(带决策号 D-xxx)> 本讲解 > 原型页面本身。原型是演示数据,不是接口契约——页面上的数字都是编的,只为了让每一档状态都看得见,代表不了表结构。每一节右下角都给出「出处」与可点开的「原型页面」。

01 / 业务背景

一期已经跑通的部分,二期不重建

先把"哪些已经存在"划清楚,二期只在其上做加法,避免重做交易闭环。

先划边界

交易闭环(一期已有)

企业入驻、农户供应商、采购订单、全额付款、农户反向开票、整单退款与红冲。

基础能力(一期已有)

账号与组织、企业商品档案、附件、消息、操作留痕、导入导出任务、角色与数据范围。

一期没有的(研发注意)

没有加工生产、没有成品库存、没有企业销售业务;另外没有企业充值功能、也没有独立资金账户模块——资金账户的余额与授权信息并入企业资料页展示。

例二期在采购侧只做一件事:在采购订单下面挂"收货与验收"记录,下单、审核、付款、开票这些流程一行不改。 采购列表 ↗ 采购订单详情 ↗
别做不要做「企业充值」「独立资金账户」——一期明文不做,二期同样不做,且与二期销售收款不发生任何联动。
02 / 二期定位

工厂自有采购,一路走到销售回款

二期聚焦一条主线:采购收货 → 加工 → 成品库存 → 销售交付 → 应收核销 → 经营复盘。

一条主线

① 货处理到哪一步

哪一车、哪一批、洗了几锅、烘了几炉。

② 每批产出多少

入库多少斤、作废多少斤、出干率多少。

③ 哪些库存能卖

可用/加工占用/销售占用/待处理,各多少斤。

④ 钱收回来没有

已验收多少、已核销多少、还欠多少、逾期几户。

采购订单→ 收果过磅→ 验收 → 来源批次 SRC-→ 加工单 JF-→ 产出批次 OUT-→ 库存→ 销售订单→ 出库 / 交付→ 应收→ 收款核销
03 / 范围纪律

P0 做什么、P1 放什么、明确不做什么

范围蔓延是二期最大的风险,这三行先对齐。

防蔓延
范围内容
P0 必做收果过磅与验收、来源批次与追溯、加工单与产出入库、鲜果/半成品库存、销售订单与交付、客户验收与货权转移、应收与人工核销、基础成本与经营看板、销售日报表、企业供应商采购。
P1 后续共同成本分摊与完整财务成本、销售正向开票与销售侧税务闭环、客户自助与跨企业协同、委托加工与代发货、设备接入与烘干曲线、AI 分拣与行情预测、复杂承运商与物流接口、动态工艺路线。
明确不做不重建一期采购结算/付款/反向开票/退款红冲;不做企业充值;不接银行/支付宝/ERP 自动对账;不做自动退款(只自动生成退款记录);不做客户自助账号;P0 不做离线暂存。
边界二期可以记录加工事实,但不等于设备控制、食品安全判定、税务资格判定或自动经营决策;真实设备接入在 P1。
04 / 端与分工

四个端不新增,但职责要分清

端名称沿用一期:后台管理端、企业端、业务小程序、自然人端。

一处一职
端二期职责原型现状
业务小程序现场与经营者主入口:收果过磅、加工记录、产出入库、库存、销售、交付验收、收款核销、售后。51 页,二期主场(本讲解所有原型链接都指这里)
企业端管理与财务分析:客户与账期、成本核算、应收台账、销售退款查阅、售后查阅、复杂批量与导出。E02—E08/E14/E15 尚未落原型(需求已定,页面还没做)
后台管理端平台级:商品品类、计量单位等基础数据;新增 1 个二级菜单「销售日报表」。已新增 admin/sales_daily_report.html
自然人端本期不涉及改动。保持一期原样
例同一件事在两端的待遇不同:现场动作只在业务小程序做(收果过磅、产出入库、加工登记、出库拣货、客户验收登记、库存移动登记),企业端只查阅、导出与更正留痕。 收果过磅(只在小程序)↗
05 / 对象与关系

先想对象,再想页面;批次永不合并

三个对象不能混:来源批次是库存、加工单不是库存、产出批次是新的库存。

追溯链的根
对象含义是不是库存余额
来源批次 SRC-验收后形成的鲜果实物数量,保留到农户/供应商的追溯关系。是
加工单 JF-一次加工任务:连接多个来源批次与多个产出批次,记录清洗/杀青与烘干两组记录。不是
产出批次 OUT-加工后的实物结果,按商品入库后才能销售。是

一个对象一个家

每类对象只有一个详情页入口,别处只能"带上下文直达",不得并列开第二个菜单或第二个入口。

货这条线

采购订单 → 收果过磅 → 来源批次 → 加工单 → 产出批次 → 库存;钱这条线:销售订单 → 出库 → 验收 → 应收 → 收款/核销;售后是独立对象。

例A 批(张三)500 斤 + B 批(李四)300 斤一起投料 → 合批 = 一张加工单同时投入 A、B,不是"A 批和 B 批变成一批";产出 120 斤干果必须能回答"这 120 斤对应谁的哪些批次"。 M04 来源批次 ↗ 加工单列表 ↗
别做不要让"一车/一锅/一炉"的展示方式合并来源或改写数量;产出是新批次,不是原批次换了个状态。
06 / 数量口径

同一批货,六个量分别存、互不覆盖

这是二期最容易做错、也最容易在对账时暴露的地方。

C5 硬约束
量产生节点用途
到货量收果过磅验收数量之和的上限
验收入库量验收分流形成来源批次的入库基准
出库量出库确认库存扣减基准(加工侧以产出为扣减时点)
签收量发运签收物流事实,不产生收入
验收量客户验收收入与应收基准
退货量售后冲减对应已交付验收数量,按处置结论决定是否回补库存
例计划 1000 斤 → 出库 1000 → 客户签收 980 → 验收 960:三个数都留着;少收 20 斤、验收少于实收 20 斤各记一条差异进「待处理」,由人处理,不覆盖、不静默改。 M15 交付单 ↗
07 / 设计约束

老板不看电脑,现场不能靠背菜单

易用性是 P0 约束,不是"以后优化"。

手机端优先

手机端是能力全集

深度分析(多期对比、多维交叉、复盘下钻、趋势)在手机端属 P0,按「摘要 → 主题 → 指标 → 明细」四层进入;口径与规则配置仍留电脑端(D-056)。

每页先回答"现在怎么样、下一步做什么"

详情页顶部常驻状态与下一步;列表行内只给这一行该做的那件事。

只采最小必要字段

能带出的默认值一律带出,能留空的留空;未测就显示「未测」,不用默认值补齐。

待办只推需要人决策的事

清洗中、烘干中这类过程状态不产生待办。

例首页按「经营看板·查看」权限整版切换两态:老板看经营概览,现场看待办;快捷位固定四个——库存/应收/逾期/待办。 M01 首页 ↗ M20 看板 ↗
08 / 主流程

一条货从进厂到回款,11 个节点

带底色的是二期新增对象;采购订单与收款是复用一期能力。

核对主链路
1采购订单一期已有;两类来源
2收果过磅过磅 + 收下/不要
3验收 → 来源批次接收量才进库存
4加工单选料+投料即开工
5清洗 / 杀青按锅,0..n 条
6烘干 / 干燥按炉,0..m 条
7产出入库按商品、可多次录
8库存四个量
9销售订单 → 出库六档状态
10签收并验收货权转移
11应收 → 收款核销一步提交
例端到端点一遍:首页 →「收果过磅」→ 提交验收 →「查看来源批次」→「发起加工」→ 加工单里录锅/炉/产出 →「查看库存」→「发起销售」→ 确认订单 → 详情「发货」→「去核销」→ 需要退换走售后。 从首页开始 ↗
09 / 重点一

收果过磅:保存不产生可用量

过磅记的是"称重事实",验收提交才形成来源批次。

M03 / M04
  • 两种现实都要支持:①档口/企业送车到厂——车到之前没有采购单;②工厂下乡收农户果——现场开采购单、面对面支付,到厂复磅记差额。
  • 一张过磅单可挂多张采购单,每张单指定本次到货的商品行与数量;一张采购单也能分多次到货。
  • 状态四档:待关联 → 待验收 → 已验收 → 已作废。
  • 称重与接收分开:毛重/皮重/净重是称重事实,接收量是唯一进库存的量,不能互相覆盖。
  • 验收只有两类:接收/不收(企业线未开单叫拒收、农户线已付款叫报废)。
例车到厂、填"收下 480 斤 / 不要 20 斤" → 提交后库存页可用量当场 +480;这车果没有采购单也能先过磅先入库,事后补开采购单再挂上来源批次。 M03 收果过磅 ↗ M11 库存 ↗
10 / 重点二

加工:两组记录互不配对,完工才扣鲜果

加工主线只有两段:清洗/杀青 → 烘干/干燥;数量只有两层:整单投入 + 各次产出。

M05 / M22

① 开单即开工

按「批次 × 商品」勾选、填各批投料量,提交即进入加工中;没有"先建空单再填投入量"这一步。

② 两组互不配对

清洗/杀青(按锅)与烘干(按炉)各自独立增录;没有洗杀记录也能录炉,只提醒并挂「待补记录」标记。

③ 出炉只记时间

重量与入库/作废在分拣装袋称完之后,到「产出」页签按整单录入:可分多次、同商品累加、整单一个 OUT- 号。

例一单投入 3000 斤鲜果,入库 2000 斤 + 作废 100 斤 → 出干率 66%,超出常规区间 15%–35% 只提示不硬拦;但「入库 + 作废」超过整单投入则直接拒绝提交。投入的鲜果全程挂"加工占用"、在库不减,点「完工」那一刻才一次性扣掉。 加工单 ↗ 加工列表 ↗
11 / 重点三

库存:一个加法等式,管住一货两卖

在库 = 可用 + 待处理 + 加工占用 + 销售占用。

M11 / M12
  • 预分配只锁不扣:销售订单确认时锁定数量,在库不变;实际出库才扣减。
  • 加工占用优先于销售占用:同一份数量同一时刻只能被一条占用持有;提交时服务端原子校验,冲突返回最新可用量。
  • 不接受静默抢占:系统不会自动取消已确认的销售承诺。
  • 库存操作是商品级动作:在某个商品下的批次列表底部,四个动作——库存盘点(盘盈/盘亏)、冻结/解冻、报废;用户不选批次,系统按先进先出落批。
  • 鲜果超时提醒:鲜果形态下有批次超过阈值时,页面上出现"N 批鲜果已超过 24 小时 · 共 X 斤 + 去开加工单",只提醒不拦截。
例一批鲜果 500 斤已卖出 300,再想投 400 斤加工 → 提交时被拦并返回最新可用量;页面上没有"释放占用"按钮,只能去改订单或改投料批次。 M11 库存 ↗ M12 库存详情 ↗
12 / 重点四

销售订单:六档状态,统计只认"已完成"

状态是跨端公共契约,页面可以按端展示,服务端推进规则必须统一。

M13 / M14
状态什么时候进这一档的意思
草稿点「保存草稿」不占库存、不计统计,可随时改
已确认点「确认订单」库存已占好(只锁不扣),还没出库
履行中第一次出库开始发货,还有一部分没出完
部分交付客户签收了一部分一部分已交到客户手上
全部交付计划量全部出库并签收货都发出去了,等客户验收
已完成客户把签收的量验完/未交付部分被终止统计只认这一个完成态;应收按已验收量算
例列表上四个页签(草稿/待发货/待交付/待收款)不是字段,是从数量和应收算出来的;「不用再动」只出现在"全部"里,界面上不显示这个词。一单 1000 斤已出 300 斤后点「终止剩余部分」填 700 斤 → 占用放回,这一单进「已完成」,已出的 300 斤与已生成应收一分不动。 M13 列表 ↗ 销售订单详情 ↗
别做不要造"终止待确认""已终止"状态;不要给已出过货的单做编辑入口。
13 / 重点五

交付:四段事实,界面上两段动作

合并的是操作步骤,不是数据——出库量、签收量、验收量仍然分开存。

M15
四段事实界面呈现关键规则
出库第 1 段(可操作,可多次)实际出库才扣库存;分几次发货就登记几次,每次生成一张交付单
发运签收第 2 段(一次提交)登记实收量(默认=出库量),少收自动记一条差异
客户验收登记验收量 + 质量复检结果 + 外部凭证;有凭证才生成应收
货权转移结果标记,不是操作客户验收完成后自动标记,同时生成应收
例客户当场验货:一次提交里填实收 980、验收 960 → 页顶出现「有 2 处待处理差异,共 40 斤 · 点这里去处理 ›」;每处差异是红底「待处理」+ 橙色实心按钮,结论只能选五个:补交 / 折让 / 退货 / 拒收 / 损耗认定。 M15 交付单 ↗
14 / 重点六

应收与核销:订单金额 ≠ 收入

收入与应收只由"已验收 + 货权转移 + 有外部凭证"的量产生。

M18

应收成立三条件

客户验收完成 + 货权转移 + 至少一项外部凭证(纸质签收单/现场照片/客户微信确认截图任选其一)。缺凭证只记「待确认交付」,不计应收、不计收入。

收款核销一步提交

页头「+ 收款登记」与行内「去核销」打开同一张表;一次提交落一条收款记录 + 若干条核销记录,数据分开存、可分别作废,没有"待核对"中间态。

必填只有四项

付款方(=客户,从客户里选、不可手填)/收款金额/收款时间/关联订单;凭证是上传控件,非必填。

调整 ≠ 退款

「调整金额」=客户还没付钱、这笔确定收不回来时人工填;「退款」=售后触发、系统自动生成记录。两者都不改写原应收金额。

例应收 1200 → 收 1000(部分核销,剩 200)→ 再收 300 → 只核 200,多出的 100 进未分配款/预收,不会变成 −100。账期只在客户上填,没填就是"未设置账期",不填 0、不套默认值、不算逾期。 M18 应收与核销 ↗ 应收明细 ↗
15 / 重点七

售后:只有两种类型

仅退款(货不回)/退货退款(货回厂);账务按"客户付没付过钱"自动分叉。

M19
类型货库存影响账务(自动)人工步骤
仅退款不回无未付款 → 冲减应收;已付款 → 自动生成退款记录、状态即已退0 步
退货退款回厂收货时选回补库存/报废(二选一)先按退货数量冲减应收,其中已收走的部分自动生成退款记录1 步
例第三条出路是驳回:客户提了售后、我方不认 → 只有还没确认的能驳回,原因必填、留痕,驳回是终态、不动库存不动账。"自动退款"=自动生成那条退款记录,不是自动打款。 M19 售后 ↗ M19A 售后列表 ↗
别做"争议""争议冻结""赔付"这三个说法都已取消——"客户收货不退货、补一笔钱"就是仅退款;当场不认的量在验收时直接记「拒收(少退)」,不进应收。
16 / 重点八

经营看板:五个主题、四层进入、算不出来就说原因

看板回答老板四个问题:赚不赚钱、钱收回来没有、货有没有被占住、哪里要出事。

M20

五个主题

赚 / 钱 / 货 / 效率 / 风险。

四层 + 深度分析

摘要 → 主题 → 指标 → 明细下钻;多期对比与趋势在手机端也是 P0。

成本方向不可逆

成本是采集与分摊出来的,毛利 = 收入 − 成本;禁止用"收入 − 毛利"反推成本。

算不出来就说原因

数据缺失、口径不一致、分母不足时显示「暂不能计算 + 原因」,不填 0、不填 100%。

例成本四层:采购批次 → 加工单 → 产出批次 → 库存成本层;已出库但客户未验收的成本单列,不并入已确认销售成本。界面上不出现 K 编号、也不出现"口径 v4",那是文档与框外说明的东西。 M20 经营看板 ↗
17 / 研发必须知道 · 一

销售订单与开单:超出必须拦,不许静默改小

页面:M13 销售订单列表/详情 + M14 开销售单。这条是现场真报过的 bug。

D-198
  • 列表顶部只有四个筛选(草稿/待发货/待交付/待收款);草稿行的按钮就叫「编辑」,点行进编辑页;出过一件货的单没有这个按钮,行内只剩「继续出库」。
  • 开单页底部三个按钮层级定死:绿色实心「确认订单」> 白底描边「保存草稿」> 淡红无边框「取消订单」。
  • 草稿随便改;已确认但一件没出库的也能改,改完重算占用,占不满整单拒绝、原样占回来。
例这一车最多还能出 40 斤,用户写了 60 斤 → 必须拒绝提交,并原话提示「"槟榔干果·统货"最多还能出 40 斤,你写了 60 斤」(把上限和用户写的数都报出来)。
错在哪旧实现用 Math.min(用户写的, 还能办的量):用户写 60、系统按 40 记账,还回一句"已出库"——屏幕上显示一个数、账上是另一个数。同一条规矩也管"终止剩余部分"和"确认订单占用"。
18 / 研发必须知道 · 二

交付单:一条红条 + 五个结论(附一条最容易做错的澄清)

页面:M15 交付单详情。

D-200
  • 页顶一条红字提示条:「有 N 处待处理差异,共 X 斤 · 点这里去处理 ›」。
  • 每处差异是红底「待处理」+ 橙色实心按钮,不能做成白底橙字那种"看着像说明文字"的样子(上一版就是因为太像说明而没人看见)。
  • 差异结论只有五个(代码里就这一个数组):补交 / 折让 / 退货 / 拒收 / 损耗认定;结论在本页关闭,不新建"差异单"对象、不新建页面。
重点澄清出库、签收验收、处理差异这三件事,实际是在 M13 销售订单详情的「发货」那一层做的;M15 这一页只用来看明细和导凭证。不提前说清,研发会照着 M15 去做一整套出库表单。 M13 详情(发货层)↗ M15 交付单 ↗
19 / 研发必须知道 · 三

应收与核销:一张表、四格、两个不同的"钱"

页面:M18 应收与核销 + 应收明细。

D-192 / D-196
  • 页头「+ 收款登记」和行内「去核销」打开的是同一张表;一次提交落一条收款记录 + 若干条核销记录,没有"待核对"中间态。
  • 必填四项:付款方(选客户,不能手填)/收款金额/收款时间/关联订单;凭证是上传控件,不是文本框。
  • 四格一行:应收 / 已核销 / 调整 / 未收,颜色与下面占比条一一对应;未收为 0 时不点亮红底。
例「调整金额」抽屉:默认填满未核销、可以改小、原因必填(客户扣款(质量)/短款凑整/双方约定折让/收不回来/其他);原应收金额仍显示 1200,不改写、不做新版本,可作废并恢复余额。
别做原型真犯过一次:把客户填进"收款方"栏。那一栏是"付款方=客户",收款方=本企业。
20 / 研发必须知道 · 四

售后:两类型、三条出路、一句话红线

页面:M19 售后 + M19A 售后列表。

D-196 / D-219
  • 类型下拉只有两项:退货退款 / 仅退款;页内三条出路:确认、改数字、驳回(就地展开"驳回原因(必填)")。
  • 仅退款那一单,页面上根本不出现"已到厂""已处置"这两个量;退货退款才有第二段,处置只有回补库存 / 报废。
  • 列表状态词只有一套:待确认/待收货/待处置/已结束(驳回是终态,归「已结束」档);列表、售后单顶部、销售单的「售后」页签都读同一处口径。
红线界面与代码里都不要出现"争议""赔付";企业端售后页只查阅、不提供导出。
21 / 研发必须知道 · 五

加工单:三页签、两组记录、一个完工按钮

页面:加工单列表 + 加工单(M05 与 M22 已合并成一页)。

一种填法
  • 列表页只有三个页签:加工中 / 干果待入库 / 已完成;行内"下一步"按状态给「继续记录 / 去录产出 / 看单」。
  • 单页头部三个页签:清洗/杀青(N)|烘干(N)|产出(X 斤),右侧一个小按钮「补录」。
  • 「完工」按钮不满足条件时置灰、文字后面带括号写原因(如"全部出炉后才可完工"),条件满足才变成可点。
例有人只录了炉 → 出提示条"这单还没有清洗/杀青记录,稍后记得补一下"+单号旁挂「待补记录」标记,但不拦提交;加工记录只有一种填法,没有档位可选。 加工列表 ↗ 加工单 ↗
别做不要把「待补记录」当状态名顶掉「加工中」;不要给已入库的产出加删除按钮。
22 / 研发必须知道 · 六

库存:四个量、一条提醒、四个动作

页面:M11 库存 + M12 库存详情。

商品级动作
  • 三层:形态(鲜果/干果)→ 商品 → 批次;形态汇总一行四个量,在库=四者之和。
  • 超时鲜果提醒条只在鲜果形态且有超时批次时出现,没有就不显示。
  • 「库存操作」在商品下的批次列表底部:库存盘点(盘盈/盘亏)、冻结/解冻、报废;用户不选批次,系统按先进先出落批;盘亏、报废要审批,冻结解冻不审批。
别做页面上没有「释放占用」「占用冲突」「库存移动」这些动作(2026-09-21 已取消);M12 只负责看,动作都在 M11 那一层。
23 / 研发必须知道 · 七

过磅与批次:称重 ≠ 接收,合批不等于并批

页面:M03 收果过磅 + M04 来源批次详情。

追溯
  • 一张过磅单可挂多张采购单,逐行填"本次到货量 + 收下/不要";保存过磅不产生可用量,提交验收才生成来源批次。
  • 毛重/皮重/净重与接收量分开保存,缺项显示「未测」;校验超出时提示"接收+拒收合计超过本次到货量,先改数量"。
  • 编号必须可区分:SRC- 来源批次、JF- 加工单、OUT- 产出批次。
例A 批(张三)500 斤 + B 批(李四)300 斤混投,产出 120 斤干果 → 追溯必须能回答"这 120 斤对应谁的哪些批次"。 M03 收果过磅 ↗ M04 来源批次 ↗
24 / 研发必须知道 · 八

权限、状态、数据范围:三类问题三种处理

混在一起做,要么泄密、要么现场有按钮点不动还不知道为什么。

三层模型
问题类型处理方式例子
权限(用户不该用)隐藏入口、不提示"无权限"销售经办看不到成本页;成本、毛利、采购价、客户价、账期、信用额度、银行账号按敏感字段单独授权
状态(有权限但当下不能用)灰显 + 一句原因产出还没入库 → 按钮灰显并写"还没入库,暂不能销售"
数据范围(能进功能但只看部分数据)列表直接过滤、不提示存在配"本人数据"的人只看得到自己建的客户与销售单
  • 底部 tab 与一级菜单固定显示、不隐藏;"按权限隐藏"只作用于页内入口、按钮与页签。
  • 鉴权必须在服务端查询层执行,前端隐藏只是体验层。
  • 超管是权限全集基线:二期新增权限自动纳入其范围——一期若把超管权限写成固定枚举或位图,必须改成能与新增权限合并的结构,否则企业主登录后看不到经营看板、而且不报错。
25 / 研发必须知道 · 九

幂等、并发,以及"改字段要广播"

这一条不是理论——本轮真的因为改字段、跨模块不报错地错了一次。

工程纪律
  • 保存类动作必须幂等:现场弱网连点两次「提交出炉」→ 只能生成一炉;连点两次收款提交 → 只能落一条收款记录 + 对应核销。
  • 数量类操作服务端原子校验:占用、出库、投料冲突时返回最新可用量,不允许负库存。
  • P0 不做离线暂存:断网就是保存失败,别做本地队列。
真实事故费用凭证字段从 voucher(一段文字)改成 vouchers(附件数组),看板还在读旧字段 → "已上传凭证的费用占比"显示 0%(应为 12.6%)、"缺凭证记暂估"也判错,而且全程不报错。
纪律改字段/状态词/枚举的同一轮里必须:①写一行"接口变更"说明谁要跟着改;②跑一遍对方模块的自检脚本;③兼容期两边都认(新字段优先、旧字段兜底)。
26 / 研发必须知道 · 十

术语红线:这些词一个都不许活下来

词还在,说明旧对象或旧状态还藏在代码里。

禁用词表
禁用/旧词现行说法
等级、定级、待定级、等级复检结果按商品入库与作废量;质量复检结果(合格与否 + 异常说明)
争议、争议冻结、争议关闭四结论、赔付仅退款/退货退款;当场不认的量叫拒收(少退)
退款登记(手工)售后确认后自动生成退款记录,状态即已退
应收调整(人工流程)应收行内的「调整金额」
已了结界面上不出现(内部标记叫"不用再动",也不显示)
算不出逾期/暂不能判断逾期未设置账期
到货登记(界面旧名)收果过磅("到货登记"只作文档与对象名)
收果入库不要用;"入库"只作为结果或状态出现
怎么验node v2-beta/tools/check-doc-consistency.js 必须跑出"没有发现残留口径";页面上的旧名由 structure-check.js 一并守卫。
27 / 研发必须知道 · 十一

原型能点 ≠ 生产能用

这是演示的边界,别当需求做,也别当接口契约用。

演示边界

原型里还没有的

产出录入的更正入口、M11 成本层按权限展开、库存动作表单的凭证——需求写了、原型没做,按需求排期。

演示数据

订单、客户、批次、金额都是编的;演示数据存在浏览器本地,乱了在入口页点「重置演示数据」。

看板的示意部分

趋势图与交叉表仍是示意(样本不足 6 个月);K29 净垫资在演示里是按采购单日期+付款状态估算的。

电脑端

企业端二期页(E02—E08/E14/E15)还没落原型——需求已定,页面还没有,别拿一期页面当二期实现依据。

提醒原型上的框外说明、状态切换按钮、"复核稿"文字,都是原型复核对齐用的工具,不许做进产品页面。
28 / 落地

页面与端归属:一个对象一个家

业务小程序 5 个底部 tab;企业端与后台只新增必要入口;自然人端本期不动。

导航骨架
tab承载对象与"家"
首页M01 首页(待办 + 经营概览两态)、M20 经营看板、待办全量页
采购采购订单列表(农户/企业供应商两类来源)+ 一期采购订单详情(含收货与验收)
销售M13 销售订单列表与详情、M14 开销售单、M15 交付单、M19/M19A 售后
加工加工单列表、M05 加工单(含 M22 加工记录作业页)
我的一期已有页面 + M25 我的客户(页内入口,不新增 tab)
无 tabM03 收果过磅、M04 来源批次、M11 库存、M12 库存详情、M18 应收与核销(+明细)、费用录入/列表/详情
例"批次"不再是 tab、也没有独立入口——它是开发与文档的分组词;看货统一由库存页承载,加工由底部「加工」tab 承载。企业端二期新增的是「销售管理」「加工与库存」两个一级菜单 + 财务下的应收/退款/成本,售后作为销售订单列表的页签。
别做不要为安置二期功能去重组一期的一级菜单;也不要给端加"可登录端"限制——权限点按功能定义、不分端。
29 / 落地

研发开工速查:以加工单为范式

一个模块要写到"研发拿到能直接开工、不用来问",就照这张表的结构写。

02 §10.11
页签页内动作前置/校验结果
清洗/杀青「+ 加一锅」「出锅」开煮时间必填(默认当前、精确到秒);出锅不得早于开煮记录卡:这条在煮 → 已出锅
烘干「+ 加一个炉」「出炉」装炉时间必填;出炉只记时间、不填重量所有炉都出炉 → 单状态转「干果待入库」
产出「+ 录入一次」至少一炉已出炉;入库+作废 ≤ 整单投入;称重时间必填入库即刻进可用库存、可被订单占用;作废只留痕
补录(按钮)抽屉「提交这几条」洗杀行开煮时间必填、炉行装炉时间必填一次提交多条;每次打开都是空表
产出页底部「完工」锅都出锅 + 炉都出炉 + 已录产出状态转已完成;此刻一次性扣掉整单投入的鲜果
怎么验 node v2-beta/demo/structure-check.js(结构)/node v2-beta/demo/selfcheck.js(数据层)/node v2-beta/demo/page-selfcheck.js 与 _selfcheck/check-*.cjs(真浏览器端到端)/node v2-beta/tools/check-doc-consistency.js(口径)。改完必跑,不通过不许说"改完了"。 原型:加工单 ↗
30 / 落地

还没收口的清单(截至 2026-09-21)

先说清楚,免得研发按原型做出错的东西。

8 条
#事项状态
1企业端二期页(E02—E08/E14/E15)落原型未做(需求已定)
2M11 成本层按权限展开需求有、原型没有
3库存动作表单的凭证需求有、原型没有
4售后「去给结论」跳 M19 带单号未做(缺 ?rt=)
5M11 默认排序改成"鲜果按等待时长倒序"与需求不一致
6看板趋势图/交叉表(现为示意)待真实样本
7口径自检词表补「待检/在制/分组」待补
85 个一期历史稿零入链待定去留
怎么提问口径不清 → 先查 需求/附录-规则对照表(规则 → 文档 → 原型 → 验收点,一行一条),再查 需求分析/二期决策台账;仍不清的,带"哪个端、哪个页面/入口、哪个对象"来问。
31 / 收尾

一页速记:十二条

贴工位上用;每条都能在上面某一节找到展开。

带走这 12 条

货与量

  • 批次永不合并;加工单不是库存余额
  • 六个量分别存、差异单列、互不覆盖
  • 可用 = 在库 − 待处理 − 加工占用 − 销售占用,不允许负库存

钱

  • 订单金额 ≠ 收入;收入只由"已验收 + 有凭证"的量产生
  • 核销累计 + 调整 ≤ 有效应收;超出进未分配款
  • 账期只在客户上填,没填就是「未设置账期」

状态

  • 状态由事实驱动,不由按钮驱动:签收≠验收、出库≠到账、完工≠可销售
  • 更正必须留原值/新值/原因/操作人/时间,不静默重算
  • "终止""驳回"是结束方式与终态,不是新状态

实现

  • 超出必须拦住并报出上限,禁止静默改小
  • 保存幂等、数量原子校验;P0 不做离线暂存
  • 改字段/状态词=跨模块影响,必须广播并跑对方自检
文档索引 00 大纲(结构与菜单)· 01 公共契约(术语/对象/数量与状态通则/权限)· 02 业务小程序 · 03 企业端 · 04 后台管理端 · 05 自然人端 · 06 视觉基线 · 07 演示数据 · 08 看板口径 · 附录 规则对照表。遇到冲突,以带决策号的现行正文为准。