Docmost 第三批实施计划 — 门户案例与应用内对应源码入口
2026-10-18；承接已批准D07，保留32b1482及门户a5aa7f5。
执行：subagent-driven-development；延续既定本地开发与验收路径，不公网部署。
Goal：访问者能理解“批准哪一版，就发布哪一版”，并从当前应用或门户免费取得对应修改源码。
Architecture：源码交付以构建清单和可校验归档为中心；Docmost提供无需登录的说明页及受控下载；门户保存同一份已验证源码与真实案例材料。
Tech Stack：既有React/Mantine、NestJS/Fastify、Node/jszip、React/Vite门户，不新增外部服务。

已定契约
应用说明页面 /open-source，不经过登录布局。登录页和工作区菜单提供“源码与开源说明”。
GET /source/manifest.json 成功200，失败503 {error:"SOURCE_RELEASE_UNAVAILABLE"}。
GET /source/<buildId>.zip 只返回校验过的精确归档；未知 /source/* 返回404，不进入SPA fallback。
manifest：schemaVersion=1、buildId、sourceCommit、upstream{repository,tag,sha}、license="AGPL-3.0"、builtAt、archive{fileName,url,sha256,bytes}。
许可标签用于展示；保留原LICENSE全文，不增加only/or-later授权判断。
源码只来自干净Git提交，或按source-export.json验证的无.git导出目录；不将上批源码标为当前版本。
构建receipt关联源码树、ZIP摘要及实际前后端dist摘要；启动确认后才开放有效下载。
归档带源文件、lockfile、许可证、版本映射和运行构建说明，排除.env、用户数据、数据库备份、node_modules、EE目录和构建产物。
运行时注入的index.html与原始index-template需按原始模板验证；不能因正常启动注入误判，也不能跳过客户端资源对应性。
门户manifest路径 /projects/docmost/source/manifest.json；复制同一个ZIP，manifest.archive.url改成该同源目录，其余版本和摘要不变。

任务1：保全与基线
记录两个独立开发副本HEAD、Git状态、逐文件摘要；保存现有页面及评审/发布记录的逐行摘要。
复用现有隔离目录，不重置原目录。重跑前两批客户端和相关后端测试。

任务2：可追溯源码交付（release代理）
修改package.json/.gitignore、scripts/portfolio构建工具、StaticModule及必要Vite代理；新增针对归档和路由的测试。
先验证测试会失败，再实现干净Git导出、无.git重建、路径及符号链接约束、构建对应性、缺失/损坏/错配拒绝与匿名下载。
使用既有jszip；归档生成必须避免自引用commit/摘要。产物缓存只能用于已验证版本，不误标新构建。
验证命令在实现后写入run-local.txt；正式构建由主代理提交完整源代码后执行。

任务3：应用入口（主代理）
新增features/open-source下的说明页、manifest读取校验及测试；App.tsx注册公开路由；AuthLayout和TopMenu接入。
先测加载中没有下载、有效manifest展示版本/摘要、无效或外站URL不形成下载、503失败可重试；再实现页面。
页面写明改造范围、上游基础能力、排除企业功能和当前版本源码包含内容；错误时禁用下载，不以旧值冒充有效资源。

任务4：门户案例（portal代理）
新增DocmostPage与事实数据；替换占位路由；复用案例组件，保留维修/ERP及旧路由。
展示问题、操作流程、A/B版本关系、个人改造与上游能力对照、真实截图、验证范围与开源说明。
只在开发环境且目标为合法loopback时提供本机体验；公共交互标为待部署；源码下载使用门户同源归档。
更新项目状态、链接、截图和下载边界测试；通过npm run check，保留Sites构建产物及worker契约。

任务5：独立验收与审查（verify代理及主代理）
验证匿名HTTP下载，逐文件对比Git树、LICENSE/源码/版本一致，未知zip不是HTML，错配/丢失行为确定。
规格审查后做代码质量审查，修复确凿问题后再运行受影响测试。
主代理用真实浏览器验证门户首页→案例→本机演示→应用源码入口，匿名入口/下载，桌面与390/768/1440宽度及键盘操作。
实际解压无.git源码构建，核对原版本映射；复跑Docmost评审关键流程/既有验收，重启后读取与下载。

任务6：交付
保留原项目及已有数据库记录；代码在独立分支本地提交，不推送。
交付对应源码ZIP、实际截图、测试与HTTP证据、构建映射、运行说明、门户源码和D07进度；不把公共演示部署及统一沙盒隔离标为已完成。
