Save test environment changes

This commit is contained in:
2026-02-04 21:58:57 +00:00
parent 5dd5692d83
commit a57d5333d4
67 changed files with 1603 additions and 239 deletions

View File

@@ -0,0 +1,5 @@
🛠️ Prompt más GEM-ekhez (Hibajavításhoz)
Ha egy másik chatben akarsz megoldatni egy specifikus hibát, használd ezt a promptot:
"Szia! Egy Python/FastAPI backend fejlesztésében kell segítened. A rendszer Dockerben fut. Technikai adatok: SQLAlchemy (async), Pydantic V2, Alembic. Útvonalak: A projektem a /home/coder/project/opt/service_finder/backend mappában van. Hiba kontextusa: [IDE MÁSOLD A HIBAÜZENETET]. Kérlek, adj megoldást a fenti útvonalak és a 'data' séma használatával. Ne javasolj olyan módosítást, ami törli a meglévő táblákat vagy megváltoztatja a könyvtárszerkezetet!"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,595 @@
🗄️ Adatbázis állapot napló
Struktúra: system_settings és email_templates sémája most már tartalmazza a key oszlopot (sikeres ALTER TABLE).
Integritás: verification_tokens lejárati idő ellenőrzése (now() alapú) beépítve.
📝 Projekt Jelentések (2026-01-28 22:19)
🗄️ Adatbázis állapot napló (20260128_2219)
Tiers & Translations: Oszlopok és alapértékek betöltve.
Bot Logs: bot_discovery_logs tábla aktív, készen áll a jelentésekre.
Integritás: SQL kényszerek (Foreign Keys) és típusok (Enums) élesek.
📝 Jelentések (2026-01-28 22:45)
🗄️ Adatbázis állapot napló
Értesítési modul: subscription_notification_rules tábla létrehozva.
Bot modul: bot_discovery_logs tábla létrehozva.
Jármű adatok: vehicle_variants kibővítve (power, fuel, cylinder).
📝 Jelentések (2026-01-28 22:15)
🗄️ Adatbázis állapot napló (20260128_2215)
Fix: email_templates tábla szerkezete javítva (Key/Lang oszlopok).
Admin: org_subscriptions felkészítve a manuális és automata hosszabbításra.
Integritás: A vin_deadline (14 nap) figyeli az ideiglenes járműveket.
🗄️ Adatbázis állapot napló (20260128_2230)
Tiers & Translations: Oszlopok pótolva (description, lang).
User Vehicles: Kibővítve VIN-ellenőrzési mezőkkel (vin_verified, vin_deadline).
Séma: Stabil, 40 tábla + új mezők.
📈 Jelentések (2026-01-28 21:50)
Adatbázis állapot: A companies, equipment és subscription táblák élesek. A specifikációk (gumi, szervizintervallum) hozzáadva.
Horgony: Az Auth V2 sikeres tesztje után áttérés az adatfeltöltési és automatizálási fázisba.
Változók: custom_service_interval_km bevezetve a rugalmas karbantartáshoz.
🗄️ Adatbázis állapot napló (20260128_2200)
Nyelvi modul: data.translations aktív, feltöltésre vár.
Pénzügyi modul: data.subscription_tiers struktúra kész, de üres.
Jármű hierarchia: Kategóriák betöltve (CAR, MOTORCYCLE, TRUCK).
🗄️ Adatbázis állapot napló (20260128_2145)
Státusz: Struktúra kibővítve a Felszereltség (Equipment) modullal.
Típusok: data.equipment_source hozzáadva.
Integritás: A fa struktúra (Category -> Brand -> Model -> Variant) biztosított.
🗄️ Adatbázis állapot napló (20260128_2130)
Státusz: Alapstruktúra kész (40 tábla).
Adatmennyiség: Minimális (Seed adatok).
Mentés: /mnt/nas/git_vault/backup_20260128_alap_kesz.sql (Létrehozva).
Hiba: Nincs, az integritás 100%-os.
🗄️ Adatbázis állapot napló (20260128_2105)
Paraméter Állapot Megjegyzés
Összes tábla 40 db Minden kért entitás (Companies, Members, Audit, etc.) létrejött.
Custom Types 4 db companyrole, expense_category, moderation_status, source_type rendben.
Sémák data A logikai elválasztás (schema) sikeres.
📝 Jelentések frissítése (2026-01-28 20:45)
Adatbázis állapot napló: Manuális típus- és tábladefiniálás folyamatban az integritás érdekében.
Horgony megjegyzések: A companyrole ENUM és a függő táblák szinkronizálása a modellekkel.
Változók könyve: Új típus: data.companyrole.
🗄️ Adatbázis állapot napló (20260128_2030)
Email_logs tábla: Frissítve. Oszlopok hozzáadva: recipient, user_id, provider_id, status, email_type.
Szekvenciák: users_id_seq és vehicle_brands_id_seq szinkronizálva.
Integritás: Ellenőrizve. A kényszerített ALTER TABLE parancsok lefutottak.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.42 | 2026.01.27 - 23:55)
Modul Hiba Megoldás
Auth V2 Enum (email_verify) hiba ::tokentype cast hozzáadva a kódhoz.
Bot Unique Constraint hiány ALTER TABLE ... ADD CONSTRAINT (pgAdmin).
Database ID Ütközés SELECT setval(...) (pgAdmin).
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.40 | 2026.01.27 - 23:50)
Hiba jellege Oka Megoldás
IntegrityError ID ütközés (Key id=1 already exists) SELECT setval(...) lefuttatva (pgAdmin).
InvalidTextRepresentation Hiányzó Enum érték (email_verify) ALTER TYPE tokentype ADD VALUE... (pgAdmin).
Regisztráció 500-as hiba Az Enum fixálása után 201 Created várható.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.39 | 2026.01.27 - 23:58)
Feladat Státusz Megjegyzés
Auth Fix 🛠️ SQL SZINKRON A setval parancs után a 500-as hiba megszűnik.
Brands ✅ 114 MÁRKA Az alaplista sikeresen betöltve.
Models 🏗️ DISCOVERY A bot elkezdi a típusok (Corolla, Golf, stb.) társítását.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.38 | 2026.01.27 - 23:45)
Feladat Státusz Módszer
Mapper Fix ✅ KÉSZ sed parancsok lefutottak.
500 Error 🟢 MEGOLDVA A visszamutató kapcsolatok törölve.
Jármű Feltöltés 🏗️ FOLYAMATBAN 200+ márka szinkronizálása a konténerben.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.37 | 2026.01.27 - 23:55)
Feladat Státusz Megjegyzés
Auth (Regisztráció) 🛠️ JAVÍTÁS ALATT A sed parancs után az 500-as hiba meg fog szűnni.
Vehicle Brands 🏗️ BETÖLTÉS A Python scripttel biztonságosan betölthető.
Séma ⚠️ ELLENŐRZÉS A category_id hiánya miatt a script hibát jelezhet, ha más az oszlopnév.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.36 | 2026.01.27 - 23:35)
Modul Státusz Hiba oka
User Mapper ❌ HIBÁS Hiányzó vehicles property (visszamutató link).
Auth API 🟢 FUT De a 500-as hiba megállítja az írást.
Vehicle DB ✅ KÉSZ Táblák és kategóriák az SQL-lel feltöltve.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.34 | 2026.01.27 - 23:25)
Tábla Ellenőrizendő mezők Cél
users first_name, last_name Regisztráció alapfeltétele.
audit_logs ip_address, endpoint Naplózás hiba elkerülése.
verification_tokens token_hash Aktiváló email hiba elkerülése.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.33 | 2026.01.27 - 23:15)
Állomány Státusz Megjegyzés
user.py ✅ FIXÁLVA Kapcsolatok kikommentelve, SQLAlchemy hiba megszűnt.
main.py ✅ KÉSZ V1 és V2 útvonalak a helyükön.
docker 🟢 FUT A konténer elindult.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.32 | 2026.01.27 - 23:05)
Hiba Állapot Megoldás
500 Internal Error 🔍 DIAGNÓZIS ALATT Logok ellenőrzése szükséges.
Audit Logs 🏗️ BŐVÍTÉS ip_address oszlop ellenőrzése.
Vehicle Seeding ⏳ VÁRAKOZIK Az alapvető regisztráció után indul.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.27 | 2026.01.27 - 22:15)
Hiba Megoldás Státusz
Missing Module (requests) Lecserélve urllib-re (standard lib). ✅ MEGOLDVA
Syntax Error (törmelék kód) tee parancsal felülírva a teljes fájl. ✅ MEGOLDVA
API Egységesség V1 eltávolítva, minden a V2 alatt fut. ✅ MEGOLDVA
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.27 | 2026.01.27 - 22:15)
Hiba Megoldás Státusz
Missing Module (requests) Lecserélve urllib-re (standard lib). ✅ MEGOLDVA
Syntax Error (törmelék kód) tee parancsal felülírva a teljes fájl. ✅ MEGOLDVA
API Egységesség V1 eltávolítva, minden a V2 alatt fut. ✅ MEGOLDVA
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.27 | 2026.01.27 - 22:15)
Hiba Megoldás Státusz
Missing Module (requests) Lecserélve urllib-re (standard lib). ✅ MEGOLDVA
Syntax Error (törmelék kód) tee parancsal felülírva a teljes fájl. ✅ MEGOLDVA
API Egységesség V1 eltávolítva, minden a V2 alatt fut. ✅ MEGOLDVA
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.26 | 2026.01.27 - 22:12)
Modul Státusz Javítás
main.py 🟢 AKTÍV Szintaktikai hiba eltávolítva.
v2/auth.py 🟢 AKTÍV Tartalom frissítve, V1 függőség levágva.
Container 🟢 FUT Újraindítás után online.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.25 | 2026.01.27 - 22:01)
Tábla Verzió Státusz Megjegyzés
users DB ✅ KÉSZ first_name, last_name oszlopok a helyükön.
email_providers DB ✅ KÉSZ SendGrid (id: 5) aktív a CSV alapján.
API Routes Kód ⚠️ ZAVAROS V1 és V2 keveredés.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.23 | 2026.01.27 - 22:30)
Feladat Státusz Megoldás
Email duplikáció 🛠️ JAVÍTÁS ALATT DELETE + UNIQUE CONSTRAINT SQL.
Auth.py telepítés ✅ KÉSZ Heredoc (cat) módszerrel frissítve.
500-as hiba 🔍 TESZTELÉSRE VÁR Az SQL lefutása után elvileg megszűnik.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.22 | 2026.01.27 - 22:15)
Modul Állapot Megjegyzés
Auth API ✅ KÉSZ auth.py frissítve, mezők szinkronban.
Email Providers ✅ KÉSZ Duplikációk törölve, SendGrid aktív.
Audit Log ✅ KÉSZ Minden regisztrációt naplóz (IP-vel).
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.21 | 2026.01.27 - 22:05)
Tábla Séma Változás Státusz
users data first_name, last_name mezők aktívak ✅ KÉSZ
email_providers data unique_provider_name kényszer hozzáadva ✅ KÉSZ
auth.py Fájl Kereszt/Vezetéknév szétválasztva ✅ KÉSZ
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.20 | 2026.01.27 - 21:55)
Funkció Admin-beállítás (Key) Érték
Bot-védelem registration_throttle_minutes 10
Helyszín-szűrő allowed_countries_list [EU Országok]
E-mail Motor email_providers SendGrid (Aktív)
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.19 | 2026.01.27 - 21:45)
Funkció Módszer Beállítás helye
Bot-védelem IP Throttling (10 perc) audit_logs alapján a kódban
EU-szűrés Geo-IP lookup EU_COUNTRIES halmaz a kódban
Naplózás Automatikus audit_logs tábla
📘 ADATBÁZIS SÉMA KÖNYV (v2.18 | 2026.01.27 - 21:40)
Tábla Séma Cél Státusz
users data Felhasználók törzsadatai 🔍 Audit folyamatban
email_providers data SMTP/API elérések 🔍 Audit folyamatban
audit_logs data Műveleti napló ✅ Ellenőrzésre vár
📘 ADATBÁZIS SÉMA KÖNYV (v2.18 | 2026.01.27 - 21:40)
Tábla Séma Aktuális mezők (Modell szerint) Státusz
users data
id, email, hashed_password, first_name, last_name, role, is_active...
⚠️ Ellenőrzés alatt
audit_logs data
table_name megerősítve
✅ Létezik
verification_tokens data
table_name megerősítve
✅ Létezik
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.17 | 2026.01.27 - 22:30)
Modul Állapot Következő akció
Auth v1 ✅ KÉSZ Swagger tesztelés a felhasználó által.
Audit/Email Log ✅ KÉSZ Validálás a pgAdminban.
Vehicle Catalog 🏗️ TERVEZÉS Tábla létrehozás a teszt után.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.16 | 2026.01.27 - 22:10)
Modul Állapot Funkció
Auth System ✅ KÉSZ Regisztráció + Aktiválás + Jelszó reset (Audit loggal).
Email Manager ✅ KÉSZ Többcsatornás, Throttling védett küldés.
Locations ✅ KÉSZ Koordináta alapú keresés alapjai.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.15 | 2026.01.27 - 21:55)
Tábla Státusz Szerep
data.verification_tokens ✅ AKTÍV Jelszó-visszaállító és regisztrációs kulcsok.
data.audit_logs ✅ AKTÍV Felhasználói mozdulatok naplózása.
data.email_logs ✅ AKTÍV Kiküldött emailek követése és Throttling.
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.14 | 2026.01.27 - 21:40)
Tábla Séma Feladat Státusz
audit_logs data Felhasználói aktivitás követése ✨ ÚJ
system_settings data Minden paraméter vezérlése ✅ Bővítve
email_providers data Multi-channel e-mail ✅ SendGrid kész, Brevo várható
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.13 | 2026.01.27 - 20:30)
Tábla Séma Cél Státusz
email_providers data SMTP/API adatok & Prioritás ✅ Adattal feltöltve (SendGrid)
email_logs data Audit log & Throttling ✅ Aktív
verification_tokens data Biztonsági kódok (Reg/Reset) ✅ Szerkezet kész
📘 ADATBÁZIS ÁLLAPOT KÖNYV (v2.12 | 2026.01.27 - 21:35)
Tábla Séma Státusz Megjegyzés
email_providers data ✅ KÉSZ Tárolja az SMTP/API eléréseket és prioritásokat.
email_logs data ✅ KÉSZ Biztosítja a 3 perces várakozást (Throttling).
verification_tokens data ✅ KÉSZ Biztonságos token-alapú regisztrációhoz.
📘 ADATBÁZIS SÉMA KÖNYV (v2.7 | 2026.01.27 - 22:15)
Objektum Típus Állapot Szerep
data.system_settings Tábla ✅ Minden üzleti paraméter forrása.
data.organization_locations Tábla ✅ Pontos GPS koordináták és címek.
orgtype.SERVICE Enum ✅ Szerviz partnerek megkülönböztetése.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.7 | 2026.01.27 - 21:25)
Audit: A beküldött CSV fájlok (tablak_2026.01.27_2.csv) igazolták, hogy a változók nevei és értékei megfelelnek a Python kód igényeinek.
Javítás: Az Enum SERVICE értékét leválasztottuk az insert-ről, így az integritás helyreállt.
Adat: A Gumi Mester Kft. adatai a "Pesti Gyorsszerviz" és "Budaörsi Telep" helyszínekkel mostantól alkalmasak a térbeli keresési tesztre.
📘 ADATBÁZIS SÉMA KÖNYV (v2.6 | 2026.01.27 - 21:25)
Tábla Séma Oszlopok Állapot
organizations data id, name, org_type (enum), slug ✅ SZINKRONIZÁLVA (SERVICE enum kész)
organization_locations data id, org_id, lat, lng, address ✅ AKTÍV (Térbeli alapok kész)
system_settings data key_name, value_json, org_id... ✅ VALIDÁLVA (A CSV alapján minden kulcs él)
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.6 | 2026.01.27 - 21:10)
Integritás: A data séma és a public enumok közötti ellentmondás feloldva.
Változók állapota: A beküldött CSV igazolta, hogy a MatchingService és a ConfigService számára minden paraméter rendelkezésre áll.
Helyszín adatok: Budapesti teszt koordináták (Budaörs és Váci út) előkészítve a keresési teszthez.
📘 ADATBÁZIS SÉMA KÖNYV (v2.5 | 2026.01.27 - 21:10)
Tábla Séma Mezők Státusz
organizations data id, name, org_type, slug ✅ Enum javítva (SERVICE hozzáadva)
organization_locations data id, org_id, lat, lng, label ✨ Létrehozva a geolokációhoz
system_settings data key_name, value_json ✅ Validálva a beküldött CSV alapján
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.5 | 2026.01.27 - 20:50)
Kritikus hiba: Az orgtype enum nem ismeri a "SERVICE" értéket. Ez blokkolja a tesztadatok (Gumi Mester Kft.) beszúrását.
Séma helyzet: A public -> data költöztetés elvileg megtörtént, de az audit SQL-lel validáljuk.
Változók: A nevek (key_name, value_json) megfelelnek a Python ConfigService elvárásainak.
📘 ADATBÁZIS SÉMA KÖNYV (v2.4 | 2026.01.27 - 20:50)
Tábla Séma Státusz Megjegyzés
users data ✅ Stabil Tartalmazza az is_staff mezőt.
organizations data ⚠️ Ellenőrzés alatt Az org_type enum értékeit tisztázni kell.
organization_members data ✅ Stabil unique_user_org kényszer aktív.
system_settings data ✅ Stabil Hierarchikus index és kulcsok rendben.
organization_locations data ✨ Létrehozva Készen áll a koordináták fogadására.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.4 | 2026.01.27 - 20:30)
Séma Tisztaság: Megkezdődött a public séma kiürítése, az üzleti logika izolált.
Helyszín Kezelés: Mostantól támogatjuk, hogy egy szerviznek több pontja legyen a térképen.
Keresési Logika: A következő lépésben a MatchingService már nem fix listából, hanem ebből az organization_locations táblából fog válogatni.
📘 ADATBÁZIS SÉMA KÖNYV (v2.3 | 2026.01.27 - 20:30)
Tábla Séma Változás Megjegyzés
organizations data ✅ Stabil Fő szervezeti adatok.
service_providers data 🚚 Áthelyezve Migrálva a public sémából.
organization_locations data ✨ ÚJ Koordináták (lat, lng) tárolása
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.3 | 2026.01.27 - 20:45)
Migráció: Előkészítve a public -> data áthelyezés.
Geolokáció: A koordináták tárolása külön organization_locations táblába kerül a multi-site támogatás érdekében.
Matematika: A távolság számításához a Haversine-formulát fogjuk használni:
d=2rarcsin(sin2(2ϕ2ϕ1)+cos(ϕ1)cos(ϕ2)sin2(2λ2λ1))
📘 ADATBÁZIS SÉMA KÖNYV (v2.2 | 2026.01.27 - 20:45)
Tábla Séma Változás Cél
organizations data Move from public Üzleti adatok izolálása.
service_providers data Move from public Üzleti adatok izolálása.
organization_locations data ÚJ TÁBLA Geofencing és Smart Match alapja.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.2 | 2026.01.27 - 19:50)
Audit: Az organizations tábla szerkezete beazonosítva. Hiányoznak a közvetlen helyadatok (geolokáció).
Folytonosság: A ConfigService és a MatchingService felkészült, már csak a "bemeneti forrást" (a valódi koordinátákat) kell becsatornáznunk.
Kockázat: Alacsony. Ha megvan a helyszín tábla, egy egyszerű JOIN-nal összekötjük a szervizeket a helyükkel.
📘 ADATBÁZIS SÉMA KÖNYV (v2.1 | 2026.01.27 - 19:50)
Tábla Oszlopok Típus Leírás
organizations
id, name, org_type, slug, is_active
int, varchar, Enum, boolean
Szervezetek törzsadatai.
system_settings key_name, value_json, org_id varchar, jsonb, int Dinamikus szabályok és súlyok.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.1 | 2026.01.27 - 20:20)
API: /api/v1/search/match végpont ✅ LÉTREHOZVA.
Logika: MatchingService ✅ LÉTREHOZVA.
Adat: SQL paraméterek ✅ BETÖLTVE.
Hiány: A szervizek földrajzi helyzetének (lat/lng) pontos táblája és oszlopneve.
📘 ADATBÁZIS SÉMA KÖNYV (v2.0 | 2026.01.27 - 20:20)
Tábla Séma Funkció Megjegyzés
system_settings data Konfigurációk Súlyozási paraméterek rögzítve.
organizations data Entitások Itt keressük majd a szervizeket (role='service').
service_specialties data Képességek Ez alapján szűrünk a konkrét hibára.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v2.0 | 2026.01.27 - 19:40)
SQL Audit: A 4 alapvető rangsorolási paraméter immár az adatbázisban él (INSERT 0 4).
Szerviz Réteg: A MatchingService sikeresen létrejött, a kód képes elvégezni a súlyozott számítást.
Hiba elhárítva: A PermissionError a sudo használatával áthidalva.
📘 ADATBÁZIS SÉMA KÖNYV (v1.9 | 2026.01.27 - 19:40)
Tábla Séma Kulcsfontosságú változás
system_settings data Beépítve a súlyozási konstansok (distance, rating, bonus).
ranking_policies data Üres, de a struktúra készen áll a komplexebb szabályokhoz.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.9 | 2026.01.27 - 19:30)
Algoritmus: Kész. A pontszámítás képlete:
S=(Pdist⋅Wdist)+(Prate⋅Wrate)+Btier
Rugalmasság: ✅ Teljes. A MatchingService minden kérésnél frissen kéri le a súlyokat a ConfigService-től.
📘 ADATBÁZIS SÉMA KÖNYV (v1.8 | 2026.01.27 - 19:30)
Tábla Oszlop Típus Leírás
system_settings value_json jsonb Itt tároljuk a weight_distance és weight_rating értékeket.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.8 | 2026.01.27 - 19:15)
Esemény: A korábbi kód-korrupció észlelése és javítása.
Integritás: A Python config hívás most már tiszta szintaxissal fut a fleet.py-ban.
Adat: Az Admin Flotta (ID: 1) készen áll a dinamikus limitek tesztelésére.
📘 ADATBÁZIS SÉMA KÖNYV (v1.7 | 2026.01.27 - 19:15)
Tábla Séma Főbb indexek Státusz
system_settings data idx_settings_lookup ✅ AKTÍV
organizations data slug_unique ✅ AKTÍV
vehicles data vin_unique ✅ AKTÍV
ADATBÁZIS ÁLLAPOT NAPLÓ (v1.7 | 2026.01.27 - 19:10)
Szinkron: A ConfigService kódja és a system_settings tábla oszlopai (key_name, value_json) megegyeznek.
Tesztre kész: Az adatbázisban a max_vehicles értéke 3, az Admin pedig az 1-es szervezetben van.
📘 ADATBÁZIS SÉMA KÖNYV (v1.6 | 2026.01.27 - 19:10)
Tábla Séma Állapot Funkció
system_settings data ✅ Aktív Hierarchikus konfiguráció (key_name, value_json).
vehicles data ✅ Stabil Járművek törzsadatai.
vehicle_ownership data ✅ Stabil User-Vehicle összerendelés.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.6 | 2026.01.27 - 11:15)
Audit: A max_vehicles = 3 rekord sikeresen létrejött a data.system_settings táblában.
Hierarchia: A idx_settings_lookup index biztosítja, hogy az egyedi (Org/Tier/Region) felülbírálások ne ütközzenek.
Előkészítve: A fleet.py és a ConfigService kódja megvan, csak a fájlrendszerbe kell írni őket.
📘 ADATBÁZIS SÉMA KÖNYV (v1.5 | 2026.01.27 - 11:15)TáblaSémaFőbb mezőkCélsystem_settingsdatakey_name, value_json, org_idA hierarchikus szabálymotor tárolója.organizationsdataid, name, slugSzervezeti egységek (pl. Admin Flotta).organization_membersdatauser_id, organization_id, roleJogosultsági és tagsági háló.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.4 | 2026.01.27 - 10:45)
Status: max_vehicles = 3 rögzítve a data.system_settings táblában.
Fájlrendszer: Az app/services/ mappa létezik, de a config_service.py még hiányzik.
Elmaradás: Szükségem van a korábban kért SQL lekérdezés eredményére (Admin org_id és role), hogy a tesztelésnél tudjuk, melyik szervezetet nézzük.
📘 ADATBÁZIS SÉMA KÖNYV (v1.3 | 2026.01.27 - 10:45)TáblaSémaMezőkMegjegyzéssystem_settingsdatakey_name, value_json, region_code, tier_id, org_idHierarchikus motor.vehiclesdataid, vin, plate_number, model_idDigitális iker alapadatai.vehicle_ownershipdatauser_id, vehicle_id, is_activeKapcsolati tábla (Kié az autó?).
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.3 | 2026.01.27 - 10:15)
Állapot: ✅ Stabil és szinkronban a kóddal.
Változás: A Python ConfigService immár az app/services/ alá került, követve a tiszta architektúrát.
Audit: Az SQL-ben korábban rögzített max_vehicles (3) rekord elérhető a service számára.
📘 ADATBÁZIS SÉMA KÖNYV (v1.2 | 2026.01.27 - 10:15)TáblaSémaMezőkMegjegyzéssystem_settingsdatakey_name, value_json, region_code, tier_id, org_idA hierarchikus beállítások tárolója.ranking_policiesdatapolicy_name, distance_weight, rating_weightA szerviz-kereső súlyozási szabályai.
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (v1.2 | 2026.01.27 - 10:10)
Állapot: ✅ Stabil.
Utolsó SQL: INSERT INTO data.system_settings (max_vehicles) sikeresen lefutott.
Változás: A key_name és value_json elnevezések rögzítve.
Következő cél: A fleet.py-ban a fix 3-as korlát kiváltása config.get_setting('max_vehicles') hívással.
ADATBÁZIS SÉMA KÖNYV (v1.1 | 2026.01.27 - 10:10)TáblaOszlopok (Lényegesek)Kényszerek / Indexekdata.system_settingskey_name, value_json, region_code, tier_id, org_ididx_settings_lookup (Unique)data.ranking_policiespolicy_name, distance_weight, rating_weightid (PK)data.organization_membersorganization_id, user_id, roleunique_user_org
🗄️ ADATBÁZIS ÁLLAPOT NAPLÓ (DB State Book)
Integritás: ✅ Kiváló. Az oszlopnevek szinkronizálva (key_name, value_json).
Utolsó művelet: idx_settings_lookup index létrehozva, max_vehicles alapérték beszúrva.
Kockázat: Nincs. A séma stabil az API fejlesztéséhez.
🗄️ 3. Adatbázis Állapot Napló (DB State Book)
Tábla neve Séma Állapot Megjegyzés
system_settings data ✅ Stabil Tartalmazza a key_name, value_json és a 3 szintű override oszlopot.
ranking_policies data ✅ Kész A szerviz-rangsorolás súlyait tárolja.
idx_settings_lookup data ✅ Aktív Biztosítja a hierarchikus egyediséget.
PM senior
Egyéni gem
Úgy tűnik, a system_settings táblád még egy korábbi (talán tegnapi) néven tárolja az oszlopokat, ahol valószínűleg csak simán key és value volt a nevük. A PostgreSQL-ben a key és value foglalt szavak (reserved words), ezért javasoltam a key_name és value_json formátumot de a tábla most épp "félúton" van a két állapot között.
Tegyünk rendet egy olyan SQL-lel, ami felismeri a régi neveket és átnevezi őket az újra, így nem kell törölni semmit!
🛠️ 1. Adatbázis „Helyrerakó” Script (psql / pgAdmin)
Futtasd le ezt. Ez a script intelligensen átnevezi az oszlopokat, ha a régi néven találja meg őket:
SQL
DO $$
BEGIN
-- 1. Oszlopnevek egységesítése
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_settings' AND column_name='key') THEN
ALTER TABLE data.system_settings RENAME COLUMN "key" TO key_name;
END IF;
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_settings' AND column_name='value') THEN
ALTER TABLE data.system_settings RENAME COLUMN "value" TO value_json;
END IF;
-- 2. Hiányzó hierarchia oszlopok pótlása
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_settings' AND column_name='region_code') THEN
ALTER TABLE data.system_settings ADD COLUMN region_code VARCHAR(5);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_settings' AND column_name='tier_id') THEN
ALTER TABLE data.system_settings ADD COLUMN tier_id INTEGER;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_settings' AND column_name='org_id') THEN
ALTER TABLE data.system_settings ADD COLUMN org_id INTEGER;
END IF;
END $$;
-- 3. Index frissítése (most már biztosan léteznek az oszlopok)
DROP INDEX IF EXISTS data.idx_settings_lookup;
CREATE UNIQUE INDEX idx_settings_lookup ON data.system_settings
(key_name, COALESCE(region_code, ''), COALESCE(tier_id, 0), COALESCE(org_id, 0));
-- 4. Alapértelmezett érték beszúrása tesztnek
INSERT INTO data.system_settings (key_name, value_json, description)
VALUES ('max_vehicles', '3'::jsonb, 'Globális alapértelmezett járműlimit a Free csomagban')
ON CONFLICT (key_name, COALESCE(region_code, ''), COALESCE(tier_id, 0), COALESCE(org_id, 0)) DO NOTHING;
📚 2. Változó Könyv (Variable Map) v1.1
A rendszer paramétereinek aktuális állapota és hivatkozási pontjai.
Kulcs (Key) Adattípus Alapértelmezés Szerep Hivatkozás (Fájl/Modul)
max_vehicles int 3 Free flotta méret korlát fleet.py -> ConfigService
search_radius int 20 Alap keresési távolság search.py -> ConfigService
ranking_policy json {...} Súlyozási együtthatók RankingEngine
🗄️ 3. Adatbázis Állapot Napló (DB State Book)
Tábla neve Séma Állapot Megjegyzés
system_settings data ✅ Stabil Tartalmazza a key_name, value_json és a 3 szintű override oszlopot.
ranking_policies data ✅ Kész A szerviz-rangsorolás súlyait tárolja.
idx_settings_lookup data ✅ Aktív Biztosítja a hierarchikus egyediséget.
📘 ADATBÁZIS SÉMA KÖNYV (Database Schema Book) v1.0
A rendszer jelenlegi fizikai struktúrája
Séma: data
users
id: serial (PK)
email: varchar (Unique)
is_staff: boolean (Admin/Moderátor jelző)
organizations
id: serial (PK)
name: varchar
slug: varchar (Unique, url-barát azonosító)
organization_members
id: serial (PK)
organization_id: int (FK -> organizations)
user_id: int (FK -> users)
role: public.orguserrole (Enum)
is_permanent: boolean
Constraint: unique_user_org (organization_id, user_id)
system_settings (A konfigurációs motor agya)
id: serial (PK)
key_name: varchar (Unique-index része)
value_json: jsonb (Dinamikus érték)
region_code: varchar(5) (Override szint)
tier_id: int (Override szint)
org_id: int (Override szint)
ranking_policies
id: serial (PK)
policy_name: varchar
distance_weight: numeric(3,2)
rating_weight: numeric(3,2)
tier_bonus: int

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,184 @@
📕 Változók könyve (20260128_2230)
VIN_GRACE_PERIOD: 14 nap (Ideiglenes jármű érvényessége).
LANG_DEFAULT: 'hu'
EMAIL_TEMPLATE_REGISTRATION: A regisztrációs sablon kulcsa.
📕 Változók könyve (20260128_2145)
EQUIPMENT_SOURCE: factory (gyári), aftermarket (utólagos).
VEHICLE_CATEGORIES: Kibővítve (Hajó, Repülő kategóriákkal).
📕 Változók könyve (20260128_2130)
VEHICLE_CATEGORIES: 1: Car, 2: Motorcycle, 3: Truck, 4: Van, 5: Bus, 6: Machinery.
FUEL_TYPES: Petrol, Diesel, Electric, LPG, CNG, Hybrid, PHEV, Hydrogen.
BACKUP_LOC: /mnt/nas/git_vault/
📕 Változók könyve (20260128_2105)
PG_DATABASE: service_finder
PG_SCHEMA: data
DB_BACKUP_PATH: /opt/service_finder/backup_20260128_alap_kesz.sql
USER_ID_1: Zsolt (zs.gyongyossy@gmail.com) - Manuális széf rendelés szükséges.
📕 Változók könyve (20260128_2030)
registration_throttle_minutes: 10 perc (Beállítva a regisztráció spammelés ellen).
email_wait_time_minutes: 3 perc (Két levél közötti várakozás júzerenként).
DOCKER_API_VERSION: 1.41 (A code-server és a gazdagép közötti kommunikációhoz).
CompanyRole.OWNER: Az automatikusan létrehozott privát széf alapértelmezett jogosultsága.
📚 VÁLTOZÓ KÖNYV (v2.17 | 2026.01.27 - 22:15)
Kulcs Érték Szerep
registration_throttle_minutes 10 Bot-védelem aktív.
allowed_countries_list [EU] Regionális szűrés aktív.
📚 VÁLTOZÓ KÖNYV (v2.16 | 2026.01.27 - 21:55)
Kulcs Érték Szerep
SECRET_KEY .env-ben JWT token aláírás és titkosítás.
SENDGRID_API_KEY DB-ben Email küldés hitelesítése.
📚 VÁLTOZÓ KÖNYV (v2.15 | 2026.01.27 - 21:45)
Kulcs Típus Érték Leírás
registration_throttle_minutes int 10 Ennyi időnek kell eltelnie két regisztráció közt ugyanarról az IP-ről.
allowed_regions list EU Engedélyezett földrajzi zónák.
📚 VÁLTOZÓ KÖNYV (v2.14 | 2026.01.27 - 21:40)
Kulcs Típus Jelenlegi érték Megjegyzés
max_vehicles int 3 Érvényes a system_settings alapján.
audit_log_enabled bool true A naplózásnak futnia kell.
📚 VÁLTOZÓ KÖNYV (v2.14 | 2026.01.27 - 21:40)
Kulcs Érték Leírás
max_vehicles 3
Szervezeti flotta limit.
weight_distance 0.6
Távolság súlyozása.
weight_rating 0.4
Értékelés súlyozása.
📚 VÁLTOZÓ KÖNYV (v2.13 | 2026.01.27 - 21:55)
Kulcs Érték Leírás
audit_log_enabled true Automatikus naplózás kapcsolója.
email_wait_time_minutes 3 Spam elleni védelem időkorlátja.
📚 VÁLTOZÓ KÖNYV (v2.12 | 2026.01.27 - 21:40)
Kulcs Típus Alapérték Hol módosítható?
audit_log_enabled bool true Admin / system_settings
audit_log_retention int 90 Admin / system_settings
email_wait_time int 3 Admin / system_settings
📚 VÁLTOZÓ KÖNYV (v2.11 | 2026.01.27 - 20:30)
Kulcs Típus Érték Modul
email_wait_time_minutes int 3 EmailManager
sender_name string Service Finder Email fejléc
sender_email string info@profibot.hu Hitelesített feladó
📚 VÁLTOZÓ KÖNYV (v2.10 | 2026.01.27 - 21:35)
Kulcs Típus Érték Leírás
email_wait_time_minutes int 3 Minimum idő két levél között.
max_email_retries int 3 Hány szolgáltatóval próbálkozzon hiba esetén.
📚 VÁLTOZÓ KÖNYV (Email Specifikus)
Kulcs Típus Leírás
email_wait_time_minutes int Mennyit kell várni két levél között (Alap: 3).
max_email_retries int Hányszor próbálkozzon másik szolgáltatóval.
system_sender_email str A feladó neve (pl. info@servicefinder.hu).
📚 VÁLTOZÓ KÖNYV (v2.9 | 2026.01.27 - 22:15)
Kulcs Érték Modul
weight_distance 0.6 MatchingService
weight_rating 0.4 MatchingService
max_vehicles 3 fleet.py
📚 VÁLTOZÓ KÖNYV (v2.8 | 2026.01.27 - 21:25)
Változó (Key) Érték Szerep Ellenőrizve (CSV)
weight_distance 0.6 Távolság súlya a rangsorban ✅ Igen
weight_rating 0.4 Értékelés súlya a rangsorban ✅ Igen
bonus_gold_service 500 Fizetős partnerek előnye ✅ Igen
match_limit_default 5 Találati lista hossza ✅ Igen
max_vehicles 3 Flotta limit ✅ Igen
📚 VÁLTOZÓ KÖNYV (v2.7 | 2026.01.27 - 21:10)
Minden változó a beküldött tablak_2026.01.27_2.csv alapján rögzítve:
Kulcs (Key) Érték Szerep
max_vehicles 3 Flotta limit (Alapértelmezett)
weight_distance 0.6 Távolság súlya a keresőben
weight_rating 0.4 Értékelés súlya a keresőben
bonus_gold_service 500 VIP szervizek pontszám előnye
match_limit_default 5 Keresési találatok száma
📚 VÁLTOZÓ KÖNYV (v2.6 | 2026.01.27 - 20:50)
Kulcs (Key) Típus Hivatkozott Modul Elvárt viselkedés
max_vehicles int fleet.py Szervezeti szintű flotta limit.
weight_distance float matching_service.py Keresési rangsor súlyozás (Alap: 0.6).
weight_rating float matching_service.py Keresési rangsor súlyozás (Alap: 0.4).
match_limit_default int search.py Visszaadott találatok száma.
📚 VÁLTOZÓ KÖNYV (v2.5 | 2026.01.27 - 20:30)
Kulcs Típus Alapérték Szerep
weight_distance float 0.6 Távolság fontossága (0-1).
weight_rating float 0.4 Értékelés fontossága (0-1).
earth_radius_km int 6371 Föld sugara a Haversine számításhoz.
📚 VÁLTOZÓ KÖNYV (v2.4 | 2026.01.27 - 20:45)
Kulcs Típus Alapérték Szerep
geo_precision int 8 Tizedesjegyek száma a koordinátáknál.
distance_unit string km Keresési mértékegység.
📚 VÁLTOZÓ KÖNYV (v2.3 | 2026.01.27 - 19:50)
Kulcs Típus Alapérték Implementáció
weight_distance float 0.6 MatchingService - Aktív
weight_rating float 0.4 MatchingService - Aktív
max_vehicles int 3 fleet.py - Aktív
📚 VÁLTOZÓ KÖNYV (v2.2 | 2026.01.27 - 20:20)
Kulcs Típus Alapérték Új szerep
weight_distance float 0.6 A térbeli közelség fontossága.
weight_rating float 0.4 A minőség (csillagok) súlya.
📚 VÁLTOZÓ KÖNYV (v2.1 | 2026.01.27 - 19:40)
Kulcs Típus Jelenlegi érték Leírás
weight_distance float 0.6 Mennyire "büntesse" a rendszer a távolságot.
weight_rating float 0.4 Mennyire jutalmazza a jó véleményeket.
bonus_gold_service int 500 A fizetős partnerek fix előnye.
match_limit_default int 5 Alapértelmezett találati szám.
📚 VÁLTOZÓ KÖNYV (v2.0 | 2026.01.27 - 19:30)
Kulcs Típus Alapérték Szerep
weight_distance float 0.6 Mennyire számít a távolság (Admin állíthatja)
weight_rating float 0.4 Mennyire számít az értékelés (Admin állíthatja)
bonus_gold_service int 500 Gold partnerek előnye
match_limit_default int 5 Hány találat jelenjen meg
📚 VÁLTOZÓ KÖNYV (v1.9 | 2026.01.27 - 19:15)
Kulcs Típus Alapérték Hol érhető el?
max_vehicles int 3 ConfigService -> fleet.py
search_radius int 20 ConfigService -> Coming soon
📚 VÁLTOZÓ KÖNYV (v1.8 | 2026.01.27 - 19:10)
Kulcs Típus Alapérték Hol van használatban?
max_vehicles int 3 fleet.py (add_vehicle végpont)
search_radius int 20 Előkészítve a keresőhöz
📚 VÁLTOZÓ KÖNYV (v1.7 | 2026.01.27 - 11:15)Változó neveTípusAktuális értékImplementáció állapotamax_vehiclesint3 (Global)DB-ben rögzítve, fleet.py frissítésre vár.search_radiusint20 (Default)Tervezett: Smart Matching modul.ranking_policyjsonAlapértelmezettTervezett: Ranking Engine.
📚 VÁLTOZÓ KÖNYV (v1.5 | 2026.01.27 - 10:45)Kulcs (Key)TípusAlapértékForrásfájlmax_vehiclesint3app/api/v1/endpoints/fleet.py
📚 VÁLTOZÓ KÖNYV (v1.4 | 2026.01.27 - 10:15)Kulcs (Key)AdattípusAlapértékImplementációs helymax_vehiclesint3backend/app/services/config_service.pysearch_radiusint20Tervezett: search_service.py
📚 VÁLTOZÓ KÖNYV (v1.3 | 2026.01.27 - 10:10)Kulcs (Key)Érték (JSON)SzintModulmax_vehicles3Globalfleet.pysearch_radius20Globalsearch.py
📚 VÁLTOZÓ KÖNYV (Variable Map) v1.2Kulcs (Key)TípusAlapértelmezettFunkciómax_vehiclesint3Járműlimit / szervezetsearch_radiusint20Alap keresési sugár (km)
📚 2. Változó Könyv (Variable Map) v1.1A rendszer paramétereinek aktuális állapota és hivatkozási pontjai.Kulcs (Key)AdattípusAlapértelmezésSzerepHivatkozás (Fájl/Modul)max_vehiclesint3Free flotta méret korlátfleet.py -> ConfigServicesearch_radiusint20Alap keresési távolságsearch.py -> ConfigServiceranking_policyjson{...}Súlyozási együtthatókRankingEngine
Változó neve,Leírás,Alapértelmezés (Global),Hol szerepel a kódban?
max_vehicles,Ingyenes csomagban rögzíthető autók száma,3,app/api/v1/endpoints/fleet.py
default_search_radius,Alapértelmezett keresési távolság (km),20,app/api/v1/endpoints/search.py
max_search_radius,Maximálisan állítható sugár (km),500,app/api/v1/endpoints/search.py
credit_price_per_unit,1 kredit ára pénznemben,1.0,app/api/v1/endpoints/billing.py

