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:
浅念
2026-10-14 08:42:50 +08:00
parent 4f38522759
commit 6100b4eb15
5 changed files with 51 additions and 17 deletions
+7 -5
View File
@@ -91,8 +91,9 @@ async def _import_profile(engine, seed_dir: Path, slug: str) -> str:
async def run(args) -> None:
db_path = Path(args.db)
# sqlite 不建父目录(仓库根默认存在,--db 指新目录时会炸——conftest
# build_app 同坑注记);照 registry._ensure_ready 纪律先建目录
# sqlite 不建父目录(默认的 data/ 在冷机可能尚不存在,--db 指新目录
# 同炸——conftest build_app 同坑注记);照 registry._ensure_ready 纪律
# 先建目录(app/main.py 的 lifespan 对 PLATFORM_DB 同兜底)
db_path.parent.mkdir(parents=True, exist_ok=True)
engine = make_platform_engine(db_path)
try:
@@ -122,9 +123,10 @@ async def run(args) -> None:
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
"--db", default=str(REPO_ROOT / "platform.db"),
help="platform.db 路径(默认仓库根,与 app/main.py 的 PLATFORM_DB "
"同一锚定;测试/分环境可覆盖)")
"--db", default=str(REPO_ROOT / "data" / "platform.db"),
help="platform.db 路径(默认 <repo>/data/,与 app/main.py 的 "
"PLATFORM_DB 同一锚定——data/ 是 compose bind mount,重建"
"容器不丢;测试/分环境可覆盖)")
parser.add_argument(
"--profiles", nargs="+", default=list(DEFAULT_PROFILES),
help=f"导入的出厂档案 slug 列表(默认 {' '.join(DEFAULT_PROFILES)})")