Save test environment changes
This commit is contained in:
40
docs/V01_gemini/05_AUTH_AND_IDENTITY_SPEC.md
Normal file
40
docs/V01_gemini/05_AUTH_AND_IDENTITY_SPEC.md
Normal 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.
|
||||
@@ -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).
|
||||
@@ -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).
|
||||
52
docs/V01_gemini/07_REGISTRATION_INVITATION_AND_API.md
Normal file
52
docs/V01_gemini/07_REGISTRATION_INVITATION_AND_API.md
Normal 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.
|
||||
@@ -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.
|
||||
22
docs/V01_gemini/16_TESTING_AND_DEPLOYMENT_GUIDE.md
Normal file
22
docs/V01_gemini/16_TESTING_AND_DEPLOYMENT_GUIDE.md
Normal 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"
|
||||
}
|
||||
Reference in New Issue
Block a user