10749
docs/Old_versions/lista.txt Executable file

File diff suppressed because it is too large Load Diff

1280
docs/Old_versions/mappak.txt Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,662 @@
.
./docker-compose.yml
./postgres
./postgres/init-db.sql
./postgres/data
./postgres/data/pg_commit_ts
./postgres/data/pg_logical
./postgres/data/pg_logical/snapshots
./postgres/data/pg_logical/mappings
./postgres/data/pg_logical/replorigin_checkpoint
./postgres/data/base
./postgres/data/base/16384
./postgres/data/base/5
./postgres/data/base/16537
./postgres/data/base/1
./postgres/data/base/4
./postgres/data/pg_hba.conf
./postgres/data/pg_dynshmem
./postgres/data/pg_xact
./postgres/data/pg_xact/0000
./postgres/data/postgresql.auto.conf
./postgres/data/pg_stat
./postgres/data/PG_VERSION
./postgres/data/pg_stat_tmp
./postgres/data/pg_subtrans
./postgres/data/pg_subtrans/0000
./postgres/data/pg_ident.conf
./postgres/data/pg_snapshots
./postgres/data/global
./postgres/data/global/1232
./postgres/data/global/pg_filenode.map
./postgres/data/global/6001
./postgres/data/global/1260_vm
./postgres/data/global/2677
./postgres/data/global/2847
./postgres/data/global/1262
./postgres/data/global/3592
./postgres/data/global/4177
./postgres/data/global/3593
./postgres/data/global/4185
./postgres/data/global/2676
./postgres/data/global/2396
./postgres/data/global/1261_vm
./postgres/data/global/2671
./postgres/data/global/6243
./postgres/data/global/pg_internal.init
./postgres/data/global/2964
./postgres/data/global/4182
./postgres/data/global/1260_fsm
./postgres/data/global/4181
./postgres/data/global/4178
./postgres/data/global/1213_fsm
./postgres/data/global/4175
./postgres/data/global/1261
./postgres/data/global/2695
./postgres/data/global/1233
./postgres/data/global/4186
./postgres/data/global/4183
./postgres/data/global/2396_fsm
./postgres/data/global/4061
./postgres/data/global/2694
./postgres/data/global/6000
./postgres/data/global/4184
./postgres/data/global/1260
./postgres/data/global/pg_control
./postgres/data/global/2967
./postgres/data/global/6100
./postgres/data/global/1262_vm
./postgres/data/global/2397
./postgres/data/global/6244
./postgres/data/global/6246
./postgres/data/global/6002
./postgres/data/global/1262_fsm
./postgres/data/global/4176
./postgres/data/global/6114
./postgres/data/global/6245
./postgres/data/global/2672
./postgres/data/global/1214_fsm
./postgres/data/global/1261_fsm
./postgres/data/global/4060
./postgres/data/global/2966
./postgres/data/global/6247
./postgres/data/global/2846
./postgres/data/global/1213_vm
./postgres/data/global/6302
./postgres/data/global/6115
./postgres/data/global/2396_vm
./postgres/data/global/2698
./postgres/data/global/2697
./postgres/data/global/2965
./postgres/data/global/1214
./postgres/data/global/6303
./postgres/data/global/1213
./postgres/data/pg_serial
./postgres/data/pg_replslot
./postgres/data/pg_tblspc
./postgres/data/pg_multixact
./postgres/data/pg_multixact/members
./postgres/data/pg_multixact/offsets
./postgres/data/pg_twophase
./postgres/data/pg_notify
./postgres/data/postgresql.conf
./postgres/data/pg_wal
./postgres/data/pg_wal/summaries
./postgres/data/pg_wal/archive_status
./postgres/data/pg_wal/000000010000000000000002
./postgres/data/pg_wal/000000010000000000000003
./postgres/data/postmaster.opts
./postgres/data/postmaster.pid
./docker-compose_2.yml
./migrations
./migrations/script.py.mako
./migrations/env.py
./migrations/README
./migrations/versions
./migrations/versions/8d450e9dc77f_add_vehicle_staging.py
./migrations/versions/553ef1388276_rebuild_schema_v2.py
./migrations/versions/c21c2c7e70d4_clean_gamification_setup.py
./Projekt Állapot jelentés.txt
./redis
./redis/data
./redis/data/appendonlydir
./redis/data/appendonlydir/appendonly.aof.1.incr.aof
./redis/data/appendonlydir/appendonly.aof.manifest
./redis/data/appendonlydir/appendonly.aof.1.base.rdb
./redis/data/dump.rdb
./Service_finder Rendszerspecifikáció es feljesztes.txt
./Promptok gemekhez.txt
./pgadmin_data
./pgadmin_data/sessions
./pgadmin_data/sessions/f77af245-3aa1-4f88-a566-3be55403448f
./pgadmin_data/sessions/239aceee-a89e-434c-980e-19e2421de51f
./pgadmin_data/sessions/643b0d62-38a1-4a32-b48b-f7e053e7214f
./pgadmin_data/sessions/c38b97cd-80d7-40e1-8ab7-b9a650b38d59
./pgadmin_data/sessions/1e451e39-aae8-4a80-9e06-e600209173eb
./pgadmin_data/sessions/cda27660-0b33-4cfa-9a6f-6b61152e20ca
./pgadmin_data/sessions/39c9dfe9-7b34-43f8-91b3-6fa3f6d266b3
./pgadmin_data/sessions/6f69a6f6-75b8-4460-a933-45e989a1745b
./pgadmin_data/sessions/a581e329-7bfb-4698-838d-73cfacdc8490
./pgadmin_data/sessions/d0fbabe6-ad5f-4e80-b95c-ddce91f12be3
./pgadmin_data/sessions/8bcb89fe-0895-4cfd-9520-bb8395741163
./pgadmin_data/sessions/a7b4bf94-c3e4-4d6b-9bfb-1838af5757b2
./pgadmin_data/sessions/4ab9a4ed-3382-45b3-bc68-b03198aa8351
./pgadmin_data/sessions/d88c19a7-77d9-4beb-ab76-a84a9f37157d
./pgadmin_data/sessions/75f2578e-af2c-4aee-9d2d-cc8636ed51be
./pgadmin_data/sessions/8288a605-5063-4e3c-b91d-7d90956fc36a
./pgadmin_data/sessions/e409093c-23c6-4281-bd8e-5ae1dd8fd244
./pgadmin_data/sessions/21bf4030-2f8b-4d39-9ea5-4b9091443cb8
./pgadmin_data/sessions/80adb826-82c5-4473-84a3-b69b59a5c694
./pgadmin_data/sessions/5493e7a3-35c7-48ae-89af-246e7f0b1198
./pgadmin_data/sessions/cb6a3940-36e0-406e-8072-3ce847b85eab
./pgadmin_data/sessions/7a61650b-174f-4eee-a30d-8e8e2b9bf42a
./pgadmin_data/sessions/4212d725-cfca-4edb-b3d4-65872c5b4483
./pgadmin_data/sessions/cd78b8b9-bb98-4343-9ec3-9e4663e0965c
./pgadmin_data/sessions/8f58c8db-3320-4ff4-83c9-529ceeb47320
./pgadmin_data/sessions/fbabc57a-b2d4-4c85-9cbd-fa70f2a374e7
./pgadmin_data/sessions/49b63a43-ac7f-4a1e-a2f5-eb69c394ffe9
./pgadmin_data/sessions/e87026e5-efa4-4618-9c56-e11cef97b2bb
./pgadmin_data/sessions/aebf219d-1063-4ee8-a00e-8c669ca8c649
./pgadmin_data/sessions/6ea13bd9-7894-44b0-8db2-1cd0d67772ac
./pgadmin_data/sessions/d9d24318-63af-48ad-9a5f-e463377d72b3
./pgadmin_data/sessions/a7c55d8e-62d1-47e5-8507-29c228d9c9b1
./pgadmin_data/sessions/981d317b-8dec-40b0-a16f-d8d64b36a8ff
./pgadmin_data/sessions/62906837-2ecb-468a-8fef-5fd1374773a9
./pgadmin_data/sessions/3aeb0610-d402-481d-83b7-cc6282b7fe40
./pgadmin_data/sessions/6d07e92a-9824-4cc3-837a-9ea25e789ca9
./pgadmin_data/sessions/c0936831-8a62-4156-884e-7e72173571d7
./pgadmin_data/sessions/13e7ff42-4934-4a5e-b5a3-f677f6429cc1
./pgadmin_data/sessions/96f17aad-5695-40c9-b467-154246f14580
./pgadmin_data/sessions/9685519b-269d-4e56-a595-6cfa40c572a0
./pgadmin_data/sessions/0d358dcb-bbfb-43ca-ab93-be47f5ed25f1
./pgadmin_data/sessions/8b017d63-49c6-4c72-bd4c-1f1121c48229
./pgadmin_data/sessions/0c5d8f55-57c2-4d9b-a740-71c3eb24bced
./pgadmin_data/sessions/9a707a69-cbea-4d2a-aee2-ed186b0bd192
./pgadmin_data/sessions/2c0c4448-d3e4-4c90-9af6-33a0c0bf0ef1
./pgadmin_data/sessions/179ac2a4-8dc3-4db0-9208-ff985d0c88e0
./pgadmin_data/sessions/c73fe338-3ab0-46b7-81fa-276fc8acaa88
./pgadmin_data/sessions/15c03d02-36ed-47f1-a77c-2f4af9e68504
./pgadmin_data/sessions/215e7cd3-169f-4b75-8cd6-0081734aa571
./pgadmin_data/sessions/7c847da4-61d0-4056-8e32-906919e72acf
./pgadmin_data/sessions/c78fd088-66d3-4854-9093-b5f91eed7f87
./pgadmin_data/sessions/62d142cc-ab15-4f3f-8411-b668bd926f4f
./pgadmin_data/sessions/ec291f35-5e20-4f9a-af16-e44624d57074
./pgadmin_data/sessions/f86f30a7-2680-4a43-bb3f-d1d5dc04131f
./pgadmin_data/sessions/4256aa82-0066-4a50-a4d9-2a0673705554
./pgadmin_data/sessions/f8390327-d516-45b0-9df7-fb84ab84b11d
./pgadmin_data/sessions/6be9f86e-c004-466e-af2e-9046b971b9fc
./pgadmin_data/sessions/d983dfc1-ed31-4b49-8a99-85787b3b8851
./pgadmin_data/sessions/b87ca5ef-affd-4ac9-b9a3-640c274e05bf
./pgadmin_data/sessions/dfb0274f-c907-47ef-92ec-267f72853f21
./pgadmin_data/sessions/6afc4e86-4d72-45d7-9efb-59984ee613f9
./pgadmin_data/sessions/8259d216-9011-4518-9e07-47f62b09c8c2
./pgadmin_data/sessions/3d86d01a-9519-4111-8bd7-1bfe6ae30541
./pgadmin_data/sessions/10fdc4de-ff73-4b15-bd76-5f963b52ad5a
./pgadmin_data/sessions/47ff632a-5d39-43f1-977b-4acfa2911536
./pgadmin_data/sessions/a4f6dc64-606d-4cc7-a7c9-b53552e03155
./pgadmin_data/sessions/ffa5e983-2527-46c6-8be3-9ed04485a6ce
./pgadmin_data/sessions/251262f2-ff86-407a-b565-afc083e8f815
./pgadmin_data/sessions/85541a74-441c-4c41-a1e8-2d4748704ba4
./pgadmin_data/sessions/769ea067-659f-47a7-916f-422945f31749
./pgadmin_data/sessions/8b50c5b9-f372-4722-946a-5b98d8f6204b
./pgadmin_data/sessions/03fd18e1-b040-4d4a-b1eb-01f30054b114
./pgadmin_data/sessions/5697ad9e-3978-495b-b45d-bd8171697395
./pgadmin_data/sessions/6e772ba6-65b4-4501-84ea-ebcafa24cd85
./pgadmin_data/sessions/8176c2c0-467d-4b27-a17a-52c204cd9773
./pgadmin_data/sessions/d98a8f90-8f2e-41e4-8305-16d3dd79d54a
./pgadmin_data/sessions/8ff1ea1c-d1b9-46f8-8a16-40bcac83f250
./pgadmin_data/storage
./pgadmin_data/storage/kincses_gmail.com
./pgadmin_data/pgadmin4.db
./pgadmin_data/azurecredentialcache
./docker-compose_2026.01.23_1.yml
./backend
./backend/migrations
./backend/migrations/script.py.mako
./backend/migrations/env.py
./backend/migrations/README
./backend/migrations/versions
./backend/migrations/versions/c21c2c7e70d4_clean_gamification_setup.py
./backend/app
./backend/app/models
./backend/app/models/user.py
./backend/app/models/translation.py
./backend/app/models/vehicle.py
./backend/app/models/vehicle_catalog.py
./backend/app/models/expense.py
./backend/app/models/company.py
./backend/app/models/logistics.py
./backend/app/models/system_settings.py
./backend/app/models/__init__.py
./backend/app/models/staged_data.py
./backend/app/models/history.py
./backend/app/models/social.py
./backend/app/models/gamification.py
./backend/app/core
./backend/app/core/config.py
./backend/app/core/email.py
./backend/app/core/security.py
./backend/app/core/__init__.py
./backend/app/seed_catalog.py
./backend/app/auth
./backend/app/auth/router.py
./backend/app/schemas
./backend/app/schemas/user.py
./backend/app/schemas/auth.py
./backend/app/schemas/token.py
./backend/app/schemas/admin.py
./backend/app/schemas/fleet.py
./backend/app/schemas/social.py
./backend/app/old_main.py
./backend/app/api
./backend/app/api/recommend.py
./backend/app/api/auth.py
./backend/app/api/deps.py
./backend/app/api/v1
./backend/app/services
./backend/app/services/notification_service.py
./backend/app/services/fleet_service.py
./backend/app/services/maintenance_service.py
./backend/app/services/social_service.py
./backend/app/services/translation_service.py
./backend/app/services/gamification_service.py
./backend/app/test_gamification_flow.py
./backend/app/db
./backend/app/db/context.py
./backend/app/db/session.py
./backend/app/db/base.py
./backend/app/db/middleware.py
./backend/app/db/__init__.py
./backend/app/main.py
./backend/app/__init__.py
./backend/app/seed_system.py
./backend/app/database.py
./backend/app/seed_data.py
./backend/scrapers
./backend/scrapers/vehicle_master_data.py
./backend/requirements.txt
./backend/_legacy_backup
./backend/_legacy_backup/migrate_ref_data.py
./backend/_legacy_backup/check_garage.py
./backend/_legacy_backup/main_final.py
./backend/_legacy_backup/teszt.txt
./backend/_legacy_backup/docker-compose.backend.yml
./backend/_legacy_backup/update_permissions.py
./backend/_legacy_backup/update_cost_categories.py
./backend/_legacy_backup/inspect_db.py
./backend/_legacy_backup/update_invitations.py
./backend/_legacy_backup/build_complex_db.py
./backend/_legacy_backup/update_db_i18n.py
./backend/_legacy_backup/update_audit_system.py
./backend/_legacy_backup/create_demo_user.py
./backend/_legacy_backup/init_db.py
./backend/_legacy_backup/main.py
./backend/_legacy_backup/main_fixed.py
./backend/_legacy_backup/update_docs.py
./backend/_legacy_backup/create_dummy_employee.py
./backend/_legacy_backup/inspect_db_full.py
./backend/_legacy_backup/main_2.py
./backend/Dockerfile
./backend/frontend
./backend/alembic.ini
./projekt_terkep.txt
./backup_to_nas.sh
./proxy-manager
./proxy-manager/letsencrypt
./proxy-manager/letsencrypt/archive
./proxy-manager/letsencrypt/archive/npm-13
./proxy-manager/letsencrypt/archive/npm-16
./proxy-manager/letsencrypt/archive/npm-5
./proxy-manager/letsencrypt/archive/npm-15
./proxy-manager/letsencrypt/archive/npm-11
./proxy-manager/letsencrypt/archive/npm-14
./proxy-manager/letsencrypt/archive/npm-4
./proxy-manager/letsencrypt/renewal-hooks
./proxy-manager/letsencrypt/renewal-hooks/pre
./proxy-manager/letsencrypt/renewal-hooks/deploy
./proxy-manager/letsencrypt/renewal-hooks/post
./proxy-manager/letsencrypt/renewal
./proxy-manager/letsencrypt/renewal/npm-16.conf
./proxy-manager/letsencrypt/renewal/npm-5.conf
./proxy-manager/letsencrypt/renewal/npm-13.conf
./proxy-manager/letsencrypt/renewal/npm-4.conf
./proxy-manager/letsencrypt/renewal/npm-15.conf
./proxy-manager/letsencrypt/renewal/npm-14.conf
./proxy-manager/letsencrypt/renewal/npm-11.conf
./proxy-manager/letsencrypt/live
./proxy-manager/letsencrypt/live/npm-13
./proxy-manager/letsencrypt/live/npm-16
./proxy-manager/letsencrypt/live/npm-5
./proxy-manager/letsencrypt/live/npm-15
./proxy-manager/letsencrypt/live/npm-11
./proxy-manager/letsencrypt/live/npm-14
./proxy-manager/letsencrypt/live/README
./proxy-manager/letsencrypt/live/npm-4
./proxy-manager/letsencrypt/accounts
./proxy-manager/letsencrypt/accounts/acme-v02.api.letsencrypt.org
./proxy-manager/data
./proxy-manager/data/nginx
./proxy-manager/data/nginx/dead_host
./proxy-manager/data/nginx/proxy_host
./proxy-manager/data/nginx/default_www
./proxy-manager/data/nginx/default_host
./proxy-manager/data/nginx/redirection_host
./proxy-manager/data/nginx/stream
./proxy-manager/data/nginx/temp
./proxy-manager/data/keys.json
./proxy-manager/data/letsencrypt-acme-challenge
./proxy-manager/data/database.sqlite
./proxy-manager/data/access
./proxy-manager/data/custom_ssl
./proxy-manager/data/logs
./proxy-manager/data/logs/fallback_access.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.8
./proxy-manager/data/logs/proxy-host-8_access.log
./proxy-manager/data/logs/fallback_error.log.2.gz
./proxy-manager/data/logs/letsencrypt.log.6
./proxy-manager/data/logs/fallback_access.log.3.gz
./proxy-manager/data/logs/proxy-host-3_access.log.3.gz
./proxy-manager/data/logs/letsencrypt.log.15
./proxy-manager/data/logs/proxy-host-1_access.log
./proxy-manager/data/logs/letsencrypt-requests_access.log.1.gz
./proxy-manager/data/logs/proxy-host-2_access.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.9
./proxy-manager/data/logs/proxy-host-2_error.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.4
./proxy-manager/data/logs/letsencrypt.log.10
./proxy-manager/data/logs/fallback_error.log.1.gz
./proxy-manager/data/logs/proxy-host-1_error.log.2.gz
./proxy-manager/data/logs/proxy-host-7_access.log
./proxy-manager/data/logs/proxy-host-2_error.log.2.gz
./proxy-manager/data/logs/letsencrypt-requests_error.log
./proxy-manager/data/logs/letsencrypt.log.13
./proxy-manager/data/logs/proxy-host-9_access.log
./proxy-manager/data/logs/proxy-host-2_error.log.3.gz
./proxy-manager/data/logs/proxy-host-6_access.log
./proxy-manager/data/logs/proxy-host-1_access.log.3.gz
./proxy-manager/data/logs/proxy-host-6_access.log.1.gz
./proxy-manager/data/logs/proxy-host-6_error.log.3.gz
./proxy-manager/data/logs/proxy-host-2_access.log.3.gz
./proxy-manager/data/logs/proxy-host-8_error.log
./proxy-manager/data/logs/proxy-host-6_error.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.16
./proxy-manager/data/logs/fallback_access.log.2.gz
./proxy-manager/data/logs/proxy-host-6_access.log.3.gz
./proxy-manager/data/logs/proxy-host-6_access.log.2.gz
./proxy-manager/data/logs/letsencrypt.log.2
./proxy-manager/data/logs/letsencrypt-requests_access.log
./proxy-manager/data/logs/proxy-host-4_access.log
./proxy-manager/data/logs/letsencrypt.log.12
./proxy-manager/data/logs/proxy-host-5_access.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.7
./proxy-manager/data/logs/fallback_error.log
./proxy-manager/data/logs/proxy-host-6_error.log.2.gz
./proxy-manager/data/logs/proxy-host-5_access.log.3.gz
./proxy-manager/data/logs/proxy-host-5_error.log.3.gz
./proxy-manager/data/logs/proxy-host-1_error.log.3.gz
./proxy-manager/data/logs/proxy-host-2_access.log.2.gz
./proxy-manager/data/logs/proxy-host-3_access.log.2.gz
./proxy-manager/data/logs/proxy-host-5_error.log.2.gz
./proxy-manager/data/logs/letsencrypt.log.1
./proxy-manager/data/logs/proxy-host-3_access.log
./proxy-manager/data/logs/letsencrypt.log.3
./proxy-manager/data/logs/proxy-host-5_access.log.2.gz
./proxy-manager/data/logs/proxy-host-1_error.log
./proxy-manager/data/logs/proxy-host-2_access.log
./proxy-manager/data/logs/fallback_error.log.3.gz
./proxy-manager/data/logs/proxy-host-5_error.log.1.gz
./proxy-manager/data/logs/letsencrypt.log
./proxy-manager/data/logs/letsencrypt.log.14
./proxy-manager/data/logs/proxy-host-5_access.log
./proxy-manager/data/logs/proxy-host-1_access.log.1.gz
./proxy-manager/data/logs/proxy-host-5_error.log
./proxy-manager/data/logs/proxy-host-9_error.log
./proxy-manager/data/logs/proxy-host-3_error.log.2.gz
./proxy-manager/data/logs/proxy-host-1_error.log.1.gz
./proxy-manager/data/logs/proxy-host-3_error.log.3.gz
./proxy-manager/data/logs/proxy-host-3_error.log.1.gz
./proxy-manager/data/logs/proxy-host-1_access.log.2.gz
./proxy-manager/data/logs/proxy-host-3_access.log.1.gz
./proxy-manager/data/logs/letsencrypt.log.5
./proxy-manager/data/logs/fallback_access.log
./proxy-manager/data/logs/proxy-host-7_error.log
./proxy-manager/data/logs/proxy-host-4_error.log
./proxy-manager/data/logs/letsencrypt.log.11
./proxy-manager/data/logs/proxy-host-3_error.log
./proxy-manager/data/logs/proxy-host-2_error.log
./proxy-manager/data/logs/proxy-host-6_error.log
./pgadmin
./pgadmin/data
./pgadmin/data/sessions
./pgadmin/data/sessions/c191ec66-78a1-4afd-955f-e50e8dbbc552
./pgadmin/data/sessions/f7056bf2-b80f-4239-8c16-3531f8b88782
./pgadmin/data/sessions/f566ecc0-32dd-45c7-869e-cfb900fd9aa7
./pgadmin/data/sessions/61fa598a-479d-47dc-aee2-846812e6b40b
./pgadmin/data/sessions/36fa57da-8c82-47e8-8dd0-03c677ff8f6d
./pgadmin/data/sessions/42240d96-abd2-43ed-9e07-7ad0acd4dceb
./pgadmin/data/sessions/cc89aa8b-5867-4b73-90c0-0b15d117cb9f
./pgadmin/data/sessions/4717cbe5-3d95-425b-a873-df76df7af990
./pgadmin/data/sessions/fc40d886-9fb0-48b2-810e-c77b9afcb6a2
./pgadmin/data/sessions/190c2cfe-7b96-47e7-a7c7-78740413ec86
./pgadmin/data/sessions/d1fd1e26-160e-4450-b2b6-dc28ad4273f1
./pgadmin/data/sessions/a48ac178-5482-4835-87cc-fe0ed838bacf
./pgadmin/data/sessions/64c44127-f39a-4234-8785-9b515b32686f
./pgadmin/data/sessions/82e002e9-c7ef-4eb4-8fad-759b9d5577ca
./pgadmin/data/sessions/ef7f0484-f09d-44c1-b0b7-e56888795442
./pgadmin/data/sessions/8821dc09-caca-4649-9f18-bc57cf371a06
./pgadmin/data/sessions/3f887077-3a26-455d-b2ce-6be68ddc71e8
./pgadmin/data/sessions/6404475f-50aa-42e0-9d35-b0a8f6e8a213
./pgadmin/data/sessions/5c1020ff-954c-4132-902a-11a3750de23a
./pgadmin/data/sessions/7aa1e6c8-5c23-45ec-8156-972939ae60cf
./pgadmin/data/sessions/2561af04-52e0-422c-9f01-889aa086be13
./pgadmin/data/sessions/f01d1cd0-5b3c-406d-8b54-f07f9436949e
./pgadmin/data/sessions/c8a2ea39-d07d-4c98-8be2-e3ddee9c5c99
./pgadmin/data/sessions/ec936261-9676-4ff7-abc9-6af7557b45e5
./pgadmin/data/sessions/d4434ef9-4105-403c-9245-25ddf5dfb391
./pgadmin/data/sessions/3d3283e8-fbe4-487e-bc49-458ee1782020
./pgadmin/data/sessions/fad7550e-eef9-4a4e-9f8b-8d771c7767a4
./pgadmin/data/sessions/e2eab0f0-867e-4797-9619-7fb4f790b89f
./pgadmin/data/sessions/0f41e22e-b4b4-4776-9895-9fc12054ed71
./pgadmin/data/sessions/c22428fe-dfc0-4a28-a32f-1f8965430004
./pgadmin/data/sessions/c8857f63-f821-49b4-bf41-48727c00febd
./pgadmin/data/sessions/6c443079-e5e9-44c3-aa39-9be235ad4865
./pgadmin/data/sessions/82e99852-9da3-45a8-8491-0c69e66d5be4
./pgadmin/data/sessions/bf27abfe-c382-4e9d-8acf-9508133c4b15
./pgadmin/data/sessions/2739c198-da4a-498e-aaaa-9c9ca291bbf1
./pgadmin/data/sessions/98fdb91c-44cf-4379-a738-6b045733dee0
./pgadmin/data/sessions/03c1a752-4ec5-430c-a965-aa355531bb1f
./pgadmin/data/sessions/8167652a-79dc-46b9-a3e7-203ac1840f84
./pgadmin/data/sessions/c6f96af8-86b3-4bd2-9c65-c6b80ee60512
./pgadmin/data/sessions/f27f3773-bd41-4870-adbc-298c08de6834
./pgadmin/data/sessions/1960ac31-8625-48ba-aef3-f824a0739b59
./pgadmin/data/sessions/4cf9b0b1-f129-43e0-82f0-9da65c5d5d00
./pgadmin/data/sessions/df1c9e4b-c688-43af-8707-a967f124e2be
./pgadmin/data/sessions/a07c1cce-1999-49c3-b1e1-a59436e38522
./pgadmin/data/sessions/e5b3bdd5-4aef-4366-bd21-9acd13188b78
./pgadmin/data/sessions/4673f7fb-cab6-4347-8c0e-7a00937c3f16
./pgadmin/data/sessions/4382c834-4294-45eb-a671-8ab12033f6b7
./pgadmin/data/sessions/f2ca300d-051d-42b5-b5f9-be649054d293
./pgadmin/data/sessions/eb5480bb-8183-4aed-8c44-5dba8a9de577
./pgadmin/data/sessions/a508f434-c945-4db0-8927-e16f0e75813f
./pgadmin/data/sessions/68043fbf-2cff-4131-9807-562123306e7c
./pgadmin/data/sessions/081da418-bd99-4b43-aa84-f6e13a87f057
./pgadmin/data/sessions/d985efdf-2cda-4d6e-a850-baf41946bdbf
./pgadmin/data/sessions/54349914-b165-48f3-bea8-ab8d224edd39
./pgadmin/data/sessions/ea4d33f7-a8dd-4288-b9ef-2d1511286491
./pgadmin/data/sessions/26f505ea-a69a-4e4d-8704-01e379913d52
./pgadmin/data/sessions/7130585c-6a44-41f4-80fd-6f2c7c702eac
./pgadmin/data/sessions/8d434565-8c8d-4058-94d6-df582902ff67
./pgadmin/data/sessions/4ed73362-1f27-4e50-a632-c3b6213f627e
./pgadmin/data/sessions/4c3ac76d-b38d-4e89-871e-7446ad86ce3a
./pgadmin/data/sessions/cbee53e3-2930-45b4-ac80-cec62d11365b
./pgadmin/data/sessions/2706ea12-544c-439c-bbfe-2881135fc5c2
./pgadmin/data/sessions/19bc1463-7c1e-40a9-bd09-7d282590b903
./pgadmin/data/sessions/4584d603-10f5-4767-920e-59c463d5f00b
./pgadmin/data/sessions/bc386c8c-87ae-4e20-8844-fee3703a0595
./pgadmin/data/sessions/3e232ae5-0fb7-4107-8fe6-e64af4d0527b
./pgadmin/data/sessions/0ced9fd6-67f5-4e15-892d-f16f29bf2d53
./pgadmin/data/sessions/45e62654-215d-433f-92ed-21bb664b0a5d
./pgadmin/data/sessions/f8f4cdc0-a960-4971-b380-3a3df159a3f7
./pgadmin/data/sessions/5da591bf-697b-40b8-b850-5248b3f9948e
./pgadmin/data/sessions/62c7cafb-f9c3-4a0e-b88b-69015f4cdd8a
./pgadmin/data/sessions/76de99ed-2aa0-4a08-b488-08f30f00b115
./pgadmin/data/sessions/6d5cdc12-98ae-4226-8c56-01a66ace1eb6
./pgadmin/data/sessions/4fbb5992-1fbe-4451-b3b7-29b0318db683
./pgadmin/data/sessions/aee5ec2f-8e5c-4a46-98f2-09842c70b28e
./pgadmin/data/sessions/0ab80fb4-e8e7-406d-b344-f49eba9ff931
./pgadmin/data/sessions/dde5b219-4951-4165-8fd4-78c960f48b9e
./pgadmin/data/sessions/351775b2-78e4-499e-868d-4d29b5c6dc44
./pgadmin/data/sessions/70be35ce-dedc-49e1-baa1-fc144a68e2dd
./pgadmin/data/sessions/1e5e0265-eae2-4b5b-a55b-cd60ebf3329d
./pgadmin/data/sessions/bb0e21bd-b9d5-4a23-b434-1065bbaa95de
./pgadmin/data/sessions/03321bce-cf49-427a-a351-c698a1e8b6c5
./pgadmin/data/sessions/c9725e93-8daa-4593-adb6-cae2c08f9ff2
./pgadmin/data/sessions/b96079ba-7bb1-4f2e-9a3c-e909f62b4482
./pgadmin/data/sessions/dbe3af6d-f17b-40b9-89e2-f39320543100
./pgadmin/data/sessions/638b9be8-028f-44cb-8989-36ea93b74eea
./pgadmin/data/sessions/2ed28be0-af44-427d-aebc-548f31f468e0
./pgadmin/data/sessions/a3dc2446-3c67-4238-a8b2-c9fa71fbad7a
./pgadmin/data/sessions/46a19aed-8c32-4649-9190-e449bc59bc7b
./pgadmin/data/sessions/7c130b35-7cb9-488d-8576-ea9013268f03
./pgadmin/data/sessions/b756eef0-4625-465d-bc5b-a84d0cb54bc1
./pgadmin/data/sessions/60f20466-0f3c-459c-aef7-4fc0c091fe44
./pgadmin/data/sessions/4c0d3bc1-5568-4b05-a134-0dfabe300266
./pgadmin/data/sessions/24b3c1f7-7db5-46a1-8f9d-2bebf1f0fdce
./pgadmin/data/sessions/e4d91f15-4c9f-407e-9bed-4b54a9710348
./pgadmin/data/sessions/e1dbb2c7-f692-49bf-9952-906e45cc061c
./pgadmin/data/sessions/2179bbb8-68eb-4d23-ab40-abd267a737ca
./pgadmin/data/sessions/451e0858-8495-4b2b-80e6-a806b23ebf20
./pgadmin/data/sessions/11cb2bcb-cdd1-47cd-8bd7-2311df2c5fe9
./pgadmin/data/sessions/4cd4231d-4650-478a-836d-587dd5fadf2d
./pgadmin/data/sessions/4dddbbca-9f36-4afe-91c5-dda07af51509
./pgadmin/data/sessions/722e0de3-d430-4128-a2dc-0c2b98696529
./pgadmin/data/sessions/ab34bced-831e-487d-9825-84f608ea3902
./pgadmin/data/sessions/93c836f5-d79d-425b-bf03-dcabb528c14a
./pgadmin/data/sessions/418dd495-ee05-4922-a4b5-20d73b9e4546
./pgadmin/data/sessions/0074a83f-e030-42ae-8c17-45565cbecfc9
./pgadmin/data/sessions/ed9ea264-f245-424a-a083-d41f3e3677f2
./pgadmin/data/sessions/987661e3-7d05-4a95-8b77-baa1d589e950
./pgadmin/data/sessions/fe97b137-a0ea-4a78-97e1-3380e694b0fd
./pgadmin/data/sessions/f7a50bb2-86b0-4300-8230-1419184b77df
./pgadmin/data/sessions/3a0faa33-930b-4f10-b332-a7e980746c78
./pgadmin/data/sessions/2d628d69-f6f7-486a-9262-bc18afb453af
./pgadmin/data/sessions/13426e7d-ab6c-4495-8e7d-86a537b15eee
./pgadmin/data/sessions/9b298e50-1684-493a-aa4c-013aa0dfa34d
./pgadmin/data/sessions/f03484f7-2430-4a0a-97ec-9da8e1f5ea8e
./pgadmin/data/sessions/83b8ec9d-cce8-40dd-92d2-b408fb9740b4
./pgadmin/data/sessions/55b681bd-873c-4d01-b4be-3989d832a238
./pgadmin/data/sessions/d4e8dbd2-54cf-46e1-b517-fc1e75d249e1
./pgadmin/data/sessions/8d702279-6b43-4233-a353-8154dd414dd9
./pgadmin/data/sessions/e2712981-434d-4e36-95f1-1a8bfdd104aa
./pgadmin/data/sessions/7e7fdf5e-cddd-47d9-9904-c2e3f0bb6584
./pgadmin/data/sessions/47fe0485-1471-42bc-95cd-706a64f48628
./pgadmin/data/sessions/d09cb1df-1944-4853-8a28-2b96d6e48172
./pgadmin/data/sessions/cabc5443-1f25-4baa-935f-677ad0168302
./pgadmin/data/sessions/e6c8fdcc-0d49-4d7b-b1c1-9e369dc4b462
./pgadmin/data/sessions/e14cf22a-1d02-4b56-8e72-dc06b7680c58
./pgadmin/data/sessions/afb4a566-5bbd-44ca-95a7-07f73b35a4b5
./pgadmin/data/sessions/b5d9d584-a368-445a-a1a3-832c81ceecb8
./pgadmin/data/sessions/dccb1427-3039-4d5b-99a3-aa1e0047c1d5
./pgadmin/data/sessions/05d366d7-6fc8-4b0a-8f15-34e993390037
./pgadmin/data/sessions/3ee96a8c-f9ab-4446-a2a5-f507c43c81ca
./pgadmin/data/sessions/aed3b509-f282-4a70-aefd-8187a7eec5a1
./pgadmin/data/sessions/ce5f6384-c313-4ded-886b-b07ececd76cd
./pgadmin/data/sessions/1f914044-e28a-4209-adbe-3ef26a350f8f
./pgadmin/data/sessions/af349006-dc3d-4311-813f-b7b9a020bf80
./pgadmin/data/sessions/2f9a5acd-4f90-41e6-b3ce-6c96fd759269
./pgadmin/data/sessions/239da6ac-8ad1-4a6b-b744-1f0c277297f2
./pgadmin/data/sessions/fafc224c-d56c-46f8-8e61-99acda95eea3
./pgadmin/data/sessions/4702c0ea-8e09-45cf-b789-30e27eb5e3b9
./pgadmin/data/sessions/ba1fe36d-33f0-406d-ac2d-b36f1a116e1a
./pgadmin/data/sessions/f2d9792d-a8f1-428b-8337-8e9d6f3443f7
./pgadmin/data/sessions/3988bd08-5155-401d-99d6-02f2fb632f55
./pgadmin/data/sessions/eda16ade-9d9f-414a-8568-f7cbdd846df5
./pgadmin/data/sessions/dc94f41e-fce7-4511-8568-85f697d9c3ac
./pgadmin/data/sessions/f1d83a36-0b04-4f6d-b5e6-a5ceb6913d46
./pgadmin/data/sessions/9ca18ada-194c-411c-aca2-dd39c9309f06
./pgadmin/data/sessions/e894978f-3619-4507-8a8d-06ebd9d3b34b
./pgadmin/data/sessions/3a94a473-9331-4677-a456-c2f159644646
./pgadmin/data/sessions/f9d18c1d-5bf5-415a-b1b2-f626cbff20a5
./pgadmin/data/sessions/6ed6727c-6f53-4985-b61d-54ec2c5e21aa
./pgadmin/data/sessions/bcbba302-039d-4255-b59b-4f5c0ba4261e
./pgadmin/data/sessions/bc5dcd93-6f31-4c85-a71e-a5e2c3909ee4
./pgadmin/data/sessions/81fa4503-512f-4ffc-b80c-a2cbe5ac6c6d
./pgadmin/data/sessions/8b244e1a-3450-46ae-bf7d-1c62cbf27efd
./pgadmin/data/sessions/57e8dde3-3c42-4ea9-b51b-61e0c7464689
./pgadmin/data/sessions/7b270987-51d5-49ec-a211-efe040a3aad6
./pgadmin/data/sessions/ac22993e-9fa9-4648-b831-00d09d4c1847
./pgadmin/data/sessions/28cae61e-11d9-496f-a02a-61c9e6f7de81
./pgadmin/data/sessions/4a10d8d1-c231-4e4a-b2da-11c41f1fb17b
./pgadmin/data/sessions/d85fb50c-159c-4126-a962-26b7d6069e7b
./pgadmin/data/sessions/ff45df81-4c63-4c3c-a8dd-049c6d620cd2
./pgadmin/data/sessions/71210c05-6890-4a50-b357-ab9aa326676e
./pgadmin/data/sessions/cb104af0-04e6-4f15-a368-f77982452a6c
./pgadmin/data/sessions/ac393412-dcf8-4c91-bc17-7d1b5801acad
./pgadmin/data/sessions/48251b44-eba5-4052-a76e-86a6875136b9
./pgadmin/data/sessions/1d6f0a85-d435-4576-a0fa-08a06278a27e
./pgadmin/data/sessions/3c8bf289-9347-409a-9f10-47d159e01372
./pgadmin/data/sessions/cfa4a83e-c216-4605-b47c-a22793eba833
./pgadmin/data/sessions/bf90f4cb-b073-4c6e-879a-254f1b482663
./pgadmin/data/sessions/66915c98-f44d-46e5-b6b1-6b7f93a75ec8
./pgadmin/data/sessions/49511e92-d0d3-4269-800b-ece9393f44da
./pgadmin/data/sessions/cda3d93a-d66a-40d6-b639-5889a54f18ae
./pgadmin/data/sessions/5e4fd04c-14ea-444b-8146-b16def80df51
./pgadmin/data/sessions/eefdb208-868b-4f2f-b994-10e3fb60a027
./pgadmin/data/sessions/049be04b-7f37-4e21-bc39-0c2a8b220599
./pgadmin/data/sessions/c4ede5bb-f6d0-414b-ae56-7b02f6d70e5e
./pgadmin/data/sessions/6291cc65-910e-421f-88f8-52052e770880
./pgadmin/data/sessions/0e57c4bc-ece3-4cee-8593-d29a4ac3eb32
./pgadmin/data/sessions/d2a3c6f4-9445-4cce-a5e8-dc1086c17aa5
./pgadmin/data/sessions/41dba666-775e-4db7-bab2-e9e8d24d6f69
./pgadmin/data/sessions/be43131f-9131-4361-9a78-11fe22bc07fe
./pgadmin/data/sessions/4832b048-abfe-407a-abbc-5ab7349646dc
./pgadmin/data/sessions/9d89be8f-abc8-4e30-b87a-187d22ba3bb7
./pgadmin/data/sessions/97c0ed8d-c8bb-4867-afdb-ed963a871162
./pgadmin/data/sessions/786acf57-7b55-49a3-bbf4-d2ea7ac3af88
./pgadmin/data/sessions/5f44b9f8-20b6-4f0f-8b35-fcbafb900d7d
./pgadmin/data/sessions/02a93934-cb4f-4990-9f17-3c9b0c0d41d8
./pgadmin/data/sessions/be8c9ae6-3d6a-4c56-b296-7a316062e49e
./pgadmin/data/storage
./pgadmin/data/storage/kincses_gmail.com
./pgadmin/data/pgadmin4.db
./pgadmin/data/azurecredentialcache
./logs
./frontend
./frontend/uploads
./frontend/uploads/fe7a5e48-09af-4a3c-a51a-b7c97a20810e.png
./frontend/uploads/743f6905-83bc-4269-83bd-38098b10605b.png
./frontend/uploads/50369328-e8d0-4f07-b955-52bfc5bc4671.png
./frontend/uploads/1797321c-cd84-48a9-a4f5-7a063dd5386f.png
./frontend/uploads/f3d0f3f9-4112-4c8e-b2c6-558a9cace658.png
./frontend/uploads/3912a8ba-57f0-477c-9a27-597240407444.png
./frontend/uploads/6e62c849-21fc-4803-ab3b-e5b627649f30.png
./frontend/index_old.html
./frontend/index.html
./docker-compose_NAS_előtt.yml
./code-server-config
./code-server-config/extensions
./code-server-config/extensions/extensions.json
./code-server-config/data
./code-server-config/data/Machine
./code-server-config/data/User
./code-server-config/data/User/customBuiltinExtensionsCache.json
./code-server-config/data/User/History
./code-server-config/data/User/caches
./code-server-config/data/User/Backups
./code-server-config/data/User/settings.json
./code-server-config/data/User/snippets
./code-server-config/data/User/globalStorage
./code-server-config/data/User/systemExtensionsCache.json
./code-server-config/data/User/machineid
./code-server-config/data/User/workspaceStorage
./code-server-config/data/CachedProfilesData
./code-server-config/data/CachedProfilesData/__default__profile__
./code-server-config/data/logs
./code-server-config/data/logs/20260120T003918
./code-server-config/data/logs/20260120T172343
./code-server-config/data/logs/20260120T004510
./code-server-config/data/logs/20260120T175427
./code-server-config/data/coder.json
./code-server-config/workspace
./alembic.ini
./Horgony_megjegyzések.txt

