5.7 KiB
🏗️ Logic Spec: Cég Garázsa (Company Onboarding & Garage UI)
1. Cél
Lehetővé tenni a felhasználó számára, hogy:
- Létrehozzon egy céget/szervezetet (Company Onboarding) 3 egyszerű lépésben
- A jobb felső sarokban lévő "Cég Garázsa" gombbal gyorsan elérje a cég flottáját
- Válthasson a személyes garázsa és a cég garázsa között
2. Meglévő Backend API
Már létező végpontok:
- POST /api/v1/organizations/onboard - Szervezet létrehozása (CorpOnboardIn séma)
- GET /api/v1/organizations/my - Felhasználó szervezeteinek listája
CorpOnboardIn séma mezői:
full_name, name, display_name, tax_number, reg_number, country_code, language, default_currency, address_zip, address_city, address_street_name, address_street_type, address_house_number, address_stairwell, address_floor, address_door, address_hrsz, contacts
Modell: Organization (fleet.organizations) + OrganizationMember + Branch
3. 3 Kártyára Bontva
#217 - Backend API bővítés
Végpontok:
- GET /api/v1/organizations/{org_id} - Részletes adatok
- PUT /api/v1/organizations/{org_id} - Frissítés
- PATCH /api/v1/users/me/active-organization - Aktív szervezet váltás
- DELETE /api/v1/organizations/{org_id} - Soft-delete
#218 - Frontend 3-lépéses Onboarding UI
Komponensek:
- CompanyOnboardingView.vue - 3-lépéses wizard (/company/onboard)
- CompanyGarageView.vue - Cég garázs (/company/garage)
- i18n kulcsok bővítése
- Router bővítés
#219 - Cég Garázsa gomb + szervezetváltás
Header gomb 3 állapota:
- Nincs cég -> "Cég létrehozása" -> /company/onboard
- Van cég, személyes mód -> "Cég Garázsa" -> PATCH + /company/garage
- Cég mód -> "Személyes mód" -> PATCH null + /dashboard
4. Header Layout
LOGO [≡ Funkciók] [🏢 Cég Garázsa] [🌐 EN] 👤
5. Végrehajtási Sorrend
- #217 Backend API (előfeltétel)
- #218 Frontend Onboarding UI
- #219 Cég Garázsa gomb integráció
6. Vizsgálati Eredmények (2026-06-07) - users.py audit
6.1 PATCH /users/me/active-organization - MÁR IMPLEMENTÁLVA!
A users.py (371-434. sor) tartalmazza az aktív szervezet váltás végpontot:
- Validálja, hogy a user tagja-e a szervezetnek (
OrganizationMemberlekérdezés) - Frissíti a
scope_id-t az adatbázisban - Új JWT tokent generál a frissített
scope_id-val - Visszaadja
UserWithTokenResponse-t (user + új token)
6.2 PersonUpdate schema - NEM alkalmas cégadatokra
A PersonUpdate séma (69-91. sor) CSAK személyes adatokat tartalmaz:
first_name,last_name,phonemothers_last_name,mothers_first_namebirth_place,birth_dateidentity_docs(személyi, útlevél, jogsi)address_*mezők- NINCSENEK benne cég/business mezők
6.3 Aktív szervezet váltás frontend integráció
A frontend auth store már tartalmazza:
active_organization_id: number | nullaUserProfileinterfészbenscope_level,scope_idmezők
6.4 Következtetés
A #217 kártya eredeti tervéből a PATCH /users/me/active-organization végpont MÁR KÉSZ.
Amit még kell a #217-ben:
GET /api/v1/organizations/{org_id}- cég részletes adatainak lekérésePUT /api/v1/organizations/{org_id}- cég adatainak frissítéseDELETE /api/v1/organizations/{org_id}- soft-delete
6.5 Típus inkonzisztencia
Az ActiveOrganizationUpdate séma organization_id mezője Optional[str] típusú, de az adatbázisban integer-ként használódik. Javítandó: Optional[int].
7. Végrehajtási Sorrend (Frissítve)
- #217 Backend API (már csak GET/PUT/DELETE kell - PATCH kész)
- #218 Frontend Onboarding UI
- #219 Cég Garázsa gomb integráció
8. KYC Privát Cég Vizsgálat (2026-06-07)
8.1 Hogyan jön létre a privát cég?
A KYC lezárásakor az AuthService.complete_kyc metódus automatikusan létrehoz egy privát szervezetet:
new_org = Organization(
full_name=org_full_name, # "{last_name} Flotta"
name=f"{p.last_name} Széfe", # pl. "Nagy Széfe"
org_type=OrgType.individual, # <-- PRIVÁT CÉG FLAG!
owner_id=user.id,
status="verified", # Azonnal verified
...
)
8.2 Van flag a privát cég azonosítására?
IGEN. Az OrgType enum individual értéke szolgál privátcég-jelzőként.
| org_type érték | Jelentés | Hol jön létre? |
|---|---|---|
individual |
Privát személyes "széf" | KYC lezárás (auth_service.py:255) |
business |
Valódi cég | /organizations/onboard végpont (organizations.py:70) |
service |
Szerviz | Későbbi regisztráció |
service_provider |
Szolgáltató partner | Későbbi regisztráció |
fleet_owner |
Flottatulajdonos | Későbbi regisztráció |
club |
Klub | Későbbi regisztráció |
8.3 Különbségek: Privát vs Valódi cég
| Tulajdonság | Privát (KYC) | Valódi (/onboard) |
|---|---|---|
org_type |
individual |
business |
status |
verified |
pending_verification |
tax_number |
NULL | Kötelező |
| Név | "{last_name} Flotta" |
Valós cégnév |
| Branch | "Home Base" |
"Központi Telephely" |
8.4 Hatás a #219-es kártyára
A "Cég Garázsa" gomb logikája:
GET /organizations/my→ visszaadja a user összes szervezetétorg_type == "individual"→ privát garázs gomborg_type == "business"→ cég garázs gombPATCH /users/me/active-organization→ váltás a kettő között