[SEN] 建立新 GoAdmin 基线的 Windows 配置、启动与打包交付 #70
Closed
opened 2026-08-14 10:26:40 +08:00 by ila
·
9 comments
No Branch/Tag Specified
dev
feat/183-bell-contact-schedule
docs/171-coordination-e2e-wiki
feature/155-coordination-e2e
docs/168-sync-coordination-wiki
feature/154-coordination-deployment
docs/152-153-connectors
feature/153-event-evidence-connector
feature/152-brain-control
docs/151-machine-identity-acceptance
task/151-machine-identity
docs/150-contract-acceptance
docs/148-149-contract-acceptance
feature/149-runtime-status-contract
feature/150-event-evidence-contract
feature/148-source-config-contract
docs/8-mvp-acceptance
feature/145-sense-e2e-isolation-cleanup
feature/134-bell-independent-e2e
feature/142-bell-ui-shell-startup
feature/140-bell-minimal-admin-menu
feature/138-bell-production-captcha
feature/133-bell-alert-lifecycle
feature/132-bell-rule-alert
feature/131-bell-event-receipt
feature/16-brain-local-events
feature/15-brain-rules
feature/14-brain-vision
feature/13-brain-decode
feature/11-brain-input
main
feat/sense-79-ops-alerts
feat/sense-78-outbox
feat/77-sense-media-shards
feat/76-sense-edge-node-status
feat/75-sense-quota-capacity
feature/74-sense-operations
feature/73-sense-local-events
feature/72-sense-bulk-provisioning
feature/113-record-parallel-acceptance
feature/113-sync-parallel-implementation-docs
feature/71-sense-e2e-regression
feature/62-bell-goadmin-skeleton
feature/10-brain-python-cuda-skeleton
feature/108-sync-devharness
feature/90-sense-root-launcher
feature/106-supervisor-sense
fix/101-sense-layout-shell
feature/104-sense-login-30-days
docs/99-acceptance
feature/99-sense-app-config
feature/70-sense-windows-delivery
fix/95-sense-media-path-constraint
feature/97-sense-password-login
docs/92-acceptance
fix/92-sense-capabilities-jsonb
docs/69-acceptance
feature/69-sense-area
feature/68-sense-liveview
feature/67-sense-mediamtx-reconcile
feature/66-sense-onvif-admission
feature/65-sense-device-credential
feature/64-sense-auth-rbac-audit
feature/61-sense-goadmin-source-baseline
docs/acceptance-batch-20260814
coordination/58-finalize-branch-governance
explore
agent/codex/56-sense-device-edit-payload
agent/codex/54-sense-liveview-on-demand
agent/codex/51-sense-auto-liveview
agent/codex/50-sense-split-camera-credentials
agent/codex/48-sense-onvif-digest
agent/codex/46-sense-env-loader
agent/codex/44-sense-empty-navigation
agent/codex/42-sense-password-length-only
agent/codex/40-sense-password-min-6
agent/codex/37-sense-windows-package
agent/codex/36-bell-docs
agent/codex/9-bell-mvp
agent/codex/21-sense-mvp
agent/codex/28-current-prototypes
agent/codex/5-goadmin-baseline
agent/codex/3-go-admin-ui-reuse
agent/codex/1-collaboration-rules
No results found.
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: ila/yovision#70
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
状态
已完成
基本信息
原始需求与追溯
explore只用于业务、测试和故障证据,不复制自研基础框架。目标
提供可复制的 Windows amd64 前后端打包、包内配置加载、PostgreSQL 迁移、MediaMTX 启动编排、日志位置和安全初始化说明。
做什么
建立 build/package/start/check 脚本;读取包内 config/sense.env 且非空进程环境优先;启动前检查数据库、端口、目录和 MediaMTX;提供迁移、备份/恢复入口和明确错误。
不做什么
不提交真实连接串、密码或 token;不自动创建生产默认管理员;不打包 node_modules、本地数据库或客户数据;不修改根级部署。
GoAdmin 复用与文档门禁
cmd/server.md、cmd/migrate.md、advanced/config.md与冻结上游 README/构建命令。写路径
Sense/scripts/build/**Sense/scripts/runtime/**Sense/config/**Sense/package/**Sense/README-WINDOWS.mdSense/tests/package/**Sense/server/app/sense/media/runtime.goSense/server/app/sense/media/runtime_test.goSense/server/cmd/api/server.goSense/server/cmd/api/web.goSense/server/cmd/api/web_test.goSense/.gitignore禁止写入:
Brain/**、Bell/**、contracts/**、根级部署配置、docs/**、wiki-docs.json。如实现发现必须修改这些路径,停止并转协同工单。文档影响
更新 Windows 安装、配置、数据库准备、管理员初始化、启动停止、日志、备份恢复和排错。
长期文档先更新 Gitea Wiki;本地
docs/镜像由单一协调工单同步,避免共享路径冲突。验收标准
验证方式
风险与回退
打包脚本可能泄漏环境或造成错误启动。只读取白名单 SENSE_*,不打印值;测试使用隔离目录和数据库;回退交付产物和脚本。
协同需求摘要
本工单不建立跨项目契约。发现 Sense→Brain 源/区域配置或 Sense/Brain→Bell 事件/证据需求时,只记录生产者、消费者、目的与建议验证,不取得共享写路径。
需求变化记录
/static资源路由,尚不能从 Windows 单包直接提供 go-admin-ui 的 SPA。为满足“前后端单包、单一启动命令”,在现有 GoAdmin Gin Engine 上增加可选SENSE_WEB_ROOTSPA fallback,纳入Sense/server/cmd/api/web.go及测试;不另建 HTTP/RBAC 框架,不改变 API、认证或权限链。未配置时保持原 GoAdmin 行为。media/runtime.go增加显式managed/external启动检查,disabled仅供 demo;保持未配置模式时的既有惰性行为,启动失败时阻止 HTTP 服务冒充可用。sys_config字段长度阻塞在当前dev不再复现,因此不修改上游迁移文件。实施结果与证据(2026-08-15)
6b79478e4544a023d3cdb、2e76aafdev,merge commit863b232a73767c0e8b6eb5a6bde606f882d2f72a)Task-70-Sense-Windows配置启动与打包交付,revisiona8e7e7eb355e1863bc4d0aaba02eb2131b2919dfSense/dist/sense-windows-amd64.zip,SHA-256F0772175007641CA04434680B14BC0793CCD355DE75C8ADF82A573419170F592check_harness.py --strict仅因既存 #66/#67 归档缺少当前模板章节失败;未修改这两个既有归档。交付回归阻塞(2026-08-15)
#92 合入后已重新打包并在仓库外完成数据库与配置备份;custom-format 备份可由
pg_restore --list读取。真实迁移已成功把设备capabilities转为 JSONB,随后媒体迁移因旧唯一约束实际名称与 GORM 推导名称不同而报 SQLSTATE 42704。媒体迁移事务已回滚,独立缺陷记录为 #95。#70 在 #95 确认、修复、重新打包及启动 smoke 前保持阻塞。交付回归恢复(2026-08-15)
3dd4890已集成到 #70 分支,集成提交c088caf816422cb684c402bb8c85e18db1832186。7E35394F6377F9F4AB0046E8413F29B140D6F301383C54C87CE871B435EF253D,56,595,209 字节;构建内置包审计通过,真实配置仅在 ZIP 生成后恢复到本地解压目录。/healthz、MediaMTX Control API 均返回 200,停止脚本完成且相关监听端口清空。dev后再完成最终合并顺序。验收反馈与修复方案(2026-08-15)
start-sense.bat后访问http://127.0.0.1:18080/白屏,并明确确认继续 #70 修复。/js/runtime.daef9028.js返回 404;发布目录缺少该现代 runtime,仅存在runtime-legacy.4986a4a0.js。其余主要 JS/CSS 返回 200。Chromium 控制台唯一错误即该 runtime 404,Vue 根应用未启动。web/index.html存在,HTTP smoke 只检查首页状态码,没有执行 JS 或核对 HTML 引用资源,因此未发现白屏。新增验收标准
web/index.html引用的全部本地 JS/CSS 文件真实存在白屏修复实施证据(2026-08-15)
4ca4abff7bbe8ade47b321b8db302004591a29e1;归档镜像提交:2c0e39b;PR #89 已更新且保持 open。:export主题变量可正常从 JavaScript 读取,两个阻止启动的构建 warning 已消失。/#/login?redirect=/dashboard,账号、密码、验证码表单可见;首屏 7 个 JS/CSS 均为 200,白屏及阻止 Vue 挂载的错误消失。217BEBADF77D34DBA314074FD56B43A2A5A66D73479F3D57BB7BBCEECFBAE114;ZIP 配置为无秘密模板,VERSION.txt与修复提交一致。Sense/ui/node_modules与Sense/ui/dist已清理。412da1c81551d8fadbba3feb0d3b05868b83deee,定向同步与一致性检查通过。/api/v1/app-config在登录页返回不阻塞渲染的 404,且上游页面仍请求百度统计;均未混入本次白屏修复。#97 集成回归(2026-08-16)
dev的免验证码登录变更。dev合入 #70 功能分支,重新构建并验证登录页无验证码、仅账号密码登录、静态资源闭环与 Windows 启停。#97 集成回归结果(2026-08-16)
dev@116318df748ff0d46d3fe5f8a4f41a6507567eec已合入 #70 分支;#97 免验证码登录进入最终 Windows 包。Get-FileHash;已改用 .NET SHA-256 流式计算。实现提交:b66c39724c42b9e63891d06a41fb4a87c8c3f6c7;归档镜像提交:098d0fa。B500982BD566005DC8876A418C26A75BCABE41F498D10E3DAD286A71C92F0241;包内source_commit=b66c39724c42b9e63891d06a41fb4a87c8c3f6c7。Invoke-WebRequest曾对 loopback 超时;curl 与正式 Windows PowerShell 5.1 smoke 均返回正常,确认不是 Sense 服务阻塞。f3c8e115375c6fa7bd1061a69d2b9368e934546a。#70 重新进入待验收;#95 仍保持独立待验收。人工验收(2026-08-16)
dev;PR #89 随后合入dev,merge commit:863b232a73767c0e8b6eb5a6bde606f882d2f72a;main未变更。9eb390dfd691acc089656a838dd3f12e24f97884;验收镜像提交:5a67a17e17862f27b526c2e34905a260b1fa2dc4。来自 #67 的前置验证提示:在隔离空白 PostgreSQL 17 上执行完整上游迁移链时,尚未到达 #67 媒体迁移就被既有
sys_config初始化字段长度问题中止。#67 自身定向迁移(表、3 菜单、12 策略)已通过。#70 建立 Windows 新安装交付时必须复核并修正空库完整迁移链,不能只在已初始化数据库上验收。开始实施。前置 #69 已验收关闭并合入
dev;分支feature/70-sense-windows-delivery从dev@cf50c28创建,初始工作区干净。已读取冻结 go-admin-doc:
docs/intro/cmd/server.md:继续使用编译后的sense.exe server -c <配置>,不绕开 Cobra 启动链。docs/intro/cmd/migrate.md:继续使用sense.exe migrate -c <配置>,生产启动前先备份并执行完整迁移。docs/intro/advanced/config.md与docs/intro/cmd/config.md:交付层生成独立 production YAML,再通过-c显式传入,不改 GoAdmin 配置事实源。README.md:采用固定 Go 1.26.5、Node 22.22.1、pnpm 9.15.1 的后端/前端 production build;保留 GoAdmin 构建与迁移入口。当前机器事实:模块内 Go 自动工具链为 1.26.5;Node 为 22.22.1;全局 pnpm 为 11.21.0,因此构建脚本将显式调用
corepack pnpm@9.15.1,避免工具链漂移。代码图 MCP 本轮未提供可调用工具,按规则回退到rg和定点读取。现有 GoAdmin 基线尚无Sense/scripts、Sense/package、Sense/tests/package,本工单将在授权路径新增 Windows 交付层。#70 已完成实现并进入待验收。
dev,未合并)6b79478;文档:e4544a0;归档镜像:23d3cdb、2e76aafa8e7e7eb355e1863bc4d0aaba02eb2131b2919dfSense/dist/sense-windows-amd64.zip,56,589,367 字节,SHA-256F0772175007641CA04434680B14BC0793CCD355DE75C8ADF82A573419170F592healthz、MediaMTX Control API、包外目录启停、custom-format 备份及恢复到独立数据库通过。sync_wiki_docs.py --check通过。check_harness.py --strict的唯一失败来自既存 #66/#67 归档缺少当前模板章节,与 #70 文件无关,已记录在归档。当前工单保持打开、“待验收”;未合并 PR、未关闭工单。
#92 合入后已重新生成 Windows 包并完成仓库外数据库/配置备份,备份通过
pg_restore --list校验。真实迁移已越过 capabilities JSONB 问题,随后在媒体路由迁移遇到 SQLSTATE 42704。只读核对确认旧约束为sense_media_routes_path_key,GORM 尝试删除推导名uni_sense_media_routes_path;媒体迁移版本未登记,失败事务未留下半成品。独立缺陷已记录为 #95,#70 暂停在真实启动回归门禁。#95 已集成并完成真实旧库回归:新包
source_commit=c088caf,ZIP SHA-2567E35394F6377F9F4AB0046E8413F29B140D6F301383C54C87CE871B435EF253D。数据库备份可恢复读取;真实迁移保留 2 条路由并建立有效唯一索引;Web/SPA/health/MediaMTX 200,停止后端口清空。#70 恢复为待验收,但合并顺序仍等待 #95 先验收进入dev。#70 白屏验收反馈已修复并重新进入“待验收”。
4ca4abf2c0e39b412da1c81551d8fadbba3feb0d3b05868b83deee217BEBADF77D34DBA314074FD56B43A2A5A66D73479F3D57BB7BBCEECFBAE114邻接发现的
/api/v1/app-config非阻塞 404 与上游百度统计请求未混入本次修复。工单和 PR 保持 open,等待人工验收。继续 #70:#97 已验收并合入
dev。开始把最新dev@116318df集成到 Windows 交付分支,重新生成不含验证码的发布包并执行受影响回归;#70/#95 均不在本轮自动关闭。#70 已完成 #97 集成后的最终重打包并重新进入待验收。新 ZIP SHA-256:
B500982BD566005DC8876A418C26A75BCABE41F498D10E3DAD286A71C92F0241;真实 PostgreSQL、Web/SPA、MediaMTX 与包外启停 smoke 通过,18080/9997 已清空。PR #89 已更新;#70/#95 均未关闭。用户已于 2026-08-16 明确验收通过。依赖 #95 已先合入
dev;PR #89 随后合入dev(merge commit863b232a73767c0e8b6eb5a6bde606f882d2f72a)。Wiki 归档与镜像已更新,main未变更。