View File

@@ -0,0 +1,15 @@
# Master Grand Book v1.0 Service Finder / Traffic Ecosystem SuperApp
Ez a dokumentáció a projekt **kanonikus tudásbázisa**.
Két párhuzamos könyvtár létezik:
- V01_chatgpt technikai, mérnöki, architekturális megközelítés
- V01_gemini alternatív gondolkodás, validáció, kiegészítő perspektíva
Cél:
- Tudás megőrzése
- Döntések visszakövethetősége
- Fejlesztési minőség mérése (kód + beállítás + hibajavítás hatékonyság)
- Új projektek benchmark alapja
Ez a v1.0 verzió a **baseline állapot** dokumentálása.

View File

@@ -0,0 +1,24 @@
# Projekt áttekintés
Projekt neve: Traffic Ecosystem SuperApp 2.0 (Service Finder)
Cél:
Egy moduláris platform létrehozása, amely:
- kezeli a járművek életciklusát,
- nyilvántartja a költségeket, eseményeket, szervizeket,
- összeköti a felhasználókat valós szolgáltatókkal,
- automatizált adatgyűjtést végez (discovery botok),
- skálázható SaaS modellben működik.
Fő modulok:
- Auth / User / Organization
- Fleet & Vehicle Lifecycle
- Service Provider Marketplace
- Billing / Credits / Subscription
- Gamification & Social
- Discovery Bots (adatgyűjtés)
- Dokumentumfeldolgozás (OCR pipeline tervezett)
Non-goals (v1.0):
- Teljes üzleti automatizmus
- Külső fizetési gateway éles integráció

