Docmost 第一批实施计划 — D01 基线 + D02 交付文档模板
日期：2026-10-18
承接：outputs/开发计划/02-协作文档平台开发计划.txt，用户已批准并要求继续。

1. 基线与范围
官方 docmost/docmost v0.96.0，提交 9b3e5dd3dc21588fa20c02c5b8646d2f46ee73af。
独立克隆在 work/docmost-dev；不修改原维修、门户或其他任务正在开发的 ERP。
仅采用 AGPL 开源核心。排除 apps/client/src/ee、apps/server/src/ee、packages/ee、packages/base-formula；保留上游根 LICENSE、署名与来源。移除企业版入口与依赖，不实现授权绕过。

2. 可运行开源基线
使用 task-local Node 26.12.0 / pnpm 11.25.0，冻结修订后锁文件；独立 PostgreSQL、Redis，本机回环端口。
前端移除企业功能的路由、菜单、组件、请求、类型依赖；普通页面编辑、空间权限、评论、历史、分享保持核心语义。
后端不加载企业子模块；构建与产物检查确保不包含上述受限代码。

3. D02 独立交付模板
新增 delivery 模块，不读取或复用企业 template 模块实现。
目录：requirements 需求说明、api-contract 接口约定、test-record 测试记录、delivery-checklist 交付清单。
POST /api/delivery/templates/list：认证后返回固定目录（id/name/description），无用户数据。
POST /api/delivery/templates/create：templateId、spaceId、可选 parentPageId、projectName(1–100)、batchName(1–80)、requestId(UUID)。
返回 { page, replayed }，page 为核心页面且带 canEdit 权限；title由项目、批次、模板标题组成。
复用 PageService.create(format=json, trx) 生成普通可编辑页面、Ydoc、索引文本和关注关系。
服务端先校验当前工作区、目标空间写权限、父页存在/未删除/同空间及可编辑。
数据库幂等记录按工作区+用户+requestId 唯一；同请求同内容重试返回原页；同键不同内容409；已删除、已移动或失去权限不可借重试泄露内容。事务保证失败无半成品。
前端在空间侧栏增加“交付文档”入口；表单选择模板、项目、批次，创建成功跳转正常编辑页。请求失败保留相同requestId供安全重试，修改有效输入则生成新key。只读空间隐藏创建入口，API仍强制鉴权。
四种内容为本次原创占位示例，不含真实客户信息，不冒充完整项目交付或企业模板功能。

4. 验证与交付
单元测试覆盖四模板内容、字段约束、权限与幂等冲突；真实数据库/HTTP验证并发重试、回滚、越权、已删页面，确认仅产生一页。
构建/类型检查；两个会话协作编辑、刷新/重连、评论、历史、空间读写权限的真实运行验证。
独立复核后修复发现；记录原生能力与新增贡献、版本与许可证、实际命令结果、已知限制。
本批不实现 D03–D06 评审/不可变发布，不改门户展示，不公网发布。
