Skip to content

[Decision] admins author Markdown docs in the console and put them on the app menu — runtime doc/book authoring surface and a doc navigation item (maintainer's stated need) #19482

Description

@os-project-manager

Path: 不写代码在运行中改应用 | 缺项——platform-core.docs-portal-render covers rendering only; no item asserts runtime doc authoring or a doc on the app menu | P2

Filed by the director seat, summon #25 (session_012GcsUbuqFGBibkEDMRC1eE), from the maintainer's words in chat (2026-09-21), verbatim: 「doc 包文档 我觉得是有需求的,可能管理员需要在界面上写一些markdown的文档。甚至加到菜单。」 Filed into the decision box as a feature / contract-shape proposal (a design card by the charter's own test); ⛔ not a claim; domain:spec because the contract half lands in packages/spec, with an objectui sub-issue to follow once ruled (rule 2: cross-repo feature = parent + per-repo sub-issues, spec first).

维护者速读

事情:您说管理员可能要在界面上写 Markdown 文档,甚至加到菜单。本席量了今天有什么:

  • 能看:控制台有文档门户(/docs/:book/:name,Markdown 渲染 + 书的侧栏,ADR-0046);文档和书都是元数据,包里带的 src/docs/*.md 构建时收集进来。
  • 能存doc / book 都声明 allowRuntimeCreate: true,通用元数据保存门 PUT /meta/doc/:name 今天就能存一条运行时写的文档(这正是刚才更正裁决保住的那扇门)。
  • 不能写:Studio / 元数据管理里没有文档编辑器——没有 docbook 的表单,管理员在界面上写不了。
  • 不能上菜单:应用导航项的种类里没有「文档」这一种(有 object / group / page / component / action 等);想把一篇文档放进应用菜单,今天只能拿一个 page 项硬指向文档路由,是绕法不是声明。

选项

  • A 两半都做,spec 先行:① packages/spec 给应用导航加一种 doc 导航项(指向一篇文档名,权限随文档的 audience 走);② objectui 加「文档」编辑器(Markdown 编辑 + 预览,创建/编辑 doc,把它放进某本 book),落在 Studio 的元数据管理里。先做 ①(一张 spec 卡),再做 ②(objectui 子卡)。
  • B 只做编辑器(②),菜单继续用 page 项指向 /docs/... 路由——不改 spec。
  • C 只做导航项(①),编辑仍走 API / AI 作者,管理员暂不在界面上写。
  • D 不做,维持现状(看得到、API 能存、界面写不了、菜单上不去)。

荐 A。请回一个字母:A / B / C / D

os-decision-facets

  • ① 项目长远合理性:文档已经是元数据(ADR-0046)、AI 已经是主要作者(ADR-0033);给它一个导航项种类和一个界面编辑器,是把已有类型接完整,不是新概念。B 用 page 硬指路由是把「文档在菜单上」写成一个绕法,将来每个消费方各自猜;A 的 ① 让菜单声明「这是一篇文档」,权限与 audience 门自然跟上。⇒ A。
  • ② 实际业务拉动:维护者当面点名的需求;今天缺的是编辑器与菜单项两件,看与存都在。⇒ 拉动真实,但两半都可以分期。
  • ③ 防 AI 犯错doc 导航项是闭合种类,写错的文档名在保存时响亮拒绝;page 绕法里文档名藏在路由字符串里,写错静默 404。⇒ A > B。
  • ④ 创业阶段不扩散:A 新增一个导航项种类(永久义务,小)和一个编辑器;D 零义务。⛔ 不因此翻字母:需求是维护者点名的产品路(「不写代码在运行中改应用」),不是工具卡。

Prior rulings read: doc,book,navigation,menu,markdown,docs-portal → ADR-0046 D§1/§6 (docs as metadata; nav spine runtime-editable), ADR-0033 (AI as primary author), ADR-0088 §3; thread: none

推荐:A。自检:「只看①选 A;②③④ 是否翻转:否——② 支持分期(① 先),④ 反向但它管的是新键不是能力」。回退 B。置信缺口:⛔ 未量 objectui 侧 book 的运行时覆盖(ADR-0046 §6.4)是否已实现;⛔ 未量 PUT /meta/doccontent 的大小/清洗限制;⛔ 未量文档 audience 门(platform-core.docs-audience-gate)如何应用到导航项。

Execution, if A

  1. Spec card (this repo, domain:spec): DocNavItemSchema in packages/spec/src/ui/app.zod.ts (type: 'doc', doc: <doc name>, optional book), strict like its siblings, .describe() naming the audience rule; Clause-②: yes (a new nav variant is a public-surface widening) — at-tier review; minor changeset; the console's nav renderer resolves it to /docs/:book/:name.
  2. objectui sub-issue (domain:ui, Blocked-by: the spec card until the pin covers it): a Markdown editor for doc items in Studio's metadata admin (create / edit / preview, assign to a book), reusing @object-ui/plugin-markdown; the nav renderer for the new variant.
  3. Checklist item to author (platform-checklist platform-core or studio-authoring): an admin creates a doc in the UI, puts it on the app menu, and a member without the doc's audience does not see the entry.

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions