Clone
2
Task-46-Sense-Windows包内配置加载
ila edited this page 2026-08-14 09:53:29 +08:00
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.

46 Sense Windows包内配置加载

  • 类型:缺陷
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 状态:已完成
  • 日期:2026-08-13
  • Gitea 工单:#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 镜像中的启动、排错和交付说明。

用户验收

  • 2026-08-14:用户明确确认当前未验收工单通过验收。
  • 本次验收确认该工单在历史 explore 快照中的交付与证据;不恢复旧自研基础框架为 dev 产品基线,后续迁移仍受 #58、#61、#62 约束。