Your six — recipes, dishes, sub-recipes, ingredients, versions, approval status — are the objects below. Two layers first.你问的六项——食谱、菜品、子配方、原料、版本、审批状态——都在下面这些物件里。先讲两层。先两层,再十个物件。
Supplier, pack, unit, allergens printed on the packaging. The kitchen doesn't make these — it uses them.
Ingredient list + method + yield. Marked either sub-recipe (referenced by others) or dish (what leaves the pass). Same structure either way.
Why they must stay apart:为什么必须分开:把这两层分开不是为了整齐,是为了下面这件事:
Generic shape, not your recipe. This shows the structure a dish takes in the system, not how any of yours is built.这是通用结构,不是你们的配方。它说明一道菜在系统里的形状,不描述你们任何一道菜怎么做。
Shrimp paste is a bought ingredient, but the crustacean allergen it carries has to travel through base genep to reach the Pork Belly. There's a layer in between. Nobody reading the Pork Belly recipe would think of the shrimp paste — which is exactly the job the system has to do instead of a person.虾酱是买进来的原料,但它带的甲壳类过敏原,要穿过 base genep 才到得了 Pork Belly。中间隔了一层。没有人在看 Pork Belly 的食谱时会想到虾酱——而这正是系统该替人做的事。
足以支撑导入、审核、版本、变更传播和员工使用。刻意不做到能当成本或采购系统。Deliberately not enough to become a costing or purchasing system — see below.
| Object | Fields in phase 1 | Rule that matters |
|---|---|---|
| Ingredient | name · aliases (terasi / trassi / belacan) · category · base unit · unit conversions incl. density · supplier & pack · allergens · allergens_verified · trim/yield loss · status | Allergens are derived from here, never guessed from recipe text.过敏原从这里推导,绝不从食谱文字猜。未核实 → 所有用到它的食谱全部卡住。 Not verified → every recipe using it is blocked. |
| Recipe | code · name · role: dish | sub-recipe · section/station · created · archived | Permanent facts only.只放永远不变的东西。配料、做法、产出量都不在这里——否则改一次食谱就等于改掉它自己的全部历史。 No ingredients, no method, no yield here — otherwise editing a recipe would silently rewrite its own history and "approved is frozen" would be false. |
| Recipe version |
version no. · status · yield qty + unit · portions & portion size · method steps (ordered) · equipment · storage · shelf life · plating photo & notes (optional) · missing_fields state · change reason · created/reviewed/approved by · approved date · effective date · restaurants · source (photo / audio / transcript / extraction run) | The only place content lives. Approved = frozen;内容的唯一归属地。批准即冻结,改动产生新版本,旧版保留。产出量必填——被引用时的换算基准。 changes create a new version and the old one is kept. Yield is mandatory — it's the conversion basis whenever this recipe is referenced by another. |
| Recipe line |
position · type: ingredient | recipe · target · binding: follow current approved | pinned · pinned version · quantity + unit · prep note · prep loss % · optional | One row per line of a version.版本底下的每一行。它指向的是那个子配方,不是它的某一版——由引用规则决定跟不跟随。这一行就是十二道菜那题的全部答案。 It points at the sub-recipe, not at one of its versions — the binding field decides whether it follows. This row is the whole twelve-dishes answer. |
| Dependency | ancestor recipe · descendant recipe · depth | Maintained automatically. Answers "what uses this" instantly, blocks circular references, and finds every downstream item when something changes.系统自动维护。秒答「什么用到了它」、阻止循环引用、变更时找出全部下游。 |
| Impact record |
source version · affected version · materiality: allergen | yield | method | cosmetic · allergen delta · yield delta · resolution · resolved at | Generated automatically the moment a sub-recipe is approved.子配方一批准就自动生成一批。这是审核队列的输入。 This is what feeds the review queue. |
| Review task |
target version · type: new import | edit | upstream change · triggering version · assigned role & person · state · opened / closed · decision | Where approval routing actually lives.approval routing 真正落地的地方。没有它,审核队列只是一个筛选视图——没法指派,也没法追踪。 Without it the review queue is only a filtered view — nothing to assign, nothing to chase. |
| Restaurant | site · version in force · effective date · active · manager | The same recipe can go live on different dates at different sites.同一份食谱可以在不同门店于不同日期生效。 |
| ROOTS / SOP doc |
category · title · sites · version · approval status · linked recipes · publish target | An output document generated from approved content由已批准内容生成的输出文件——不是第二个要另外维护的资料库。 — not a second, separate library to maintain. |
| Audit log | entity · actor · timestamp · action · before · after | Append only.只增不改。「哪一版、谁批的、哪天」最后的凭据。 The final evidence for "which version, approved by whom, on what date". |
The one field to confirm: binding, on the recipe line. Everything in section 02 depends on it.要确认的就是那一个字段:配料行上的「引用规则」。第 02 节讲的一切都靠它。
Missing allergens, shelf life or yield holds a recipe at Needs info — it cannot enter review at all.缺过敏原、保质期或产出量,食谱就停在缺资讯,连审核都进不去。
One rule, three parts. This is what I'd recommend, and confirming it is the main thing I need.一条规则,三个部分。这是我的建议,确认它是我最需要的东西。
| Rule 规则 | What it means 意思是 |
|---|---|
| Approved documents are pinned | A published recipe holds the exact sub-recipe versions it was approved with. Nothing inside a document the kitchen is working from changes on its own.已批准的文件固定住批准时用的那些子配方版本。厨房正在用的文件,内容绝不会自己变。 |
| An update creates drafts, not changes | When a sub-recipe is approved, the system finds every affected dish and opens a new draft for each, showing what changed. You approve them in one pass instead of hunting for them.子配方一批准,系统找出每一道受影响的菜,各自生成新草稿并标出改动。你一次性批准,不用自己去找。 |
| Allergen changes need confirmation | If an allergen appears or disappears, the affected published documents are flagged immediately and cannot be replaced until you have reviewed each one.过敏原一旦增减,受影响的已发布文件立刻挂标记,在你逐份过目前不能被替换。 |
The system does the finding and the drafting, but nothing reaches the kitchen that a person hasn't approved. A dish can also be held back deliberately to run out an existing batch.找下游、生成草稿都由系统做,但没有任何东西会在没人批准的情况下到达厨房。某道菜也可以刻意不跟进,把现有那批用完。
Your question, under Option B. Both cases are clickable.你的问题,在方案 B 下的结果。两个情境都可以点。你的问题,用方案 B 走一遍。下面两个情境都可以点。
Illustration only. Menu names are real; which dishes use the sub-recipe, and both scenarios, are assumed.仅为演示。菜名是真的;哪几道用到该子配方、以及两个情境,都是假设。
| What changed 改了什么 | What the system does 系统怎么做 |
|---|---|
| An allergen | Published documents are flagged and held. Each affected dish is reviewed individually before anything is replaced.已发布文件挂标记并暂停替换。每一道受影响的菜逐份过目。 |
| Method or yield | A new draft per affected dish, change shown. Approve in one pass.每道受影响的菜生成新草稿,标出改动,一次性批准。 |
| Ingredient quantity | Same — drafts, with quantities recalculated where the yield moved.同样生成草稿;产出量有变的,用量自动重算。 |
| Wording only | Drafts too, flagged as cosmetic so they can be accepted in bulk.也生成草稿,但标为纯文字,可批量接受。 |
You asked for allergens, shelf life and a description that is 100% right. That is only reachable if the system will refuse rather than guess.你要求过敏原、保质期和操作描述 100% 正确。唯一做得到的方式,是让系统宁可拒绝,也不猜。你要求过敏原、保质期和操作描述 100% 正确。做到这一点的唯一方式,是让系统宁可拒绝,也不猜——手写纸上通常没写这两样,让模型去补,它会给出一个自信、合理、偶尔是错的答案。
Worked example, not one of your sheets. I wrote this prep sheet to show what the system does and does not fill in. The base genep ingredients follow the standard Balinese preparation.这是我编的示例,不是你们的纸。写它是为了演示系统会补什么、不补什么。base genep 的配料用的是巴厘岛通行做法。
So it cannot publish. One unverified ingredient blocks every recipe that uses it.所以它发布不了。一样未核实的原料,会卡住所有用到它的食谱。所以这份食谱发布不了。它停在草稿,直到三件事补齐:产出多少、能放几天、谁核实虾酱那笔资料。一样未核实的原料会卡住所有用到它的食谱——这让每一条过敏原信息都是有人负责的。
The approval routing from your week 3–6 list.你 week 3–6 列的 approval routing。这就是你 week 3–6 列的 approval routing。第一阶段不需要复杂的组织架构,但边界必须在建队列之前定好。
| Role 角色 | Can see 能看 | Can edit 能改 | Can approve 能批准 |
|---|---|---|---|
| Admin | All sites, all versions全部门店、全部版本 | People, sites, categories, settings人员、门店、分类、系统设置 | Manages publishing rights管理发布权限 |
| Head chef | Drafts, review queue, history, impact lists草稿、审核队列、历史、影响清单 | Correct or reject anything修正或退回任何内容 | Yes — including effective date and sites可以,含生效日期与门店 |
| Recipe editor | Their own scope and its history负责范围及其历史 | Create and edit drafts建立与修改草稿 | No |
| Site manager | Versions in force at their site, plus change notices本店现行版本与变更通知 | Not in phase 1第一阶段不开放 | Acknowledge receipt only仅确认已收到 |
| Kitchen | Current approved version for their site本店当前批准版 | No | No |
A proposal, not a position.这是建议,不是立场。
| What 什么 | Proposed 建议 |
|---|---|
| Your content | Your recipes, SOPs and source materials remain yours. They may be processed by authorised AI and cloud service providers solely to build, operate and support your system. They will not be reused for other clients, disclosed outside authorised service providers, or used to train any shared or general-purpose AI model. You may export your data at any time in standard formats, whether or not we continue working together.你们的食谱、SOP 与原始素材仍归你们所有。它们可能由经授权的 AI 与云端服务商处理,且仅用于建立、运行与维护你们的系统。不会挪用到其他客户、不会披露给授权服务商以外的任何一方、也不会用于训练任何共享或通用的 AI 模型。你们随时可以标准格式导出自己的资料,无论我们是否继续合作。 |
| The delivered version | Your restaurants may keep using the version delivered in this project, internally, long term.你们的餐厅可以长期在内部继续使用本次交付的版本。 |
| Not included | Source code, schema and the extraction pipeline are not part of the delivery.源码、schema 与抽取流程不在交付范围内。 |
| Future work | Anything built after this project — new functionality, later versions — is a separate commercial conversation.本项目之后新建的东西——新功能、后续版本——属于另一次商务讨论。 |