File size: 4,144 Bytes
c72a1e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | # StudyAgent β FOR_SMLFLG
## Was ist das?
ADHS-freundlicher Study Buddy: Hilft Studenten mit ADHS durch ihr Semester.
Keine starren Plaene β Micro-Steps, Buddy-Ton, Dopamin beim Start statt beim Abschluss.
## Warum
Samuel IS die Zielgruppe. 569 ChatGPT + 232 Claude Sessions dokumentieren das Problem.
Kern-Insight: Dopamin kommt beim Task-BEGINN, nicht beim Complete. Jeder Step = frischer Start.
## Pain Points die das System loest
1. Lernplaene die nie halten β elastischer Plan, kein Guilt
2. WIP explodiert β max 2 Faecher gleichzeitig (hard enforcement in API)
3. Zeitdruck als Feature β Panik-Modus bei <48h
4. Routinedokumentation unmoeglich β Micro-Steps (je 5 Min)
5. Session-Memory β nie wieder bei Null anfangen
## Architektur & Tech-Stack
```
StudyAgent/
βββ main.py # FastAPI app, alle Routes, htmx-Partials (~516 LOC)
βββ agent.py # MiniMax M2.5 API-Call, Fallback-Steps ohne Key
βββ models.py # SQLAlchemy Models (Subject, Deadline, MicroStep, StudySession)
βββ database.py # SQLite Setup, Session-Maker
βββ requirements.txt
βββ static/style.css # Warm palette, ADHS-friendly Design
βββ templates/
β βββ base.html
β βββ index.html
β βββ partials/ # subject_card, deadline_item, micro_step_card,
β # elastic_plan, progress_journey, session_banner
βββ study_agent.db # auto-created
```
**Tech:** Python + FastAPI (async, lifespan) + SQLAlchemy + SQLite + htmx + Jinja2 + MiniMax M2.5 API
## Starten / Nutzen
```bash
cd ~/Projekte/StudyAgent
# Erste Einrichtung
pip install -r requirements.txt
export MINIMAX_API_KEY=your-key-here # optional β ohne Key laufen Fallback-Steps
# Starten
.venv/bin/uvicorn main:app --reload # oder: uvicorn main:app --reload
# open http://localhost:8000
```
## Was funktioniert (implementiert)
- **Dashboard** (`GET /`) β aktive Faecher, naechste Deadlines, naechster Step, Session-Banner, Panik-Indikatoren
- **Faecher CRUD** (`POST/DELETE /subjects`) β WIP-Limit 2 wird server-seitig enforced
- **Deadlines anlegen** (`POST /deadlines`) β auto-generiert sofort Micro-Steps via MiniMax M2.5
- **Steps abschliessen/ueberspringen** (`POST /steps/{id}/complete|skip`) β naechster Step wird inline geladen
- **Elastischer Plan** (`GET /deadlines/{id}/plan`) β auto-komprimiert wenn Steps die verbleibende Zeit uebersteigen
- **Replan** (`POST /deadlines/{id}/replan`) β loescht pending+skipped, generiert neu
- **Session-Tracking** β Sessions werden auto-gestartet, after 30 Min Inaktivitaet auto-geschlossen
- **Panik-Modus** (`is_panic_mode()`) β greift bei <48h, reduziert auf 3-4 wesentliche Steps
- **AI-Fallback** β ohne `MINIMAX_API_KEY` kommen sinnvolle Dummy-Steps (kein Absturz)
## Was fehlt / bekannte Issues
- `.env` vorhanden (`MINIMAX_API_KEY`), in `.gitignore` geschuetzt. `.env.example` als Vorlage vorhanden.
- Browser-Test-Flow (Subject anlegen β Dashboard β Steps) noch nicht durchgespielt
- `fi_date`-aehnlicher Edge-Case: wenn `due_date` bereits vergangen ist, liefert `is_panic_mode()` `False` statt sinnvollen Zustand
- Kein Deployment-Setup (Fly.io geplant)
- Kein Auth (MVP-bewusste Entscheidung)
## Entscheidungen & Lessons Learned
- **htmx statt React** β kein Build-Step, Partials direkt vom Server, funktioniert ohne JS-Framework
- **Buddy-Ton in Code** β "Kein Stress, machen wir anders." direkt in Responses, kein separates i18n
- **Dummy-Steps als Fallback** β API-Fehler oder fehlender Key darf nie das Feature brechen
- **WIP-Limit server-seitig** β nicht nur UI-Warnung, sondern echter `HTTPException`-Block im `POST /subjects`
- **Auto-compress elastisch** β 20% Buffer-Formel: wenn `pending * 5min > hours_left * 0.8 * 60` β Replan
## Next Steps (priorisiert)
1. `MINIMAX_API_KEY` in `.env`-File konfigurieren und testen
2. Browser-End-to-End-Test: Subject β Deadline β Steps β Complete/Skip
3. Edge-Case fixen: vergangene Deadlines richtig behandeln
4. Sprint 3: Panik-Modus visuell sichtbar machen (Banner, roten Rahmen)
5. Fly.io Deployment vorbereiten
|