[Backend] P0 - Smart Expense Workflow: Adatintegritás és Gamifikáció (Fázis 1) #402
Notifications
Total Time Spent: 12 minutes
kincses
12 minutes
No due date set.
Dependencies
No dependencies set.
Reference: kincses/service-finder#402
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 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)
Odometer Normalizáció: - A
POST /expenses/végponton a beérkezőodometer_readingadatot nem (csak) a JSONBdatamezőbe kell menteni.vehicle.odometer_readingstáblában, összekötve azasset_id-vel és a generáltcost_id-vel.Szolgáltató Validációs Logika (Validation Score):
service_provider_id-t, le kell kérdezni a szolgáltatót.validation_score < 100, növelni kell az értékét (pl. +10 ponttal).is_verifiedstátusztTrue-ra kell állítani.Gamifikációs Horgok (Gamification Hooks):
GamificationServiceossza ki azAPP_USAGE_EXPENSE(pl. 10 XP) alap jutalmat a felhasználónak.PROVIDER_VALIDATION_HELP(pl. 100 XP) prémium jutalmat is.Tranzakció Kezelés:
✅ Elfogadási Kritériumok (DoD)
vehicle.odometer_readingstáblába.▶️ Munka megkezdve: 2026-07-09 23:48:17
✅ 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.