Docmost 第一批：开源基线与交付模板
完成日期：2026-10-18

本批完成 D01、D02。基于官方 v0.96.0，SHA 9b3e5dd3dc21588fa20c02c5b8646d2f46ee73af。
新增四种交付文档，创建后是普通页面，可共同编辑、评论、查看历史。D03–D06 的不可变评审与发布流程、D07 门户展示仍待后续实现。

本次贡献
1. 独立的 delivery 模块与四种原创中文内容结构：需求说明、接口约定、测试记录、交付清单。
2. 创建权限、同工作区/空间/父页检查；事务内保存页面和幂等记录；相同请求重试返回原页，不同内容复用键返回409。
3. 空间侧栏入口、表单校验、失败重试保留请求键、成功跳转与协作页面树同步。
4. 排除企业目录及 base-formula，移除相应前端入口、依赖和构建引用；保留 AGPL、来源及第三方声明。
5. D02 权限校验绕过旧缓存并使用当前事务；父页读取和页面排序复用事务，避免连接池耗尽。
6. 核心分享开关使用服务端状态控制，查询延迟及关闭失败时不虚报状态；恢复分享入口未启用任何公网分享。

上游能力
React 编辑器、Yjs/Hocuspocus 实时协作、空间和基础页面权限、评论、页面历史、搜索与附件仍归属 Docmost 及其依赖。本批没有实现新的协作引擎，没有复制企业模板模块，没有开启企业授权功能。

验证
- pnpm install --frozen-lockfile --offline：成功，锁文件不变。
- pnpm build：editor-ext/server/client 三个构建成功，包含核心边界检查。
- 前端 Vitest：8 个测试文件、85 项通过。
- 后端相关 Jest：7 个测试套件、71 项通过。
- 真实 HTTP/PostgreSQL/Redis/WebSocket：46 项执行、46 通过、0 失败；1 项首次初始化因此前已执行而跳过。
- 真实并发12个相同请求：1次创建、11次重放，仅一份页面和幂等记录。
- 真实失败注入：关注关系写入失败后无页面/请求残留，重试成功；临时故障触发器已删除。
- 两个浏览器会话共同编辑、刷新恢复、评论；独立只读会话；实际历史记录与服务重启后读取通过。
- 配置生成器首次创建0600文件，已有配置时退出且文件字节不变。

已知限制
4 个上游 should-be-defined 脚手架测试缺失依赖注入，此前在原始 SHA 和当时工作树均复现，不能宣称全库测试全绿。失败项：auth.controller、auth.service、token.service、page.service。比较使用相同已安装依赖，结论限于该环境；复现后 PageService 又增加了事务参数传播，最终相关套件的71项通过不能替代全量测试。
测试成员及部分权限夹具通过专用数据库建立；本批没有覆盖权限管理 UI 的全部操作。WebSocket脚本验证重连，服务重启后的恢复由另一次实际浏览器读取验证。
构建有上游配置弃用和 chunk 体积警告，不是零警告构建。
即时撤权的专项修复应用于新增 D02 创建/重放路径；原生页面接口继续沿用上游默认缓存策略。
自动历史有保存和任务延迟，不能作为提交瞬间的不可变评审快照；空审计服务不等于可持久审计日志。
已验证路径为 Node 服务 + 专用 PostgreSQL/Redis 容器。未构建完整 Docker 应用镜像，根 docker-compose.yml 是上游参考。
仅本机演示，尚未公网部署。公开上线前须实现对应源码下载入口，并完成 D03–D07。

运行步骤见 run-local.txt；版本与排除范围见 upstream.json；上游：https://github.com/docmost/docmost。
