docs: archive Sense package environment loading (#46)

This commit is contained in:
QiuSW
2026-08-13 10:42:12 +08:00
parent 6bbaa07962
commit ef85943ef4
2 changed files with 76 additions and 0 deletions
@@ -0,0 +1,72 @@
<!-- gitea-wiki-mirror:start -->
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-46-Sense-Windows包内配置加载
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-46-Sense-Windows%E5%8C%85%E5%86%85%E9%85%8D%E7%BD%AE%E5%8A%A0%E8%BD%BD.-
wiki_revision: eab38da7cae8089d9cf7ed38e48d3e52962b68b4
synchronized_at: 2026-08-13T02:42:05Z
<!-- gitea-wiki-mirror:end -->
# 46 Sense Windows包内配置加载
- 类型:缺陷
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-13
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/46
- Wiki 页面:Task-46-Sense-Windows包内配置加载
- Wiki revision:见本地镜像头
## 背景与目标
Windows 打包目录已有 `config\sense.env`,但旧版 `start-sense.bat` 只读取进程环境,导致生产启动误报缺少 `SENSE_DATABASE_URL`。本工单让启动入口安全读取包内配置,同时确保真实配置不进入 Git 或交付 ZIP。
## 最终方案
- `start-sense.bat` 保持现场入口,委托同目录 `start-sense.ps1` 加载配置并启动服务。
- 加载器只接受 `SENSE_*` 键,忽略空行和 `#` 注释;不执行配置内容、不输出配置值,外部非空进程环境变量优先。
- 默认生产模式强制 PostgreSQL,验证数据库连接、身份签名、初始化令牌和凭据加密四个必填配置;`check` 模式只验证配置,不连接数据库、不启动服务。
- `demo` 仍强制内存模式;UI 路径固定为包内 `ui`。
- 重打包会安全暂存并恢复已有部署目录的 `config\sense.env`;交付 ZIP 只包含 `sense.env.example`,不包含真实配置。
## 修改文件
- `Sense/scripts/runtime/start-sense.bat`:委托 PowerShell 启动器并传递退出码。
- `Sense/scripts/runtime/start-sense.ps1`:加载、校验配置并处理 production、demo、check 模式。
- `Sense/scripts/runtime/README-WINDOWS.md`:补充包内配置、优先级和检查命令。
- `Sense/scripts/package-windows.bat`:复制 PowerShell 启动器,重打包时保留本机配置且从 ZIP 排除。
- `docs/04-local-development-and-verification.md`、`docs/06-troubleshooting.md`、`docs/delivery/README.md`:由 Gitea Wiki 同步生成的长期说明。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 包内已有 `config\sense.env` 时无需手工 `set` 即可通过生产配置检查 | 通过 |
| `check` 不连接数据库、不启动服务且不输出配置值 | 通过 |
| 外部非空进程环境优先,加载器只接受 `SENSE_*` 且不执行配置内容 | 通过(代码检查) |
| demo 强制内存模式,production 强制 PostgreSQL 和包内 UI | 通过(代码检查) |
| 重打包后原配置不变 | 通过;重建前后 SHA-256 一致 |
| ZIP 含 BAT、PowerShell 启动器、示例与说明,不含真实 `sense.env` | 通过 |
## 测试
- 执行命令:`cmd /c Sense\scripts\package-windows.bat`
- 结果:前后端打包成功,生成 Windows amd64 目录和 ZIP。
- 执行命令:`cmd /c Sense\dist\sense-windows-amd64\start-sense.bat check`
- 结果:输出 `Sense production configuration check passed.`,退出码 0。
- 执行命令:检查 ZIP 条目和 SHA-256。
- 结果:`start-sense.ps1` 与 `sense.env.example` 存在,真实 `config/sense.env` 不存在;ZIP SHA-256 为 `6311B29F1899691AF793A4758CD59096C5388D3C85214209B9EAFBCAD232BA8A`。
- 执行命令:`python dev_scripts/sync_wiki_docs.py --check`
- 结果:Wiki 镜像检查通过。
- 执行命令:`python dev_scripts/check_harness.py --strict`
- 结果:未通过;被基线中工单 #44 归档缺少“最终方案”章节阻塞,与本工单修改无关。
- **未验证部分**:未连接用户 PostgreSQL 启动生产服务;未使用真实摄像机或 MediaMTX;因本工单不修改业务服务逻辑,这些留待部署验收。
## 遗留问题
- 基线工单 #44 的任务归档需在其自身验收闭环中补齐“最终方案”章节,之后再运行严格 Harness。
## 相关提交
- `5a17898` 修复 Windows 包内配置加载。
- `6bbaa07` 更新 Wiki 镜像中的启动、排错和交付说明。
+4
View File
@@ -127,6 +127,10 @@
{
"page": "Task-44-Sense管理员侧栏模块为空修复",
"path": "docs/task/44-Sense管理员侧栏模块为空修复.md"
},
{
"page": "Task-46-Sense-Windows包内配置加载",
"path": "docs/task/46-Sense-Windows包内配置加载.md"
}
]
}