Files
server-deploy/HANDOFF.md
T

104 lines
6.7 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-09-25。此文件用于在没有原聊天记录、没有原设备缓存的情况下接续开发。
这是开发交接,不是生产安装说明。新设备先阅读此文件,不要执行根 README 下方的旧部署脚本。
## 1. 获取正确分支
新架构已从 `codex/new-deployment-architecture` 合并到 `master`,用户已手动推送源码,
并授权提交、推送最新交接文档。**后续开发和跨设备接续统一使用 `master`。**
先为新设备配置仓库 SSH 权限,并从可信渠道核对 Git 服务器主机指纹;不要禁用主机校验。
新设备克隆:
```sh
git clone --branch master --single-branch ssh://git@git.joywaygames.cn:2222/joywaygamess/server-deploy.git
cd server-deploy
git branch --show-current
git log -1 --oneline
git status --short
```
已有本地仓库:先检查未提交更改,不要 reset、clean 或自动 stash;获取远端分支后再切换。
```sh
git status --short
git fetch origin
git switch master
git pull --ff-only
```
若此前用 `--single-branch` 只克隆了工作分支,先运行
`git fetch origin refs/heads/master:refs/remotes/origin/master` 获取 master;
本地尚无 master 时,用 `git switch -c master --no-track origin/master` 创建分支,
再用 `git pull --ff-only origin master` 显式同步(避免旧单分支 fetch 配置影响跟踪关系)。
普通完整克隆可使用 `git switch --track origin/master`。
用 `git log -1 --oneline` 核对交接提交;旧工作分支只作历史参考。
有冲突或远端分叉时停止核对,不强制覆盖。跨设备轮换前,显式提交并推送本轮需要带走的文件。
聊天记录、本机临时文件和未提交修改不会随 Git 同步。
## 2. 阅读顺序与权威性
1. 本文件:当前停止点、待确认项与安全边界。
2. [实施状态](docs/implementation-status.md):已完成工作包和实际验证证据。
3. [完整方案](docs/2026-09-25-complete-optimization-proposal.md):已批准的总体架构。
4. [开发环境](docs/development.md):新设备安装前提、构建与测试。
5. [CLI 协议](protocol/README.md)及所改模块的 `internal/<模块>/README.md`:接口与限制。
6. 需要远程工作时阅读[服务器初检](docs/2026-09-25-target-server-preflight.md),并重新核对现场。
2026-09-24 的 Caddy/结构审查文档是历史讨论,不能覆盖已选定的 Traefik 方案。
`docs/superpowers/plans/` 是各阶段计划,旧复选框不代表当前完成度;以实施状态和实际代码/测试为准。
仓库不依赖某一 AI 工具的会话、记忆或个人技能目录才能开发。
## 3. 已确认架构与交付形式
- 为新服务器建设,不做旧服务器的数据迁移或旧脚本兼容;保留原有数据是最高约束。
- 应用可独立部署,数据库随应用隔离;公共环境为 Docker Compose、Traefik 等。
- 本地管理产品:React/TypeScript 页面 + Node 本地服务 + SQLite,经 SSH 调用远端 Go `deployctl`。
- 用户界面由浏览器打开;本地 API 只监听回环并需会话、Host/Origin、CSRF 防护。
- 不是已选定的 Electron/Tauri 桌面安装 App,也不是公网管理网站。
- 便携目标:Windows/macOS 解压启动,运行时随包交付,不要求最终用户安装开发工具。
启动器、端口分配、数据目录、退出行为、签名和更新机制尚未实现/验收。
- Apple 风格 UI;面板关闭不应影响已部署应用,已提交远端任务最终由 systemd 独立监督。
后一项仍是未完成的设计目标。
- `claude-dev-stack` 不纳入新体系;旧脚本暂留对照,不得作为新执行器的后端。
## 4. 当前完成与停止点
已完成八个基础工作包:离线计划、状态/锁、应用包完整性、受限 Compose 策略、本机预检、
dpkg 清单/版本锁、Docker 仓库签名认证、实际五个 Docker deb 的字节校验。
`cmd/deployctl` 和 `internal/` 为当前实现。CLI 没有可用的安装、部署、升级、恢复写入口;
`executable` 始终为 false。状态库尚未接入执行器。
`apps/ops-panel/` 尚不存在;本地服务、UI、SSH 管理层、便携打包尚未交付。
真实 deb 测试通过不等于完整依赖解析或安装验收。
下一工作包:Ubuntu 依赖源认证与隔离的完整 APT 依赖事务预演。
最近提出的细化方案是:原生 APT 求解器、可信元数据/包状态快照、独立配置/缓存、
不继承宿主钩子、只模拟;删除/降级/修改保留包或现场漂移时拒绝,输出完整变更清单。
**该 APT 适配器细化方案尚待用户确认,尚未实现;本次跨设备交接不是对它的批准。**
接续时先复跑基础测试,再请用户确认此边界,随后编写实施计划和失败测试。
## 5. 服务器与凭据边界
- 指定新服务器及已核对指纹见服务器初检文档;该文档是历史观察,不是当前现场保证。
- 截至本次交接,只完成该新服务器 SSH 只读初检;新执行器没有在那里安装/部署应用。
- 新架构阶段没有操作旧服务器;不要复用旧升级任务的授权去迁移或恢复数据。
- 新设备需要自行配置私钥或 SSH Agent、仓库访问权限和可信 known_hosts;均不通过 Git 交付。
- 私钥、有效密码、token、真实 `.env`、个人 SSH 配置、备份和数据库不能新增到提交中。
`.gitignore` 不会自动移除历史已跟踪的敏感文件;旧配置不得作为新部署输入。
历史凭据轮换和 Git 历史清理需另行授权,不在本次交接范围。
- `claude-dev-stack/.env` 的删除已按用户要求提交(`f25f5df`),并包含在本地 master 中,不恢复它。
不以合并为由擅自清理其余旧目录;Git 历史仍可能含旧配置,不要使用或复制其中凭据。
- 远端写入前重新核对主机身份、数据/服务、容量和影响,并取得具体操作授权。
不做整机升级、不重置防火墙、不删除卷/数据库、不把备份恢复覆盖到原数据。
## 6. 可直接交给接续助手的说明
> 请先阅读 HANDOFF.md、docs/development.md、docs/implementation-status.md 和已批准的完整方案。
> 检查实际分支和 git status,保留用户修改,在当前目录接续,不依赖旧聊天或其他设备的绝对路径。
> 先构建并运行本机测试,区分历史证据与本次结果。当前停在第八工作包之后,APT 隔离细化方案待确认。
> 不执行旧部署脚本,不改服务器数据,不把校验结果当成安装授权;提交/推送按本轮用户要求处理。
后续每个工作包完成时更新本文件的停止点及实施状态;涉及协议、工具链或交付方式变化时同步开发指南。