[SEN] 恢复登录页匿名只读 app-config 接口 #99

Closed
opened 2026-08-16 19:38:33 +08:00 by ila · 3 comments
Owner

状态

已完成

基本信息

  • 类型:缺陷修复 / GoAdmin 路由精简回归
  • 任务类型:单项目独立任务
  • 主项目:Sense
  • 主 agent:Sense agent
  • 所属 Epic:#7
  • 所属 MVP:#8
  • 前置工单:#70、#95、#97(均已验收并合入 dev)
  • 独立运行:Brain、Bell 均不启动时完成实现和验收

原始需求与追溯

  • 来源:用户于 2026-08-16 启动 #70 Windows 发布包后反馈页面提示 Request failed with status code 404,并明确确认“建工单并做”。
  • 只读证据:GET /api/v1/app-config 返回 404;首页、runtime JS 和 captcha 兼容端点均返回 200。go-admin-ui 登录页在 created 阶段调用 system/settingDetail → getSetting → /api/v1/app-config,全局 Axios 拦截器把 404 显示为错误提示。
  • 根因:后端保留了现成只读 handler SysConfig.Get2SysApp,但精简默认模块时 registerBaseRouter 未注册该匿名路由;前端调用链仍保留。

目标

恢复 go-admin-ui 登录页依赖的匿名只读 GET /api/v1/app-config,消除启动后 404 提示,同时继续禁用无关的系统配置管理、配置写入和其他默认模块接口。

做什么

  • 在现有 GoAdmin 管理路由链中只注册匿名只读 GET /api/v1/app-config,复用 SysConfig.Get2SysApp。
  • 不调用会同时启用 CRUD/set-config 的完整配置路由注册函数。
  • 增加路由回归测试:匿名 app-config 可达;配置 CRUD、configKey 与 set-config 仍不可达或保持既有鉴权/禁用边界。
  • 验证登录页请求不再产生 HTTP 404;空前端配置也应返回标准 200 响应。
  • 重新生成 Windows amd64 ZIP,并完成首页、app-config、静态资源和启停 smoke。

不做什么

  • 不启用系统配置管理菜单或页面。
  • 不开放配置写接口、/api/v1/config、/api/v1/configKey 或 /api/v1/set-config。
  • 不删除兼容 captcha API,不修改免验证码登录、JWT、RBAC、Cookie、数据库结构或密码策略。
  • 不修改 Brain、Bell、contracts 或根级部署配置。

GoAdmin 复用与精简门禁

  • 复用冻结 go-admin 的 SysConfig.Get2SysApp 和现有 Gin 路由,不新增配置服务或 HTTP 框架。
  • 对照冻结 go-admin-doc 的路由/配置主题及冻结 go-admin/go-admin-ui 对应调用链。
  • “最小启用”落实为只恢复登录外壳必需的匿名读端点;配置管理能力继续不可访问。

