[Backend] P0 - Smart Expense Workflow: Adatintegritás és Gamifikáció (Fázis 1) #402

Closed
opened 2026-07-09 23:43:10 +02:00 by kincses · 2 comments
Owner

🎯 Célkitűzés

A költségrögzítési folyamat (Expense Logging) backend logikájának átépítése egy 5-lépéses, intelligens munkafolyamattá. A jelenlegi JSONB alapú kilométeróra-rögzítést normalizálni kell, és be kell kötni a hiányzó gamifikációs és szolgáltató-validációs horgokat egyetlen atomi tranzakcióba.

🛠️ Elvégzendő Feladatok (backend/app/api/v1/endpoints/expenses.py & cost_service.py)

  1. Odometer Normalizáció: - A POST /expenses/ végponton a beérkező odometer_reading adatot nem (csak) a JSONB data mezőbe kell menteni.

    • Létre kell hozni egy dedikált rekordot a vehicle.odometer_readings táblában, összekötve az asset_id-vel és a generált cost_id-vel.
  2. Szolgáltató Validációs Logika (Validation Score):

    • Ha a payload tartalmaz service_provider_id-t, le kell kérdezni a szolgáltatót.
    • Ha a validation_score < 100, növelni kell az értékét (pl. +10 ponttal).
    • Ha eléri a 100-at, az is_verified státuszt True-ra kell állítani.
  3. Gamifikációs Horgok (Gamification Hooks):

    • Sikeres rögzítés esetén a GamificationService ossza ki az APP_USAGE_EXPENSE (pl. 10 XP) alap jutalmat a felhasználónak.
    • Ha a 2. pontban történt validációs pontnövelés, ossza ki a PROVIDER_VALIDATION_HELP (pl. 100 XP) prémium jutalmat is.
  4. Tranzakció Kezelés:

    • A fenti összes műveletnek (Cost rögzítés, Odometer rögzítés, Provider frissítés, Gamification naplózás) egyetlen atomi adatbázis tranzakcióban (Single TX) kell lefutnia. Hiba esetén teljes Rollback szükséges.

Elfogadási Kritériumok (DoD)

  • A kilométeróra állás bekerül a vehicle.odometer_readings táblába.
  • A szolgáltatók validációs pontja nő a rögzítések hatására.
  • A pontrendszer (points_ledger) rögzíti az XP-ket.
  • A végpont hiba nélkül, egy tranzakcióban fut le.
## 🎯 Célkitűzés A költségrögzítési folyamat (Expense Logging) backend logikájának átépítése egy 5-lépéses, intelligens munkafolyamattá. A jelenlegi JSONB alapú kilométeróra-rögzítést normalizálni kell, és be kell kötni a hiányzó gamifikációs és szolgáltató-validációs horgokat egyetlen atomi tranzakcióba. ## 🛠️ Elvégzendő Feladatok (backend/app/api/v1/endpoints/expenses.py & cost_service.py) 1. **Odometer Normalizáció:** - A `POST /expenses/` végponton a beérkező `odometer_reading` adatot nem (csak) a JSONB `data` mezőbe kell menteni. - Létre kell hozni egy dedikált rekordot a `vehicle.odometer_readings` táblában, összekötve az `asset_id`-vel és a generált `cost_id`-vel. 2. **Szolgáltató Validációs Logika (Validation Score):** - Ha a payload tartalmaz `service_provider_id`-t, le kell kérdezni a szolgáltatót. - Ha a `validation_score < 100`, növelni kell az értékét (pl. +10 ponttal). - Ha eléri a 100-at, az `is_verified` státuszt `True`-ra kell állítani. 3. **Gamifikációs Horgok (Gamification Hooks):** - Sikeres rögzítés esetén a `GamificationService` ossza ki az `APP_USAGE_EXPENSE` (pl. 10 XP) alap jutalmat a felhasználónak. - Ha a 2. pontban történt validációs pontnövelés, ossza ki a `PROVIDER_VALIDATION_HELP` (pl. 100 XP) prémium jutalmat is. 4. **Tranzakció Kezelés:** - A fenti összes műveletnek (Cost rögzítés, Odometer rögzítés, Provider frissítés, Gamification naplózás) egyetlen atomi adatbázis tranzakcióban (Single TX) kell lefutnia. Hiba esetén teljes Rollback szükséges. ## ✅ Elfogadási Kritériumok (DoD) - [ ] A kilométeróra állás bekerül a `vehicle.odometer_readings` táblába. - [ ] A szolgáltatók validációs pontja nő a rögzítések hatására. - [ ] A pontrendszer (points_ledger) rögzíti az XP-ket. - [ ] A végpont hiba nélkül, egy tranzakcióban fut le.
kincses added the Status: To DoType: Feature labels 2026-07-09 23:43:10 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-07-09 23:48:17 +02:00
kincses started working 2026-07-09 23:48:17 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-07-09 23:48:17

▶️ **Munka megkezdve:** 2026-07-09 23:48:17
kincses added Status: Done and removed Status: In Progress labels 2026-07-10 00:01:09 +02:00
kincses worked for 12 minutes 2026-07-10 00:01:10 +02:00
Author
Owner

Munka befejezve: 2026-07-10 00:01:09

Technikai Összefoglaló:
P0 Smart Expense Workflow (Phase 1) implemented: 1) Odometer Normalization - OdometerReading record created linked to asset_id and cost_id in expenses.py create_expense() 2) Provider Validation Score increment (+10, max 100) with auto is_verified=True at 100 3) Gamification Hooks - APP_USAGE_EXPENSE (10 XP) always awarded, PROVIDER_VALIDATION_HELP (100 XP) on validation 4) All wrapped in single atomic transaction with db.commit() at end. Seed script updated with 2 new action keys. Syntax check and sync_engine (1287 OK) passed.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-07-10 00:01:09 **Technikai Összefoglaló:** P0 Smart Expense Workflow (Phase 1) implemented: 1) Odometer Normalization - OdometerReading record created linked to asset_id and cost_id in expenses.py create_expense() 2) Provider Validation Score increment (+10, max 100) with auto is_verified=True at 100 3) Gamification Hooks - APP_USAGE_EXPENSE (10 XP) always awarded, PROVIDER_VALIDATION_HELP (100 XP) on validation 4) All wrapped in single atomic transaction with db.commit() at end. Seed script updated with 2 new action keys. Syntax check and sync_engine (1287 OK) passed. ⏱️ *Az idő rögzítve.*
Sign in to join this conversation.