- A1 业务层统一 async:gencode 表内省改 run_sync 异步(不再阻塞事件循环)、 check_db 改 async_engine、dict_util 启动预热异步载入;psycopg 降为 APScheduler SQLAlchemyJobStore 专用同步孤岛(注释标注) - A2 测试真 PG 化:conftest 弃 SQLite + mock Redis,改连真实 PG16(dpb_test)+ Redis(number_gen advisory lock 路径真被测);新增 docker/test-compose.yaml 测试依赖栈(postgres:16:5433 + redis:7:6380);run_ci 前置探测 + 容器兜底, pytest -m pg 10 套正式 tc 全过(真实 PG16 + Redis) - B1 Redis 启动不强依赖:redis_connect 失败降级启动,缓存类回源 DB、存储类 (会话/AI 配置/调度)经 require_redis 守卫返回 503;真机 3 阶段降级测试 PASS=11 FAIL=0(独立 Redis 6390 + 后端 8091,不动共享 dev 服务) - C 扶正 DPB:后端横幅/日志(dpb.log)/README/pyproject/ai_factory agent 名、 前端 package.json/署名注释/链接文案/deploy.sh/docker 注释全部去 fastapiadmin; grep backend/app + frontend/web/src 零残留 - 验证:全量回归 pass=72 fail=0
57 lines
2.1 KiB
YAML
57 lines
2.1 KiB
YAML
# ============================================
|
||
# DPB 测试依赖 compose —— 供 CI / 本地验收起 PostgreSQL16 + Redis
|
||
# ============================================
|
||
# 用途:架构治理 A2「测试真 PG 化」。冒烟层(backend/tests)与统计引擎 tc 套件
|
||
# 都基于真实 PG + Redis;本栈在隔离端口起容器,避免与宿主机常驻服务(本地 PG
|
||
# 5432 / WSL redis 6379)冲突。
|
||
#
|
||
# 使用方式(在 docker/ 目录):
|
||
# docker compose -f test-compose.yaml up -d
|
||
# # 后端测试连接默认走 TC_CI_* 覆盖(端口与本栈一致):
|
||
# # backend/tests:DATABASE_NAME=dpb_test(conftest 自动建库)
|
||
# # TC_CI_DB_PORT=5433 TC_CI_REDIS_PORT=6380
|
||
# # TC_CI_DB_NAME=dpb_test TC_CI_DB_USER=dpb TC_CI_DB_PASSWORD=dpb
|
||
# docker compose -f test-compose.yaml down
|
||
#
|
||
# 无持久化卷:每次 up 都是全新实例,测试库从 init 脚本重建,天然隔离。
|
||
# ============================================
|
||
|
||
services:
|
||
postgres:
|
||
container_name: dpb-test-postgres
|
||
image: postgres:16
|
||
restart: "no"
|
||
environment:
|
||
TZ: "Asia/Shanghai"
|
||
POSTGRES_DB: "dpb"
|
||
POSTGRES_USER: "${TEST_DB_USER:-dpb}"
|
||
POSTGRES_PASSWORD: "${TEST_DB_PASSWORD:-dpb}"
|
||
# 仅绑定本机回环;宿主常驻 PG 已占 5432,故测试栈用 5433
|
||
ports:
|
||
- "127.0.0.1:${TEST_DB_PORT:-5433}:5432"
|
||
# 首次初始化时创建测试库 dpb_test(docker-entrypoint 会执行 initdb.d 下脚本)
|
||
volumes:
|
||
- ./test-initdb/01-create-test-db.sql:/docker-entrypoint-initdb.d/01-create-test-db.sql:ro
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U ${TEST_DB_USER:-dpb} -d dpb"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 15s
|
||
|
||
redis:
|
||
container_name: dpb-test-redis
|
||
image: redis:7-alpine
|
||
restart: "no"
|
||
environment:
|
||
TZ: "Asia/Shanghai"
|
||
# 宿主/WSL 常驻 redis 已占 6379,故测试栈用 6380;无密码(与 dev .env 一致)
|
||
ports:
|
||
- "127.0.0.1:${TEST_REDIS_PORT:-6380}:6379"
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 10s
|