From ef85943ef48ba3cd60ba2adbb135a39c37c6c23a Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Thu, 13 Aug 2026 10:42:12 +0800 Subject: [PATCH] docs: archive Sense package environment loading (#46) --- .../46-Sense-Windows包内配置加载.md | 72 +++++++++++++++++++ wiki-docs.json | 4 ++ 2 files changed, 76 insertions(+) create mode 100644 docs/task/46-Sense-Windows包内配置加载.md diff --git a/docs/task/46-Sense-Windows包内配置加载.md b/docs/task/46-Sense-Windows包内配置加载.md new file mode 100644 index 0000000..135ddec --- /dev/null +++ b/docs/task/46-Sense-Windows包内配置加载.md @@ -0,0 +1,72 @@ + +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 + + +# 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 镜像中的启动、排错和交付说明。 diff --git a/wiki-docs.json b/wiki-docs.json index 10d3b4a..27c97a6 100644 --- a/wiki-docs.json +++ b/wiki-docs.json @@ -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" } ] }