2.4 KiB
2.4 KiB
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 |
|
server+infra-config | done | pending | not_required | pending | not_requested |
T20 S2 配置/池批:B1/B4/B7
用户目标与授权
- 来源:
planned-tasks-closeout-plan-2026-09-25P3 批次;设计依据 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)。