StudyAgent / FOR_SMLFLG.md
smlflg's picture
Initial public upload from Projekte/StudyAgent
c72a1e8 verified
|
Raw History Blame Contribute Delete
4.14 kB

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

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