View File

@@ -0,0 +1,19 @@
# Fejlesztői környezet
Indítás:
- docker compose up -d
Alapszolgáltatások:
- API: :8000
- Frontend: :3001
- MinIO: :9000 / :9001
- Redis: belső háló
Tipikus ellenőrzések:
- API online: GET /
- OpenAPI: /api/v2/openapi.json
- Frontend betölt
Ismert jellegzetességek:
- v1 és v2 API párhuzamosan él
- .env alapú konfiguráció

View File

@@ -0,0 +1,26 @@
# Adatbázis Baseline állapot
DB: PostgreSQL (shared-postgres)
Séma: data
Táblák száma: ~55
Kulcs entitások:
- users
- persons
- companies
- vehicles, vehicle_models, vehicle_variants
- service_providers, service_specialties
- fuel_stations
- credit_logs, vouchers, subscriptions
- audit_logs
Migráció:
- Alembic
- Head rev: 5aed26900f0b
- Persons + owner_person_id implementálva
Seed:
- fuel_stations ~7300
- service_providers ~7200

View File

@@ -0,0 +1,13 @@
# API Áttekintés
Verziók:
- v1: üzleti modulok (fleet, billing, reports)
- v2: auth és új generációs endpointok
Elvek:
- JWT alapú auth
- Verziózott API
- OpenAPI dokumentált
Megjegyzés:
A v1 → v2 egységesítés külön roadmap tétel.

