Files
user-system/.workbuddy/memory/2026-04-05.md
long-agent 5b6bd93179 refactor: 整理项目根目录结构
整理内容:
- 删除 60+ 临时测试输出文件 (*.txt)
- 移动二进制文件到 bin/ 目录
- 移动 Shell 脚本到 scripts/ 目录
  - scripts/dev/: check_gitea.sh, check_sub2api.sh, run_tests.sh
  - scripts/deploy/: deploy_*.sh, simple_deploy.sh
  - scripts/ops/: fix_nginx.sh, fix_ssl.sh, install_docker.sh
  - scripts/test/: test_*.sh, test_*.bat
- 移动批处理文件到 scripts/
- 移动 Python 脚本到 tools/
- 清理临时日志文件

保留根目录必要文件:
- go.mod, go.sum, go.work
- Makefile, docker-compose.yml
- .env.example, .gitignore
- README.md, AGENTS.md, DEPLOY_GUIDE.md

验证: go build ./... && go test ./... 通过
2026-04-07 18:10:36 +08:00

3.8 KiB
Raw Blame History

2026-04-05 工作记录

SRE 全面审查与解决方案2026-04-05 Sprint 17

完成内容

  • 对 UMS 系统做全面 SRE 审查,产出 docs/sre/SRE_SOLUTION.md
  • 发现并记录 5 个严重问题CRIT-0105和 5 个警告WARN-0105

关键发现P0 问题)

  • CRIT-01: Prometheus /metrics 端点完全未接入路由 — 监控形同虚设
  • CRIT-02: PrometheusMiddleware 已定义但未挂载到 router.go — HTTP 指标全为零
  • CRIT-03: SLO 完全缺失 — 没有可靠性目标和错误预算
  • CRIT-04: 只有邮件告警,无即时通知(飞书/企业微信),无 On-Call 升级链路
  • CRIT-05: SQLite 用于生产(单点故障)— 必须迁移 PostgreSQL

新建文件

  • docs/sre/SRE_SOLUTION.md — 完整 SRE 解决方案文档SLO + 错误预算 + 告警 + 混沌工程)
  • internal/monitoring/slo.go — SLO 指标定义(补充告警引用但未定义的指标)
  • internal/monitoring/health.go — 增强健康检查Redis 检查 + DEGRADED 状态 + 连接池指标)
  • deployment/alertmanager/alerts.yml — 基于燃烧率的优化告警规则(替代简单阈值告警)
  • scripts/chaos/ce-001-database-unavailable.ps1 — 数据库不可用混沌实验
  • scripts/chaos/ce-005-concurrent-login.ps1 — 并发登录压测验证速率限制
  • scripts/ops/sre-daily-healthcheck.ps1 — SRE 日常健康巡检脚本

构建状态

  • go build ./... 通过
  • go vet ./internal/monitoring/... 通过

SLO 目标(已定义)

  • API 可用性: 99.9%(月度错误预算 43.8 分钟)
  • API 延迟: P99 < 500ms 覆盖 99% 请求
  • 登录成功率: 99%
  • DB 查询: P95 < 100ms

SRE 优化执行2026-04-05 Sprint 17 第二轮)

修复内容(全部 CRIT 问题已修复,代码已验证)

  • CRIT-01/02 : 接入 /metrics 端点 + 挂载 PrometheusMiddleware
    • internal/api/router/router.go 增加 metrics 字段和挂载逻辑
    • cmd/server/main.go 初始化 GetGlobalMetrics() 并传入 router
  • CRIT-03 : 创建 internal/monitoring/collector.go,后台每 15s 采集 runtime + DB 连接池指标
  • CRIT-04 : 更新 deployment/alertmanager/alertmanager.ymlCritical/Warning/Info 三级 + 飞书 Webhook 双通道
  • 可观察性补强 : 创建 internal/api/middleware/trace_id.go,日志注入 trace_id
  • 健康检查升级 : /health/live204/health/ready200/503分离

验证结果

  • go build ./... 零错误
  • go vet ./... 零报告
  • go test ./... -short 34 个包全部 OK零 FAIL

SRE 评分变化

  • 第一轮: 4.5/10 → 第二轮: 7.2/10(↑+2.7
  • 最大提升可观察性指标2→8健康检查 3→9

报告文件

  • docs/sre/SRE_REVIEW_ROUND2.md — 完整第二轮审查报告(含遗留问题清单)

遗留(待运维/后续 Sprint

  • WARN-01: /metrics 端点无鉴权保护 → Round 3 已修复
  • WARN-02: SQLite WAL 模式未开启 → Round 3 已修复
  • WARN-03: 飞书 Webhook 环境变量未配置 → Round 3 文档化(.env.example
  • CRIT-05: SQLite → PostgreSQL 迁移(架构级,推 v2.0

SRE Round 3 执行2026-04-05

修复内容

  • WARN-01 : InternalOnly() 中间件,/metrics 限制内网访问(外网 403
  • WARN-02 : SQLite WAL 模式 + 5 条 PRAGMA + 连接池MaxOpen=10, MaxIdle=5
  • WARN-03 : 创建 .env.example,含飞书 Webhook 配置全流程说明

验证结果

  • go build ./... 零错误
  • go vet ./... 零报告
  • go test ./... -short 34 包全部 OK零 FAIL

SRE 评分

  • Round 1: 4.5/10 → Round 2: 7.2/10 → Round 3: 8.0/10

报告

  • docs/sre/SRE_REVIEW_ROUND3.md — 三轮完整评分演进 + 剩余技术债清单