写路径

  • Sense/server/app/admin/router/sys_router.go
  • Sense/server/app/admin/router/*_test.go
  • 如测试夹具需要:Sense/server/app/admin/apis/*_test.go
  • 受影响的 Gitea Wiki 页面及同步生成的 docs/** 镜像
  • 本工单 Wiki 归档、wiki-docs.json 与 docs/task/**

禁止写入:Brain/**、Bell/**、contracts/**、根级部署配置。发现需要扩大接口或权限范围时先更新工单。

文档影响

更新 Sense 架构/API 边界:app-config 是登录外壳所需的匿名只读接口;系统配置管理和写接口仍禁用。长期文档按 Wiki → 读取确认 → 同步镜像处理。

验收标准

  • 未登录访问 GET /api/v1/app-config 返回 HTTP 200 和标准响应结构
  • 登录页打开不再出现该 404 错误提示
  • /api/v1/config、/api/v1/configKey、/api/v1/set-config 未被本工单启用
  • 免验证码登录、JWT/RBAC、未认证拒绝行为不变
  • Go 受影响测试、全量 test/vet/build 与 Windows 包测试通过
  • 新 Windows ZIP 只含模板配置,无秘密、node_modules 或客户数据
  • Wiki、任务归档、PR 和验证证据完整,工单保持待验收

验证方式

  • Gin 路由定向测试与 Go 全量 test/vet/build
  • curl/Windows PowerShell 对 app-config、禁用接口、首页和静态资源进行 smoke
  • 固定工具链重新打包,执行包审计与 start/stop
  • git diff --check、Wiki 镜像一致性检查

风险与回退

  • 风险:错误复用完整配置路由会重新开放已精简的管理接口。
  • 控制:只注册单一路由并用负向路由测试锁定边界。
  • 回退:移除单一路由注册与测试,恢复当前 404 行为;不涉及数据库回退。

协同需求摘要

无跨项目协同需求。

实施结果与证据(2026-08-16)

  • 分支:feature/99-sense-app-config;PR:#100(目标 dev,保持打开待验收)。
  • 实现提交:713c9e4e3003088e29aafcf1fdd3bd87078ec394;长期文档:08b4b61;归档镜像:d067f0b。
  • Wiki:Architecture-and-Code-Map revision 5cbaa178193811083519c5125febf8cc962c94ee;任务归档 revision 26d3762828f6e4273a2002fca49336bebf7566fe。
  • 路由:匿名 GET /api/v1/app-config 复用 SysConfig.Get2SysApp;配置 CRUD、configKey、set-config 未注册。
  • Go 定向及全量 test/vet/build、21 项包测试、固定工具链 production build 与包审计通过。
  • 真实 HTTP:app-config HTTP/业务码 200;禁用配置管理 GET/PUT 全部 404。
  • Headless Edge:登录页 app-config 200、错误提示 0、仅账号密码输入、无验证码、无失败请求和页面异常。
  • 新 ZIP:56,457,323 字节;SHA-256 A98EB70B709BBA546F4968723E4F89CE44DAF412FCC426869820FB7454CB3CC7;包内 source commit 为 713c9e4e3003088e29aafcf1fdd3bd87078ec394。
  • 当前 Sense/MediaMTX 使用恢复的现场配置运行在 18080/9997;测试安装的 Sense/ui/node_modules 已清理,工作区干净。
  • 未验证:客户全新 Windows 主机、客户生产 PostgreSQL 账号和客户目标浏览器。

人工验收与合并

  • 用户于 2026-08-16 明确验收通过。
  • PR #100 已合入 dev,合并提交 34ee5ed619d122a8670dc50039578686a7a9ef66。
  • 完成归档 Wiki revision:7d0dd9b216e443b00a97f021d49678b848006db9。
  • 完成归档镜像提交:3c668cc。
## 状态 已完成 ## 基本信息 - 类型:缺陷修复 / GoAdmin 路由精简回归 - 任务类型:单项目独立任务 - 主项目:Sense - 主 agent:Sense agent - 所属 Epic:#7 - 所属 MVP:#8 - 前置工单:#70、#95、#97(均已验收并合入 `dev`) - 独立运行:Brain、Bell 均不启动时完成实现和验收 ## 原始需求与追溯 - 来源:用户于 2026-08-16 启动 #70 Windows 发布包后反馈页面提示 `Request failed with status code 404`,并明确确认“建工单并做”。 - 只读证据:`GET /api/v1/app-config` 返回 404;首页、runtime JS 和 captcha 兼容端点均返回 200。go-admin-ui 登录页在 created 阶段调用 `system/settingDetail → getSetting → /api/v1/app-config`,全局 Axios 拦截器把 404 显示为错误提示。 - 根因:后端保留了现成只读 handler `SysConfig.Get2SysApp`,但精简默认模块时 `registerBaseRouter` 未注册该匿名路由;前端调用链仍保留。 ## 目标 恢复 go-admin-ui 登录页依赖的匿名只读 `GET /api/v1/app-config`,消除启动后 404 提示,同时继续禁用无关的系统配置管理、配置写入和其他默认模块接口。 ## 做什么 - 在现有 GoAdmin 管理路由链中只注册匿名只读 `GET /api/v1/app-config`,复用 `SysConfig.Get2SysApp`。 - 不调用会同时启用 CRUD/`set-config` 的完整配置路由注册函数。 - 增加路由回归测试:匿名 app-config 可达;配置 CRUD、configKey 与 set-config 仍不可达或保持既有鉴权/禁用边界。 - 验证登录页请求不再产生 HTTP 404;空前端配置也应返回标准 200 响应。 - 重新生成 Windows amd64 ZIP,并完成首页、app-config、静态资源和启停 smoke。 ## 不做什么 - 不启用系统配置管理菜单或页面。 - 不开放配置写接口、`/api/v1/config`、`/api/v1/configKey` 或 `/api/v1/set-config`。 - 不删除兼容 captcha API,不修改免验证码登录、JWT、RBAC、Cookie、数据库结构或密码策略。 - 不修改 Brain、Bell、contracts 或根级部署配置。 ## GoAdmin 复用与精简门禁 - 复用冻结 go-admin 的 `SysConfig.Get2SysApp` 和现有 Gin 路由,不新增配置服务或 HTTP 框架。 - 对照冻结 go-admin-doc 的路由/配置主题及冻结 go-admin/go-admin-ui 对应调用链。 - “最小启用”落实为只恢复登录外壳必需的匿名读端点;配置管理能力继续不可访问。 ## 写路径 - `Sense/server/app/admin/router/sys_router.go` - `Sense/server/app/admin/router/*_test.go` - 如测试夹具需要:`Sense/server/app/admin/apis/*_test.go` - 受影响的 Gitea Wiki 页面及同步生成的 `docs/**` 镜像 - 本工单 Wiki 归档、`wiki-docs.json` 与 `docs/task/**` 禁止写入:`Brain/**`、`Bell/**`、`contracts/**`、根级部署配置。发现需要扩大接口或权限范围时先更新工单。 ## 文档影响 更新 Sense 架构/API 边界:`app-config` 是登录外壳所需的匿名只读接口;系统配置管理和写接口仍禁用。长期文档按 Wiki → 读取确认 → 同步镜像处理。 ## 验收标准 - [x] 未登录访问 `GET /api/v1/app-config` 返回 HTTP 200 和标准响应结构 - [x] 登录页打开不再出现该 404 错误提示 - [x] `/api/v1/config`、`/api/v1/configKey`、`/api/v1/set-config` 未被本工单启用 - [x] 免验证码登录、JWT/RBAC、未认证拒绝行为不变 - [x] Go 受影响测试、全量 test/vet/build 与 Windows 包测试通过 - [x] 新 Windows ZIP 只含模板配置,无秘密、node_modules 或客户数据 - [x] Wiki、任务归档、PR 和验证证据完整,工单保持待验收 ## 验证方式 - Gin 路由定向测试与 Go 全量 test/vet/build - curl/Windows PowerShell 对 app-config、禁用接口、首页和静态资源进行 smoke - 固定工具链重新打包,执行包审计与 start/stop - `git diff --check`、Wiki 镜像一致性检查 ## 风险与回退 - 风险:错误复用完整配置路由会重新开放已精简的管理接口。 - 控制:只注册单一路由并用负向路由测试锁定边界。 - 回退:移除单一路由注册与测试,恢复当前 404 行为;不涉及数据库回退。 ## 协同需求摘要 无跨项目协同需求。 ## 实施结果与证据(2026-08-16) - 分支:`feature/99-sense-app-config`;PR:#100(目标 `dev`,保持打开待验收)。 - 实现提交:`713c9e4e3003088e29aafcf1fdd3bd87078ec394`;长期文档:`08b4b61`;归档镜像:`d067f0b`。 - Wiki:Architecture-and-Code-Map revision `5cbaa178193811083519c5125febf8cc962c94ee`;任务归档 revision `26d3762828f6e4273a2002fca49336bebf7566fe`。 - 路由:匿名 `GET /api/v1/app-config` 复用 `SysConfig.Get2SysApp`;配置 CRUD、configKey、set-config 未注册。 - Go 定向及全量 test/vet/build、21 项包测试、固定工具链 production build 与包审计通过。 - 真实 HTTP:app-config HTTP/业务码 200;禁用配置管理 GET/PUT 全部 404。 - Headless Edge:登录页 app-config 200、错误提示 0、仅账号密码输入、无验证码、无失败请求和页面异常。 - 新 ZIP:56,457,323 字节;SHA-256 `A98EB70B709BBA546F4968723E4F89CE44DAF412FCC426869820FB7454CB3CC7`;包内 source commit 为 `713c9e4e3003088e29aafcf1fdd3bd87078ec394`。 - 当前 Sense/MediaMTX 使用恢复的现场配置运行在 18080/9997;测试安装的 `Sense/ui/node_modules` 已清理,工作区干净。 - 未验证:客户全新 Windows 主机、客户生产 PostgreSQL 账号和客户目标浏览器。 ## 人工验收与合并 - 用户于 2026-08-16 明确验收通过。 - PR #100 已合入 `dev`,合并提交 `34ee5ed619d122a8670dc50039578686a7a9ef66`。 - 完成归档 Wiki revision:`7d0dd9b216e443b00a97f021d49678b848006db9`。 - 完成归档镜像提交:`3c668cc`。
ila added the kind/taskproject/sensescope/independentpriority/p0 labels 2026-08-16 19:38:33 +08:00
Author
Owner

开始实施。分支 feature/99-sense-app-config 从 dev@863b232a73767c0e8b6eb5a6bde606f882d2f72a 创建,初始工作区干净。

已读取冻结 go-admin-doc:

  • docs/intro/advanced/router.md:匿名端点不挂 JWT/Casbin 中间件;路由注册保持 register{业务}Router 结构。
  • docs/intro/advanced/config.md:继续使用既有系统配置模型/服务,不新增另一套配置事实源。
  • 对照冻结上游 go-admin app/admin/router/sys_config.go 与 go-admin-ui src/api/login.js:上游登录外壳依赖匿名 /api/v1/app-config;本任务只恢复该单一路由,不恢复完整配置 CRUD、configKey 或 set-config 路由。

代码图 MCP 本轮未提供可调用工具,按仓库规则回退到字符串检索和定点读取。

开始实施。分支 `feature/99-sense-app-config` 从 `dev@863b232a73767c0e8b6eb5a6bde606f882d2f72a` 创建,初始工作区干净。 已读取冻结 go-admin-doc: - `docs/intro/advanced/router.md`:匿名端点不挂 JWT/Casbin 中间件;路由注册保持 `register{业务}Router` 结构。 - `docs/intro/advanced/config.md`:继续使用既有系统配置模型/服务,不新增另一套配置事实源。 - 对照冻结上游 go-admin `app/admin/router/sys_config.go` 与 go-admin-ui `src/api/login.js`:上游登录外壳依赖匿名 `/api/v1/app-config`;本任务只恢复该单一路由,不恢复完整配置 CRUD、configKey 或 set-config 路由。 代码图 MCP 本轮未提供可调用工具,按仓库规则回退到字符串检索和定点读取。
Author
Owner

#99 已完成实现并进入待验收。

  • PR:#100 #100
  • app-config 已恢复为匿名只读 200;配置管理相关路由仍为 404
  • 真实 Edge 登录页错误提示为 0,仅账号密码输入且无验证码
  • 新 Windows ZIP SHA-256:A98EB70B709BBA546F4968723E4F89CE44DAF412FCC426869820FB7454CB3CC7
  • Sense/MediaMTX 已重新启动,18080/9997 正常监听

工单与 PR 保持 open,等待用户验收。

#99 已完成实现并进入待验收。 - PR:#100 https://git.ilapage.cn/ila/yovision/pulls/100 - app-config 已恢复为匿名只读 200;配置管理相关路由仍为 404 - 真实 Edge 登录页错误提示为 0,仅账号密码输入且无验证码 - 新 Windows ZIP SHA-256:`A98EB70B709BBA546F4968723E4F89CE44DAF412FCC426869820FB7454CB3CC7` - Sense/MediaMTX 已重新启动,18080/9997 正常监听 工单与 PR 保持 open,等待用户验收。
ila closed this issue 2026-08-16 23:42:01 +08:00
Author
Owner

验收归档补充:受保护 dev 不允许直接推送,完成状态镜像经 PR #103 合入;归档实现提交 3c668cc,归档合并提交 4b135b852b55f7c04d1e266765c93b840a8342f6。

验收归档补充:受保护 `dev` 不允许直接推送,完成状态镜像经 PR #103 合入;归档实现提交 `3c668cc`,归档合并提交 `4b135b852b55f7c04d1e266765c93b840a8342f6`。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#99