# 模拟部署与最新构建 ## 已确认要求 - 源码继续放在 `backend/`、`frontend/`。 - 生产、开发模拟部署均使用 `yunx-test/`,禁止把 `out/` 当运行目录。 - 配置固定为 `config/` 中的五个 JSON;证书及加密密钥归 `ssl/`;数据库归 `data/`;日志归 `log/`。 - 保留独立的 `smail`、`smail-admin`。Windows 使用 `.exe` 后缀。 - 前端开发仍使用原源码目录的 Vite 热更新。 - 不清空现有业务库,不删除原证书、密钥及历史备份。 ## 当前任务状态 - `[✓]` 修改前的文档基线已提交并推送。 - `[✓]` 源码指纹和产物 SHA-256 校验已加入构建、部署入口。 - `[x]` 开发启动入口固定使用 `yunx-test`,移除跳过编译选项,等待迁移后运行复审。 - `[x]` Vite 仅在服务端从 `yunx-test/config` 读取域名、证书引用,等待真实页面复审。 - `[~]` 完整构建、最新产物部署和回归验证。 - `[ ]` 配置事务与历史备份改存状态数据库。 - `[ ]` 密钥、TLS、DKIM、ACME 和审计日志迁到最终目录。 - `[ ]` 内置插件合并进发布产物并保持隔离机制。 - `[ ]` 停服备份、无损迁移到 `yunx-test`。 - `[ ]` 新目录开发、生产模拟运行和浏览器验收。 ## 已实现入口 完整构建并部署二进制,不覆盖配置和数据库: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File deploy/deploy-runtime.ps1 ``` 完成运行数据迁移后,启动前后端: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File deploy/start-dev.ps1 -Service all ``` 后端启动总是先完整编译、部署和校验。单独启动前端会校验当前源码与部署产物,不允许搭配过期后端。缺少迁移后的配置、账号库或密钥时拒绝启动,不会创建另一份空库。 构建收据保存在 `out/build-state.json`,不混入部署根目录。已有程序被覆盖前备份至 `out/deployment-history/`。历史前端编译目录归档至 `out/build-history/`,不删除生成物,也不将历次散列资源重复嵌入新程序。 ## 验收边界 构建通过不代表目录迁移、登录持久化、插件、TLS 和管理员恢复通道均已验收。迁移完成前,不能使用旧布局的测试结果证明新布局正确。