"""Готовит чистую БД с тестовыми данными (как в демо-режиме) для съёмки скриншотов руководства. Запуск (из корня проекта): python tools/guide/seed_server.py <каталог> Создаёт <каталог>/guide.db и <каталог>/photos; администратор admin / admin, остальные — пароль demo1234. Затем сервер: DATABASE_URL=sqlite:///<каталог>/guide.db DATA_DIR=<каталог> uvicorn app.main:app --port 8000 """ import os import sys from pathlib import Path root = Path(sys.argv[1]).resolve() root.mkdir(parents=True, exist_ok=True) os.environ["DATABASE_URL"] = "sqlite:///" + (root / "guide.db").as_posix() os.environ["DATA_DIR"] = str(root) sys.path.insert(0, str(Path(__file__).resolve().parents[2])) from sqlalchemy.orm import sessionmaker # noqa: E402 from app import db as dbm, demo # noqa: E402 from app.migrate import ensure_schema # noqa: E402 from app.security import hash_password # noqa: E402 (root / "guide.db").unlink(missing_ok=True) ensure_schema(dbm.engine) photos = root / "photos" photos.mkdir(exist_ok=True) with sessionmaker(bind=dbm.engine, autoflush=False, expire_on_commit=False)() as s: demo.seed(s, {"id": 1, "username": "admin", "full_name": "Администратор", "password_hash": hash_password("admin")}, str(photos)) print("seeded", root)