Page:
Task-46-Sense-Windows包内配置加载
Pages
Architecture-and-Code-Map
Audience-Document-Template
Business-Rules-and-Glossary
Common-Changes
Delivery-Documentation-Guide
Deployment-Template
Deployment-and-Operations
Development-Workflow
Existing-Project-Adoption-Guide
Home
Local-Development-and-Verification
Multi-Agent-Collaboration
New-Project-Documentation-Setup
Product-Requirements
Product-Roadmap
Project-Profile
Requirements-Migration-Matrix
Task-1-三项目并行建单与协同工单顺序
Task-101-Sense-GoAdmin-应用外壳
Task-104-Sense-30天登录有效期
Task-106-Sense-本机-Supervisor-实例
Task-12-Bell独立登录RBAC与认证审计
Task-17-Bell不可变Event与永久幂等收据
Task-18-Bell开发测试合成事件入口
Task-19-Bell规则匹配与Event-Alert链路
Task-20-Bell-Alert并发处置与审计时间线
Task-21-Sense独立GoAdmin产品骨架
Task-22-Sense独立登录RBAC与审计
Task-23-Sense设备台账与凭据边界
Task-24-ONVIF与RTSP视频接入验证
Task-25-MediaMTX进程与状态对账
Task-26-Sense单路实时监看
Task-27-Sense区域与方向警戒线版本配置
Task-28-三项目当前MVP交互原型
Task-3-GoAdmin默认模块精简与UI组件复用
Task-30-Sense原型对齐GoAdmin与Element-Plus
Task-31-Bell原型对齐GoAdmin与Element-Plus
Task-32-Sense网管与非技术人员原型
Task-33-Bell普通用户预警处理原型
Task-36-Bell-MVP文档与待验收归档
Task-37-Sense-Windows前后端一键打包
Task-40-Sense全模式密码最短6位
Task-42-Sense密码策略仅限制最短6位
Task-44-Sense管理员侧栏模块为空修复
Task-46-Sense-Windows包内配置加载
Task-48-支持ONVIF-Digest认证与安全Media地址归一化
Task-5-冻结Sense与Bell-GoAdmin技术基线
Task-50-ONVIF与RTSP分离凭据并持久化Profile
Task-51-接入成功后自动建立媒体路由并进入实时监看
Task-54-修复实时监看按需拉流循环等待
Task-56-修复设备编辑请求包含新建专用字段
Task-58-建立explore-main-dev分支治理并重置GoAdmin开发基线
Task-61-Sense冻结GoAdmin源码产品骨架
Task-64-Sense登录RBAC与审计
Task-65-Sense设备台账与凭据边界
Task-66-Sense视频接入与Profile
Task-67-Sense视频服务生命周期与状态对账
Task-68-Sense单路实时监看与播放状态反馈
Task-69-Sense多边形区域与方向警戒线配置
Task-70-Sense-Windows配置启动与打包交付
Task-9-Bell独立GoAdmin产品骨架
Task-90-Sense项目根目录Windows启动脚本
Task-92-Sense旧设备能力JSONB兼容迁移
Task-95-Sense旧媒体路由唯一约束兼容迁移
Task-97-Sense免验证码登录与管理员密码重置
Task-99-Sense登录页只读配置接口
Task-Archive-Template
Troubleshooting
Clone
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 约束。