Files
yovision/docs/task/99-Sense登录页只读配置接口.md
T

4.7 KiB
Raw Blame History

generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Task-99-Sense登录页只读配置接口 wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-99-Sense%E7%99%BB%E5%BD%95%E9%A1%B5%E5%8F%AA%E8%AF%BB%E9%85%8D%E7%BD%AE%E6%8E%A5%E5%8F%A3.- wiki_revision: 7d0dd9b216e443b00a97f021d49678b848006db9 synchronized_at: 2026-08-16T15:41:39Z

99 Sense登录页只读配置接口

  • 类型:缺陷修复 / GoAdmin 路由精简回归
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 状态:已完成
  • 日期:2026-08-16
  • Gitea 工单:#99
  • Wiki 页面:Task-99-Sense登录页只读配置接口
  • Wiki revision:见本地镜像头

背景与目标

用户启动 #70 Windows 发布包后,登录页弹出 Request failed with status code 404。只读诊断确认首页、runtime JS 和兼容 captcha 端点均为 200,唯一失败请求是登录页在 created 阶段发出的 GET /api/v1/app-config。

冻结 go-admin-ui 使用该匿名接口取得系统名称等登录外壳展示配置;Sense 后端保留了 SysConfig.Get2SysApp handler,但在最小化默认模块时没有注册此路由。目标是恢复这一个只读端点,同时继续禁用系统配置管理和写接口。

最终方案

  • 在现有 registerBaseRouter 中单独注册匿名 GET /api/v1/app-config,直接复用 GoAdmin SysConfig.Get2SysApp。
  • 不调用上游完整 registerSysConfigRouter,因此 /api/v1/config、/api/v1/configKey 和 /api/v1/set-config 不会随之开放。
  • handler 继续只查询 is_frontend=1 的配置并返回标准响应;没有前端配置时返回空对象和业务码 200。
  • 保持 #97 的免验证码登录、JWT、RBAC、Cookie、密码策略和 captcha 兼容端点不变。
  • 基于实现提交重新生成 Windows 包,恢复仓库外备份的现场配置,并重新启动 Sense/MediaMTX。

修改文件

  • Sense/server/app/admin/router/sys_router.go:恢复登录外壳必需的匿名只读 app-config 路由。
  • Sense/server/app/admin/router/sys_router_test.go:锁定公开端点和八个仍禁用的配置管理路由。
  • Wiki Architecture-and-Code-Map 及镜像:记录匿名只读例外与配置管理禁用边界。
  • wiki-docs.json 与本任务镜像:登记任务归档。

验收结果

验收标准 结果
匿名 app-config 返回 HTTP 200 和标准结构 通过:HTTP 200、业务码 200
登录页不再出现该 404 通过:真实 Edge 页面 app-config 200,错误消息数 0
配置 CRUD/configKey/set-config 未启用 通过:GET/PUT 定向 smoke 均为 404
免验证码登录与认证边界不变 通过:登录页仅账号和密码,无验证码文本;后端全量测试通过
Go 与 Windows 包测试 通过
ZIP 无秘密、node_modules 或客户数据 通过:构建内置包审计通过,ZIP 使用模板配置
Wiki、归档与证据完整 通过

测试

  • go test ./app/admin/router -run TestRegisterBaseRouterExposesOnlyFrontendAppConfig -count=1:通过。
  • go test ./...、go vet ./...、go build ./...:通过。
  • Windows PowerShell 包测试:21 项断言通过。
  • 固定 Go 1.26.5、Node 22.22.1、pnpm 9.15.1 production build 与 11 个 HTML 本地资源审计通过;存在既有 4 条非阻塞构建 warning。
  • 真实运行:GET /api/v1/app-config 为 HTTP 200/业务码 200;配置 CRUD、configKey、set-config GET/PUT 均为 404。
  • Headless Edge:进入 /#/login?redirect=/dashboard;app-config 200;错误消息 0;仅账号、密码两个输入;无验证码文本、失败请求或页面异常。
  • 新 ZIP:56,457,323 字节;SHA-256 A98EB70B709BBA546F4968723E4F89CE44DAF412FCC426869820FB7454CB3CC7;包内 source_commit=713c9e4e3003088e29aafcf1fdd3bd87078ec394。
  • 测试后 Sense 与 MediaMTX 已使用恢复的现场配置重新启动,监听 18080/9997。
  • git diff --check 与 Wiki 定向同步检查:通过。
  • 未验证部分:尚未在客户全新 Windows 主机、客户生产 PostgreSQL 账号和客户目标浏览器中验收;本轮使用当前机器 PostgreSQL、Microsoft Edge 和现有脱敏配置验证。

遗留问题

  • 无本工单阻塞项。

相关提交

  • 713c9e4e3003088e29aafcf1fdd3bd87078ec394 恢复登录页只读配置接口并增加负向路由测试。
  • 08b4b61 记录登录外壳只读配置边界。

人工验收

  • 用户于 2026-08-16 明确回复“#99 验收通过”。
  • PR #100 已合入 dev,合并提交:34ee5ed619d122a8670dc50039578686a7a9ef66。
  • 工单已按验收流程关闭;MVP #8 与 Epic #7 的子工单索引同步为完成。