# 实现方案-2026-05-24-09-58-56 ## 实现方案文档路径 `工程分析/实现方案-2026-05-24-09-58-56.md` ## 修改目标 - 阅读并梳理当前项目结构、技术栈、运行方式和 Docker 发布历史。 - 恢复误删的 `Docker部署/` 文件夹。 - 核查 Gitea 远端分支、tag 与 Release/附件关系;确认发布物仍由 tag/附件承载后,删除四个不再需要的发布辅助分支。 - 构建并重新部署 `WebSite` 服务,验证本机与公网访问。 - 完成工程分析记录、经验记录追加、Git/Gitea 备份提交。 ## 涉及路径 - `Docker部署/` - `工程分析/需求分析-2026-05-24-09-58-56.md` - `工程分析/实现方案-2026-05-24-09-58-56.md` - `工程分析/测试方案-2026-05-24-09-58-56.md` - `工程分析/经验记录.md` - `WebSite/` ## 技术路线 1. 使用 `git status`、`README.md`、`WebSite/package.json`、历史工程分析文档了解项目现状。 2. 通过 Git 历史或远端 `main` 恢复 `Docker部署/`,再核对恢复文件内容。 3. 使用 `git ls-remote` 与 Gitea API 检查远端分支、tag、Release 和附件;发布项和附件确认存在后,删除仅用于固化发布配置的辅助分支。 4. 执行 `npm run build` 验证前端生产构建。 5. 使用 `tmux` 会话 `revoxelseg-dicom` 启动 `npm run serve -- --host 0.0.0.0 --port 4000`。 6. 用健康接口、首页和公网域名做部署验证。 7. 追加经验记录,暂存本次相关文件并提交,推送到 Gitea。 ## 执行步骤 1. 记录开始时间并阅读 `代码编纂工作流.md`、`工程整体分析.md`、`经验记录.md`。 2. 创建本次需求分析、实现方案、测试方案文档。 3. 再次读取 `经验记录.md`,满足执行前确认要求。 4. 恢复 `Docker部署/` 并检查 `Dockerfile`、`README.md`、本机 Compose、NAS Compose。 5. 查询远端分支与发布 tag;若 Release 附件存在且 tag 可追溯,删除四个辅助分支。 6. 执行构建和部署,检查端口与 tmux 会话状态。 7. 验证 `http://127.0.0.1:4000/api/health`、`http://127.0.0.1:4000/`、`https://revoxel.huijutec.cn/`。 8. 更新 `工程分析/经验记录.md`。 9. `git add` 仅暂存本次相关文件,提交并推送到 Gitea。 10. 最终汇报恢复文件、分支清理、部署验证与 commit 状态。 ## 兼容性与回滚方案 - `Docker部署/` 若恢复异常,可从远端 `main` 或历史提交重新取回。 - 远端分支删除后仍保留 tag、Release 和附件;如确需恢复,可从对应 tag 重新创建分支。 - 部署失败时保留构建日志和 tmux 输出,必要时回退到此前可用的 Docker Compose 或旧 tmux 会话。 - 不提交既有无关删除,避免扩大回滚范围。 ## 预计文件变更 - 新增三份本次工程分析文档。 - 恢复 `Docker部署/` 下 4 个文件。 - 追加 `工程分析/经验记录.md`。 - `WebSite/dist/` 可能因构建产生本地变化,但不作为本次备份提交重点。 ## 提交与部署策略 - 提交信息使用:`2026-05-24-09-58-56 恢复Docker部署并清理发布分支`。 - 暂存范围限定为本次工程分析文档、经验记录和恢复的 `Docker部署/` 文件。 - 推送到用户提供的 Gitea 备份仓库对应 `main` 分支。 - 部署使用 `tmux` 会话 `revoxelseg-dicom` 长期运行 `NODE_ENV=production npm run serve -- --host 0.0.0.0 --port 4000`,避免公网 Host 被 Vite 开发中间件拦截。 - 公网访问另起 `revoxelseg-dicom-frpc` 容器,使用 host 网络把本机 `127.0.0.1:4000` 映射到 FRP 服务端 `10008`。 ## 执行补充记录 - 初次按普通 `npm run serve` 启动后,本机 `/api/health`、`/` 与公网 API 正常,但公网根路径返回 `403 Blocked request. This host ("revoxel.huijutec.cn") is not allowed.`。 - 原因是非生产模式会进入 Vite 中间件,Vite 对公网 Host 做 allowedHosts 校验。 - 已改为 `NODE_ENV=production` 启动,服务直接返回 `WebSite/dist/` 生产构建产物。 - 当前公网链路由 `tmux` Web 服务加独立 `revoxelseg-dicom-frpc` 容器组成。