suvradeepp's picture
Deploy reno scheduling engine (FastAPI + Streamlit)
9c50399 verified
|
Raw
History Blame Contribute Delete
1.74 kB
metadata
title: Reno Scheduling Engine
emoji: πŸ—οΈ
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false

Reno Scheduling Engine β€” Phase 2 (calendar-aware Day-0 scheduler)

A production-style DAG scheduler for a renovation/construction platform, built in Python (FastAPI + SQLite + Streamlit). It turns BOQ items into activities via configurable templates, builds a cycle-checked dependency DAG, and runs a CPM forward pass against real working-time calendars (weekends, holidays, reduced-permit windows, per-contractor calendars) plus PM pins β€” producing an immutable, versioned Day-0 baseline schedule with a Gantt view.

What's inside

  • Rules Engine β€” BOQ item β†’ activities + intra-item dependencies (template-driven).
  • DAG Service β€” Kahn cycle check, topological sort, descendants.
  • Calendar Service β€” timezone-correct working-time math (DST-safe via zoneinfo).
  • Scheduling Engine β€” CPM forward pass β†’ versioned schedule_versions.
  • Streamlit tester β€” create projects/BOQ/dependencies, compute a baseline, and a Day-0 Explainability tab that derives every date step-by-step with a critical-path Gantt + DAG.

Run locally

pip install -r requirements.txt
python -m scripts.migrate up
python -m scripts.seed
python -m uvicorn app.api.app:app --port 8000      # API
streamlit run streamlit_app.py                      # UI on http://localhost:8501
python -m pytest                                    # 53 tests

On the Space, start.sh runs migrations + seed, starts the API internally, and serves the Streamlit UI on port 7860.

See docs/ for the architecture, data inventory, and phase notes.