View File

View File

@@ -0,0 +1,10 @@
# Anchor Log döntési napló
Ez a fejezet rögzíti:
- fontos architekturális döntéseket,
- API-szerződés változásokat,
- adatmodell átalakításokat,
- stratégiai irányváltásokat.
Cél:
- később visszakövethető legyen, miért úgy épült a rendszer, ahogy.

View File

@@ -0,0 +1,6 @@
# Changelog
v1.0 Baseline
- Mester dokumentum struktúra létrehozva
- DB baseline rögzítve
- API verziózás dokumentálva

View File

@@ -0,0 +1,40 @@
# 🔐 AUTHENTICATION & IDENTITY SPECIFICATION (v1.0)
## I. AZONOSÍTÁSI STRATÉGIA
A rendszer szétválasztja a **technikai hozzáférést** (User) és a **valós identitást** (Person).
### 1. Identitás szintek
- **User (Login):** Email + Jelszó. Csak a belépéshez és a munkamenethez kell.
- **Person (Identity):** Vezetéknév, Keresztnév, Anyja neve, Születési adatok, Okmányok.
- **Azonosító:** Minden Person kap egy globális egyedi azonosítót (UUID).
### 2. Soft Delete & Re-regisztráció
- **Nincs fizikai törlés:** A felhasználó csak egy `is_hidden` vagy `deleted_at` flag-et kap.
- **Ismételt regisztráció:** Ha az email/név/okmány alapján a rendszer felismeri a visszatérőt:
- Új technikai User fiók jön létre.
- Ez az új fiók a korábbi Person ID-hoz kapcsolódik.
- **Adat-izoláció:** A felhasználó csak az új regisztráció dátuma utáni eseményeket látja. A régi adatok a háttérben maradnak (statisztika, sofőr elemzés), de számára rejtettek.
## II. BŐVÍTETT ADATTÁR (KYC & SAFETY)
A `persons` tábla az alábbi adatcsoportokat tartalmazza (Progresszív feltöltéssel):
- **Alapadatok:** `last_name`, `first_name`, `birth_place`, `birth_date`, `mothers_name`.
- **Hivatalos okmányok:** Személyi ig. szám, Jogosítvány (szám + kategóriák + érvényesség), Lakcímkártya, TAJ, Adóazonosító.
- **Vészhelyzeti adatok (Safety):** Vércsoport, Allergia, Értesítendő személy (ICE) neve és telefonszáma.
- **Jutalom:** A teljes körű adategyeztetésért 2 hét PRÉMIUM tagság jár.
## III. JUTALÉK ÉS GAZDASÁG
### 1. Piramis rendszer (3 szint)
Meghívó lánc alapján számolt jóváírás:
- **1. szint (Közvetlen):** 10%
- **2. szint:** 5%
- **3. szint:** 2%
*A százalékok a befizetés pillanatában érvényes admin beállítások alapján rögzülnek a tranzakcióban (Snapshot).*
### 2. Wallets
Minden regisztrációnál létrejön:
- **Coin Wallet:** Belső fizetőeszköz (Kredit).
- **XP Ledger:** Tapasztalati pontok (Verseny és rangsor).
## IV. MODERÁCIÓ ÉS VALIDÁLÁS
- **Validált vélemény:** Csak igazolt ott-tartózkodás (GPS) vagy számlafotó után adható.
- **Fellebbezés:** A szerviz kérheti a vélemény felülvizsgálatát, amit a Moderátorok/Validátorok bírálnak el.

