fix: P4T1审查修复(platform.db入data卷/tzdata注释/corepack钉版/compose版本注记)
- main.py: PLATFORM_DB 挪到 <repo>/data/platform.db——data/ 是 compose bind mount,容器/镜像重建不再丢租户注册表;lifespan 对父目录兜底 mkdir(冷机 data/ 不存在,sqlite 不建父目录)。bootstrap 脚本 --db 默认值同步锚定 data/。 - 新测试 test_platform_db_defaults_into_data_dir: 常量形状钉死(回退 仓库根即红)+ 冷机形态下 lifespan 建库于 data/ 内(全量 603)。 - Dockerfile: corepack 钉实测通过的具体版本 0.36.0(不追 latest,构建 可复现);tzdata 注释照实改写(trixie slim 实测已自带,安装留作基 镜像漂移保险)。 - docker-compose: 头注释改准确(tenants/=租户库,data/=platform.db+ uploads);env_file 注记对象式写法需 Docker Compose >= 2.24。 - 实证: compose down/up 重建容器后宿主 ./data/platform.db 仍在, healthcheck healthy,/admin/ 200;docker compose build 复验通过。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+12
-6
@@ -28,7 +28,10 @@ logger = logging.getLogger(__name__)
|
||||
BASE_DIR = Path(__file__).resolve().parents[1]
|
||||
SEED_DIR = BASE_DIR / "seed_profiles"
|
||||
TENANTS_DIR = BASE_DIR / "tenants" # .gitignore 已忽略 tenants/*.db
|
||||
PLATFORM_DB = BASE_DIR / "platform.db" # .gitignore 已忽略 platform.db*
|
||||
# 平台库落 data/ 子目录(P4T1 审查修复):data/ 是 compose 的 bind mount
|
||||
# ——容器/镜像重建不丢租户注册表(租户库本就在挂载的 tenants/ 内);
|
||||
# .gitignore 的 data/ 规则覆盖其运行产物。
|
||||
PLATFORM_DB = BASE_DIR / "data" / "platform.db"
|
||||
|
||||
|
||||
# ---- admin 前端生产服务(Phase 4 Task 1)---------------------------------------
|
||||
@@ -116,13 +119,16 @@ async def lifespan(app: FastAPI):
|
||||
f"TENANT_SOURCE 只允许 db|file(实际 {tenant_source!r})")
|
||||
|
||||
# 平台库测试缝(Phase 2 Task 1,同 registry 缝模式):预置过
|
||||
# app.state.platform_engine(临时库)则沿用——不预置则每个 TestClient
|
||||
# 测试都会在仓库根建出真实 platform.db。schema+bootstrap 无条件跑
|
||||
# (两者幂等):预置引擎同样被建到可用,Task 2 起认证测试直接可用。
|
||||
# 装配次序(Task 11 起)engine 先于 registry:db 源 registry 构造即需
|
||||
# 持有 platform_engine。
|
||||
# app.state.platform_engine(临时库)则沿用——不预置则会在 <repo>/data/
|
||||
# 下建出真实 platform.db(生产;测试必须预置或锚到 tmp)。schema+
|
||||
# bootstrap 无条件跑(两者幂等):预置引擎同样被建到可用,Task 2 起
|
||||
# 认证测试直接可用。装配次序(Task 11 起)engine 先于 registry:db 源
|
||||
# registry 构造即需持有 platform_engine。
|
||||
platform_engine = getattr(app.state, "platform_engine", None)
|
||||
if platform_engine is None:
|
||||
# sqlite 不建父目录——冷机 data/ 可能尚不存在(全新检出/新容器),
|
||||
# 连接前兜底建目录(registry._ensure_ready 同纪律)
|
||||
PLATFORM_DB.parent.mkdir(parents=True, exist_ok=True)
|
||||
platform_engine = make_platform_engine(PLATFORM_DB)
|
||||
app.state.platform_engine = platform_engine
|
||||
|
||||
|
||||
Reference in New Issue
Block a user