KI-Konzil/_bmad-output/implementation-artifacts/stories/5-4-run-verlauf-history.md
copilot-swe-agent[bot] d4cfb34423 Changes before error encountered
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
2026-03-12 15:00:09 +00:00

2.3 KiB
Raw Blame History

Story 5.4: Run-Verlauf (History)

Status: done

Story

Als Nutzer, möchte ich vergangene Council-Runs einsehen, so dass ich Ergebnisse nachträglich nachschlagen kann.

Acceptance Criteria

  1. GET /api/runs/ → paginierte Liste aller Runs (neueste zuerst)
  2. GET /api/runs/{run_id}status, final_draft, critic_score, iteration_count, input_topic
  3. Unbekannte run_id404 Not Found
  4. Abgeschlossene Runs werden in PostgreSQL persistiert (council_runs-Tabelle)
  5. ?skip=0&limit=20 Query-Parameter für Paginierung

Tasks / Subtasks

  • Task 1: services/run_service.py (AC: 14)
    • Subtask 1.1: create_run(), get_run(), list_runs(skip, limit)
    • Subtask 1.2: update_run_completed(), update_run_failed()
  • Task 2: api/run_history_routes.py REST-Endpunkte (AC: 13, 5)
    • Subtask 2.1: RunHistoryResponse Pydantic-Modell
    • Subtask 2.2: GET /runs/ und GET /runs/{run_id}
  • Task 3: Run nach Abschluss in DB persistieren
    • Subtask 3.1: create_run() beim Start (in routes.py)
    • Subtask 3.2: update_run_completed() nach Graph-Abschluss
  • Task 4: Unit-Tests (AC: 15)

Dev Notes

  • run_history_router unter /api-Prefix eingehangen
  • DB-Persistierung: create_run() bei POST /runupdate_run_completed() nach Fertigstellung
  • list_runs() nutzt ORDER BY created_at DESC für neueste-zuerst Sortierung

Project Structure Notes

  • backend/services/run_service.py
  • backend/api/run_history_routes.py
  • backend/tests/test_run_service.py

References

  • [Source: _bmad-output/planning-artifacts/architecture.md#Datenbankschema — council_runs]
  • [Source: _bmad-output/planning-artifacts/prd.md#FR-02.7]

Dev Agent Record

Agent Model Used

Amelia (💻 BMAD Dev Agent)

Completion Notes List

  • run_history_router ist von routes.py getrennt, da Council-Runs und Run-History konzeptionell verschiedene Ressourcen sind.
  • Tests nutzen AsyncSession mit In-Memory-SQLite (aiosqlite).

File List

  • backend/services/run_service.py
  • backend/api/run_history_routes.py
  • backend/tests/test_run_service.py