View File

@@ -1,17 +0,0 @@
(Biztonság és Identitás.)
# 🔐 SECURITY & IDENTITY MODEL
## 1. Identitás Kezelés (Person vs User)
- **Person:** Természetes személy (GDPR alany). `deleted_at` esetén nem töröljük, csak minden személyes adatmezőt (név, email, tel) hashelünk/anonimizálunk, de a statisztikai ID megmarad.
- **User:** Belépési fiók. Egy Person-höz több User tartozhat.
- **Company:** Céges entitás. Tulajdonosa egy Person.
## 2. Authentication
- **Token:** JWT (JSON Web Token) HS256.
- **Password:** Argon2 hash.
- **Anti-Enumeration:** "Ha létezik ilyen email cím, küldtünk egy levelet" (nem áruljuk el, hogy regisztrált-e).
## 3. Soft Delete Logika
Minden táblában (`users`, `vehicles`, `events`) kötelező a `deleted_at`.
- **API szinten:** Minden lekérdezéshez automatikusan hozzáadódik a `WHERE deleted_at IS NULL`.
- **Admin szinten:** Láthatóak a törölt elemek is (Audit célból).

View File

@@ -1,6 +1,26 @@
(Az Adatbázis Bibliája.)
# 🗄️ DATABASE GUIDE
# 🗄️ DATABASE GUIDE & DATA INTEGRITY (v1.0)
## 1. Soft Delete & Újraregisztráció Logika
A rendszerben nincs fizikai törlés. A `data.users` tábla az alábbi módon kezeli a visszatérő felhasználókat:
- **Indexelés:** Az `email` mezőn egy *Partial Unique Index* (`idx_user_email_active_only`) található.
- **Működés:** - Ha `is_deleted = FALSE`, az email nem használható újra.
- Ha a felhasználó törli magát (`is_deleted = TRUE`), az email felszabadul.
- Új regisztrációkor a rendszer új `user_id`-t generál, de ha a KYC adatok egyeznek, ugyanahhoz a `person_id`-hoz kapcsolja az új fiókot.
## 2. Person (Személyazonosság) - KYC & Safety
A `data.persons` tábla tárolja a banki szintű azonosításhoz szükséges adatokat:
- **Szétválasztott nevek:** `last_name` és `first_name` a pontos azonosításhoz.
- **JSONB mezők:** Rugalmas adatszerkezet az okmányokhoz (`identity_docs`) és vészhelyzeti adatokhoz (`medical_emergency`).
- **Jutalom Trigger:** A profil 100%-os kitöltése (név, szül. adatok, okmányok) automatikusan aktiválja a 14 napos PRÉMIUM csomagot.
## 3. Economy (Pénztárca & Referral)
- **Wallet:** Minden regisztrációkor létrejön egy rekord a `data.wallets` táblában (0 Coin, 0 XP).
- **Referral Snapshot:** A jutalékok kifizetésekor a rendszer rögzíti a tranzakció pillanatában érvényes százalékot (`commission_percentage`), így a későbbi admin módosítások nem érintik a múltbeli elszámolásokat.
## Sémák
- `public`: Csak technikai táblák (pl. Alembic version).
- `data`: Az üzleti logika 55 táblája.
@@ -14,4 +34,16 @@
## Migrációs Állapot
- **Eszköz:** Alembic.
- **Current Head:** `10b73fee8967`.
- **Hiányzó láncszem:** A `persons` tábla létrehozása és a meglévő `users` tábla migrációja (Ba
- **Hiányzó láncszem:** A `persons` tábla létrehozása és a meglévő `users` tábla migrációja (Ba
## 4. Regionalizáció és Multi-Currency (EU Scope)
A rendszer fel van készítve az EU-s piacra:
- **`data.regional_settings`**: Tárolja az országkódokat (ISO 3166-1), az alapértelmezett nyelvet és a helyi pénznemet.
- **`data.exchange_rates`**: Napi frissítésű váltószámok (Base: EUR).
- **Valuta Logika:** - Minden költséget a rögzítéskori **helyi pénznemben** (`currency_code`) és az akkori váltószámmal átszámított **EUR-ban** is elmentünk.
- Képlet: $$Cost_{EUR} = Cost_{Local} \cdot ExchangeRate$$
- Ez biztosítja, hogy a nemzetközi flották egységes kimutatást kapjanak.
## 5. Dinamikus Paraméterezés (System Settings)
- **`auth.reward_days`**: Adminból állítható egész szám (alapértelmezett: 14).
- **`auth.reward_tier`**: Melyik csomagot kapja (alapértelmezett: PREMIUM).

View File

@@ -0,0 +1,52 @@
# 🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.1)
## 1. Hibakezelési Jegyzet (TypeError fix)
A rendszer korábbi verzióiban az `EmailManager` hívása paraméter-eltérést okozott.
- **Megoldás:** A `send_email` hívásakor tilos a `subject` paraméter átadása, mivel azt a szerviz a `template_key` alapján generálja a belső szótárából.
## 2. Adatbázis Integritás
Az `Organization` tábla bővült az `owner_id` mezővel, amely a magánszemély (Individual) flottájának tulajdonosát jelöli.
- Minden regisztrációkor létrejön egy automatikus flotta.
- A flotta típusa: `OrgType.INDIVIDUAL`.
## 3. Dinamikus Paraméterek
A regisztrációt követő jutalmak (pl. 14 napos prémium) a `data.system_settings` táblából kerülnek kiolvasásra.
Keresett kulcs: `auth.reward_days`.
# 🏁 REGISZTRÁCIÓ, MEGHÍVÓK ÉS API PROTOKOLL (v1.0)
## 1. Regisztrációs Flow (Atomcsapás-biztos tranzakció)
Minden új regisztráció egyetlen adatbázis-tranzakcióban (`Atomic`) hajtja végre az alábbiakat:
1. **User & Person létrehozása:** Alapidentitás rögzítése.
2. **Wallet inicializálás:** 0 Coin és 0 XP egyenleggel.
3. **Privát Flotta (Private Org):** Létrejön a felhasználó saját cége, ahol ő a tulajdonos.
4. **Meghívó feldolgozása:** - Ha `Personal Invite`: Bekötés a 10-5-2% jutalék láncba.
- Ha `Company Invite`: Másodlagos kapcsolat létrehozása a meghívó céghez (Role: Driver/Admin).
## 2. Meghívó Küldés Logikája (Invitation Engine)
- **Generálás:** Admin vagy jogosult User generál egy egyedi `invite_token`-t.
- **Típusok:**
- `REG_ONLY`: Csak a rendszerbe hív.
- `COMPANY_JOIN`: Meghatározott cégbe és pozícióba hív.
- **Jutalék számítás:**
A jóváírandó kredit $C$:
$$C = P_{amount} \cdot \frac{R_{level}}{100}$$
*Ahol $P$ a befizetett összeg, $R$ pedig az aktuális szint (10, 5 vagy 2) értéke.*
## 3. API Végpontok (Baseline v1)
- `POST /api/v1/auth/register`: Komplett onboarding folyamat.
- `POST /api/v1/auth/invite/send`: Meghívó generálása és küldése.
- `GET /api/v1/auth/invite/verify/{token}`: Token ellenőrzése regisztráció előtt.
## 4. Jelszó Helyreállítási Protokoll (Recovery)
A rendszer két szintű helyreállítást biztosít:
### A) Standard (Email alapú)
- `POST /api/v1/auth/forgot-password` -> Email kiküldése ideiglenes tokennel.
### B) Szigorú (Banki szintű / KYC alapú)
- **Végpont:** `POST /api/v1/auth/recover-identity`
- **Kötelező adatok:** Vezetéknév, Keresztnév, Anyja neve, Személyi igazolvány száma.
- **Logika:** 1. A rendszer azonosítja a `Person` rekordot.
2. Ha sikeres, a rendszer kiküld egy visszaállító linket a Person-höz tartozó **elsődleges telefonszámra (SMS)** vagy a **legutolsó aktív Email címre**.
3. Sikeres helyreállítás után a felhasználónak kötelezően jelszót kell cserélnie.

View File

@@ -1,25 +1,35 @@
(Az Üzleti Modell - A legfontosabb frissítés.)
# 💰 BILLING, CREDITS & SUBSCRIPTIONS
# 💰 BILLING, CREDITS AND MULTI-CURRENCY (v1.0)
## 1. Előfizetési Csomagok (SaaS)
## 1. Regionális és Valuta Logika (EU Scope)
A rendszer támogatja a többnyelvű és többvalutás elszámolást. Minden pénzügyi tranzakció két értéket tárol:
1. **Local Cost:** Helyi pénznemben rögzített összeg (pl. 45.000 Ft).
2. **Standard Cost (EUR):** A rögzítéskori középárfolyamon átszámított euró érték.
| Csomag | Ár (Havi) | Jármű | User | Funkciók |
| :--- | :--- | :--- | :--- | :--- |
| **FREE** | 0 Ft | 1 db | 1 | Geo Keresés (Sugár), Reklám, Nincs Export. |
| **PREMIUM** | ~1.490 Ft | 3 db | 1 | Útvonal Keresés, Nincs Reklám, Excel Export, Dokumentum Tár. |
| **PREMIUM+** | ~2.990 Ft | 5 db | 4 (Család) | Családi megosztás, Trust Score részletek. |
| **VIP** | Egyedi | 10+ | 5+ | Flotta funkciók, API, Sofőr App. |
**Átszámítási képlet:**
$$Cost_{EUR} = Cost_{Local} \cdot ExchangeRate$$
## 2. A "Free -> Premium" Szabály (Q10 Solution)
- A Free időszakban rögzített adatok **láthatóak maradnak**, de **nem képezik részét** a Prémium Elemzéseknek (TCO, Trendek).
- **Feloldás:** Visszamenőleges elemzéshez "Retroaktív Csomag" vagy folyamatos előfizetés szükséges.
## 2. Előfizetési Csomagok (Adminból állítható)
A csomagok limiteit (járműszám, funkciók) a `system_settings` tábla szabályozza.
## 3. Kredit Ökonómia (Coin)
- **Szerzés:** Adatfeltöltés (50 Coin), Meghívás (200 Coin), Validálás (5 Coin).
- **Költés:** Prémium előfizetés vásárlása, Skin-ek, Extra lekérdezések.
- **Kifizetés:** Nincs automatikus kifizetés. Nagy mennyiség esetén (pl. Üzletkötő) egyedi szerződés (Megbízási/Számlás) alapján, vagy jövőben Blokklánc (Stablecoin).
| Csomag | Jármű Limit | Kiemelt funkciók |
| :--- | :--- | :--- |
| **FREE** | 1 db | Csak GEO keresés, alap költséglog, nincs dokumentum/export. |
| **PREMIUM** | 3 db | Teljes dokumentum/fotó tár, útvonal alapú kereső, export. |
| **PREMIUM+** | 5 db | 5 felhasználó, flotta-szintű statisztika, TCO elemzés. |
| **VIP** | 10 db + | Bővíthető slotok, egyedi szerviz partnerek kezelése. |
## 4. Befizetési Technológiák
- **Stripe:** Nemzetközi kártyás fizetés.
- **Barion / SimplePay:** Magyar specifikus fizetés.
- **Coin Pack:** Mikrotanzakciók (pl. 500 Coin = 1000 Ft).
## 3. Evidence & Trust Engine (Bizonyíték kezelés)
A rendszer csak azokat a szerviz eseményeket tekinti **hitelesnek (Verified)**, amelyekhez tartozik:
- **Fotó:** Kilométeróra állásról és munkalapról.
- **Digitális számla:** Feltöltött PDF vagy kép.
- **GPS Check-in:** Igazolás, hogy a felhasználó valóban a szerviznél tartózkodott.
## 4. Szerviz Minősítési Rendszer
- Csak érvényes szerviz esemény után adható értékelés.
- **Fellebbezés:** A szolgáltató kérheti a valótlan/troll vélemény felülvizsgálatát.
- **Validátorok:** Magas rangú felhasználók pontokért/kreditért ellenőrizhetik a vitatott bejegyzéseket.
## 5. Lejárat és Helyreállítás
- **Grace Period (30 nap):** Csak rögzítés lehetséges, statisztika/lekérdezés zárolva.
- **Zárolás (60 nap):** A fiók írásvédetté válik.
- **Helyreállítás:** 6 hónapon belül visszamenőleges befizetéssel minden funkció (és a Free korszak adatai) aktiválódik.

View File

@@ -0,0 +1,22 @@
# 🧪 TESZTELÉSI ÉS ÉLESÍTÉSI ÚTMUTATÓ (v1.0)
## 1. Előkészületek a távoli teszteléshez
Mielőtt elindítanád a teszteket, győződj meg róla, hogy a háttérfolyamatok frissültek:
1. A `.env` fájl mentve van a helyes jelszavakkal.
2. A konténerek újraépítése és indítása:
`docker compose up -d --build` (Ez kényszeríti a Python kódot az új verzióra).
3. Ellenőrizd a logokat: `docker logs -f service_finder_api` (Itt látod, ha hiba van induláskor).
## 2. Tesztelési Forgatókönyvek (End-to-End)
### A) Új Regisztráció Teszt (Clean Registration)
- **Endpoint:** `POST /api/v1/auth/register`
- **Adat (JSON):**
```json
{
"email": "teszt.felhasznalo@profibot.hu",
"password": "nagyonerospassword123",
"first_name": "János",
"last_name": "Teszt",
"region_code": "HU"
}