Files
Agent-System/.doc/ops/short-term/2026-09-25-websysadmin-residual.md
T
weichen 914d0aa39d feat(maintenance): wire sysadmin ui.* whitelist settings to public site status
- sysadmin.Service.GetSettingValue: whitelist read-through (DB > env > default)
- maintenance.Service: SiteSettingsProvider injection; StatusView carries notice/readOnly; new CurrentSiteStatus + GET /api/v1/maintenance/site-status
- composition root wires ui.maintenance_notice / ui.read_only_mode into maintenance site settings
- MaintenanceBanner: persistent notice banner + read-only mode strip
- chore(web): drop dead 'dirty' var in EnvSettingsSection (baseline TS6133 build blocker)
- KB ops actions: deferred out-of-repo (shared infra container side); documented in task record
2026-09-25 16:33:56 +00:00

3.4 KiB
Raw Blame History


title: "P9: web-sysadmin 残差收口" task_id: websysadmin-residual-r2-2026-09-25 (r1 cancelled: scope missed internal/app) status: in_progress created: 2026-09-25 updated: 2026-09-25 owner: cursor-auto task_type: implementation task_tier: small policy_revision: "agent-governance-2026-09-21-r1" branch: feature/websysadmin-residual-2026-09-25 worktree: .worktrees/websysadmin-residual-2026-09-25 base_dev_sha: "c5027788ea72bc9488247c2c22dc67c511241fd6" write_scope:

  • internal/maintenance/
  • internal/sysadmin/
  • internal/server/
  • internal/app/
  • web/
  • .doc/ops/short-term/
  • .doc/test-reports/ allowed_environments: [] head_sha: "" mutex: web+sysadmin review_state: pending integration_state: pending deployment: not_required cleanup: pending cleanup_owner: independent maintainer after owner exit cleanup_trigger: acceptance green + owner exit remote_sync: not_requested

P9: web-sysadmin 残差收口

用户目标与授权

  • 用户目标:/goal 把这些任务都进行规划,并推进至完成 → 总控 P9 批次。
  • 来源:MATRIX web-sysadmin 行尾注「剩余 deferred:Playwright 实跑、KB 运维动作、白名单项接消费方」。
  • 交付终点:三项残差处理完毕(做/不做+理由),验收绿。

残差处置

残差 处置 说明
白名单项接消费方 本批实施 ui.maintenance_notice + ui.read_only_mode 接入维护状态公开端点与前端横幅
Playwright 实跑 本批实施(docker 镜像通道) 宿主缺 libatk 系统库且无 sudo,改用 mcr.microsoft.com/playwright 官方镜像跑 admin-console.spec.ts(自带全部依赖)
KB 运维动作 登记不做 KB 为纯只读检索客户端(internal/kb 无写路径),rebuild/index 属共享基础设施容器(shuimu-kb-shared)侧能力,超出本仓边界;一期只读口径维持,管理台 KB 分组补探活刷新即可

实施内容(白名单消费方接线)

  1. sysadmin.Service.GetSettingValue(key):白名单 key 只读解析(DB > env > default),供跨模块消费。
  2. maintenance.Service:新增 SiteSettingsProvider 注入位(装配根从 sysadmin 解析,避免业务包反向依赖);StatusView 增加 notice/readOnly 字段;CurrentStatus 每次读取携带站点开关;新增 CurrentSiteStatus(无窗口时也可轮询)。
  3. 装配根(app.go):rt.Maintenance.SetSiteSettings(...) 从 sysadmin 读 ui.maintenance_notice/ui.read_only_mode。
  4. 新公开端点:GET /api/v1/maintenance/site-status(无需登录,同 status 口径)。
  5. 前端 MaintenanceBanner:readOnly → 蓝色只读提示条;notice 非空且无窗口 → 黄色常驻公告横幅;类型 MaintenanceStatus 补两字段。
  6. 顺手修:EnvSettingsSection.tsx 死变量 dirty(dev 基线既有 TS6133 构建阻断,单行删除不改行为)。

验证

  • Go:go build ./... + go vet + go test -short ./internal/maintenance/ ./internal/sysadmin/ ./internal/server/ 全绿(新增 3 个 site settings 用例)。
  • Web:npm test(34/34)+ npm run build PASS。
  • Playwright:docker 镜像通道跑 admin-console.spec.ts(证据见测试报告)。

非目标

  • 不做 KB 写路径/重建编排(超边界,见上表)。
  • 不改 chat.default_session_role 等其余白名单键(消费方属各自业务模块后续任务)。