Files
Agent-System/.doc/ops/short-term/2026-09-25-t20-s2-config-pool.md

2.4 KiB
Raw Permalink Blame History

title, task_id, status, created, updated, owner, task_type, policy_revision, branch, worktree, base_dev_sha, write_scope, mutex, review_state, integration_state, deployment, cleanup, remote_sync
title task_id status created updated owner task_type policy_revision branch worktree base_dev_sha write_scope mutex review_state integration_state deployment cleanup remote_sync
T20 S2 配置/池批:B1/B4/B7 t20-s2-config-pool-2026-09-25 in_progress 2026-09-25 2026-09-25 Cursor hardening AGENTS.md + agent-worktree-workflow @ c0e556b1 feature/t20-s2-config-pool-2026-09-25 .worktrees/t20-s2-config-pool-2026-09-25 c0e556b167
internal/server
internal/db
cmd/server
deploy
server+infra-config done pending not_required pending not_requested

T20 S2 配置/池批:B1/B4/B7

用户目标与授权

  • 来源:planned-tasks-closeout-plan-2026-09-25 P3 批次;设计依据 T20 加固设计 S2 行。
  • 均为「无环境写」的代码/配置层改动;compose 变更只入 Git,不部署(部署另授权)。

变更清单

ID 变更 文件
B1 clientIP 仅当 RemoteAddr 落入 TRUSTED_PROXY_CIDRS 时解析 XFF(最右非可信跳);空配置忽略一切 XFF;裸 IP 自动 /32 internal/server/login_rate_limit.go
B4 新增 internal/db/pool.go:PoolProfile(default 30s / migrate 0)+ OpenAppPool 统一入口(RuntimeParams.statement_timeout + MaxConns 可配);bizdev.NewService 改走 OpenAppPool(DefaultProfile()) internal/db/pool.go、internal/bizdev/service.go
B7 cmd/server/main.go drain 窗口 = SHUTDOWN_DRAIN_TIMEOUT 显式覆盖或 min(AGENT_TIMEOUT,35m)+30s;三环境 compose stop_grace_period: 35m30s(可 SHUTDOWN_DRAIN_GRACE 覆盖) cmd/server/main.go、docker-compose.{dev,test,main}.yml

回归测试

  • TestClientIP_* ×4 + TestParseTrustedProxyCIDRs_Formats:伪造 XFF 直连不得改变限流 key;可信代理链解析正确。
  • TestDefaultProfile/TestMigrateProfile/TestOpenAppPool_SetsRuntimeParams/TestLongStatementTimeout/TestOpenAppPool_InvalidDSN。
  • TestShutdownDrainTimeout_* ×5:封顶/跟随/覆盖/非法回落/nil 配置。
  • 三环境 docker compose config --quiet 全过(修正 main.yml 双依赖服务插入点)。

边界确认

  • 旧 5s→10s Shutdown 硬编码移除;不部署(P5 镜像批一并授权后生效)。
  • 业务 SQL 无散落 timeout 改动(按设计「池默认 + SET LOCAL」原则,long 路径后续按需 SET LOCAL)。