69 lines
4.6 KiB
Markdown
69 lines
4.6 KiB
Markdown
(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.
|
|
|
|
## Kulcs Táblacsoportok
|
|
1. **Fleet:** `vehicles`, `user_vehicles`, `vehicle_events`, `engine_specs`.
|
|
2. **Marketplace:** `service_providers`, `service_specialties`, `organization_locations`.
|
|
3. **Economy:** `wallets`, `transactions`, `shop_items`.
|
|
4. **Identity:** `users`, `persons`, `companies`.
|
|
|
|
## 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
|
|
|
|
## 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).
|
|
|
|
## 6. Flotta és Tulajdonjog Szabályok (v1.1)
|
|
- **Opcionális Járművek:** Egy flotta (Organization) létezhet járművek nélkül is. A rendszer nem kényszeríti a jármű rögzítését (pl. Flotta menedzser szerepkör esetén).
|
|
- **Átruházhatóság (Transferability):**
|
|
- `INDIVIDUAL` flotta: Nem átruházható, a felhasználóhoz kötött.
|
|
- `FLEET_OWNER / SERVICE` flotta: Átruházható (eladható), új tulajdonos (owner_id) rendelhető hozzá.
|
|
- **Cég Megszűnése:** Soft delete alkalmazása. A cég `is_active` státusza `False` lesz, a tulajdonosi viszony megszűnik, de a járművek életútjában (history) az adatok megmaradnak a visszakövethetőség miatt.
|
|
|
|
## 7. Gazdasági Izoláció
|
|
- **Gamification Korlát:** Csak `INDIVIDUAL` típusú flottákhoz tartozó `Person`-ok vehetnek részt a gamifikációban (XP gyűjtés).
|
|
- **Validációs Korlát:** Cég mint identitás nem validálhat szervizpontot, ezt mindig egy hozzárendelt, azonosított `Person` (alkalmazott/technikus) végzi.
|
|
|
|
## 8. Szervezeti és Gazdasági Szabályok
|
|
- **Identitás Elkülönítés:** A `Company` (Szervezet) entitás nem kap `XP_Ledger` és `Coin_Wallet` rekordot a gamifikációhoz. Ezek kizárólag a `Person` (valós személy) szintjén léteznek.
|
|
- **Automatizált Felügyelet:** Egy ütemezett feladat (Cron/Celery) havonta ellenőrzi a cégek státuszát a külső adatbázisokban.
|
|
- **Értékelési rendszer (Rating):**
|
|
- **Person:** Egyéni teljesítmény, megbízhatóság.
|
|
- **Service (Szerviz):** Szolgáltatási minőség.
|
|
- **Vehicle (Jármű):** Műszaki állapot és előélet.
|
|
- *Megjegyzés:* A Cég (mint flotta) nem kap önálló értékelést, a hírneve a tagjai és járművei minősítéséből adódik össze. |