Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-24-09-58-56.md

75 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案-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` 容器组成。