| from pathlib import Path |
| from app.database import Base, engine, SessionLocal |
| from app.repository import list_objects, latest_runs |
| from app.scripts.seed_synthetic import main as seed_main |
| from app.scripts.train_baseline import run_training |
| from app.services import scoring_cycle, demo_objects |
|
|
| def bootstrap_if_needed(): |
| Base.metadata.create_all(bind=engine) |
| model_path = Path(__file__).resolve().parents[2] / "models" / "baseline_model.joblib" |
| db = SessionLocal() |
| try: |
| has_objects = bool(list_objects(db, 5)) |
| finally: |
| db.close() |
| if not has_objects: |
| seed_main() |
| if not model_path.exists(): |
| run_training() |
| db = SessionLocal() |
| try: |
| if not latest_runs(db, 1): |
| scoring_cycle(db, demo_objects(db), source="bootstrap-demo") |
| finally: |
| db.close() |
|
|
| if __name__ == "__main__": |
| bootstrap_if_needed() |
|
|