# P0 PRE-FLIGHT CHECK: Unified Workspace Impact Analysis **Dátum:** 2026-06-18 **Auditor:** Architect Mode **Cél:** A 28-as User (tester_pro@profibot.hu) privát járműveinek organization_id auditja, mielőtt bevezetjük az új "Unified Workspace" szabályt (ahol a hozzáférés szigorúan organization_id + OrganizationMember alapú). --- ## 1. 🔍 SZERVEZETI STRUKTÚRA (Organization Audit) ### 1.1 User 28 → Person 29 | Mező | Érték | |------|-------| | User ID | **28** | | Email | tester_pro@profibot.hu | | Person ID | **29** | | Név | Tester Profibot | ### 1.2 Privát Garázs (individual type) A 28-as User saját "Privát Garázsa": | Mező | Érték | |------|-------| | **Organization ID** | **21** | | Név | Private_28 | | Típus | `individual` | | Tulajdonos (owner_id) | 29 (Person) | | folder_slug | priv_28 | ### 1.3 A Person 29 által birtokolt összes szervezet | Org ID | Név | Típus | Van tagja? | |--------|-----|-------|-----------| | 15 | Profibot Test Fleet | `fleet_owner` | ❌ NINCS | | **21** | **Private_28** | **`individual`** | **❌ NINCS** | | 26 | Test Kft. Alpha | `fleet_owner` | ❌ NINCS | | 27 | Test Kft. Beta | `fleet_owner` | ❌ NINCS | | 38 | Admin Széfe | `individual` | ❌ NINCS | ### 1.4 Ahol Person 29 TAG (OrganizationMember) | Org ID | Név | Típus | Szerep | |--------|-----|-------|--------| | 63 | Aszalós Motorszervíz | `service_provider` | ADMIN | **⚠️ KRITIKUS:** Person 29 NEM tagja a saját privát garázsának (org 21)! A `fleet.organization_members` táblában egyetlen rekord sincs a `Private_28`-hoz. --- ## 2. 🚗 JÁRMŰVEK ÁLLAPOTA (Assets Audit) ### 2.1 Person 29 tulajdonában lévő összes jármű | # | ID (UUID) | Rendszám | Márka | Modell | current_org_id | owner_org_id | Státusz | |---|-----------|----------|-------|--------|---------------|-------------|---------| | 1 | deb42aea... | QWE123 | APRILIA | af1 | **44** | 44 | active/draft | | 2 | da49269e... | TTRFGHZT | BAYLINER | 1750 CAPRY BOWRIDER | **44** | 44 | active/draft | | 3 | 72b0a0cf... | UOK795 | Honda | CB1000R | **NULL** ⚠️ | 34 | active/verified | | 4 | 0b97a975... | PKT215 | Mazda | 2 | **NULL** ⚠️ | 34 | active/draft | | 5 | 09700990... | AIML519 | Skoda | Citigo e | **NULL** ⚠️ | 34 | active/enriched | | 6 | 104d6753... | ABC-123 | Toyota | Corolla | **34** | 34 | active/verified | ### 2.2 Érintett szervezetek részletei | Org ID | Név | Típus | Tulajdonos | |--------|-----|-------|-----------| | 21 | Private_28 | `individual` | Person 29 ✅ | | 34 | Swagger-Test Kft. | `business` | Nincs tulajdonos (owner_id = NULL) | | 44 | Profibot Kft. | `business` | User 86 | --- ## 3. 📊 HATÁSELEMZÉS (Impact Analysis) ### 3.1 Unified Workspace forgatókönyv Ha bevezetjük a szabályt: **"Egy User csak olyan járművet érhet el, ahol a `current_organization_id` egyezik egy olyan Organization-nel, aminek a User tagja (OrganizationMember)"**: #### 3.1.1 NULL current_organization_id-val rendelkező járművek **3 jármű** (Honda CB1000R, Mazda 2, Skoda Citigo e) **jelenleg NULL** `current_organization_id`-val rendelkezik. Ezek: - Nincsenek egyetlen szervezethez sem rendelve jelenleg - Csak a `owner_person_id = 29` alapján lennének elérhetők - **Az új szabály szerint KI lennének ZÁRVA** (orphaned), mert nincs organization contextusuk #### 3.1.2 Más szervezethez rendelt járművek **3 jármű** (Toyota Corolla → org 34, Aprilia + Bayliner → org 44) olyan szervezetekhez van rendelve, amelyeknek Person 29 NEM tagja: - **Toyota Corolla** (`current_org = 34` = Swagger-Test Kft.) → **KI VAN ZÁRVA** (Person 29 nem tag) - **APRILIA** (`current_org = 44` = Profibot Kft.) → **KI VAN ZÁRVA** (Person 29 nem tag) - **BAYLINER** (`current_org = 44` = Profibot Kft.) → **KI VAN ZÁRVA** (Person 29 nem tag) ### 3.2 Összegzés | Kategória | Darab | Járművek | Sorsa új szabály alatt | |-----------|-------|----------|----------------------| | NULL current_org_id | **3** | Honda, Mazda, Skoda | ❌ ORPHANED | | Idegen org (nincs tagság) | **3** | Toyota (org 34), Aprilia+Bayliner (org 44) | ❌ ORPHANED | | Saját privát garázsban (org 21) | **0** | — | ✅ OK | | **ÖSSZESEN** | **6/6** | **MIND** | **❌ 100%-OS ORPHANED** | --- ## 4. 💾 ELŐKÉSZÍTETT SQL JAVÍTÁS (NE FUTTASD KI - CSAK TERVEZÉS) ### 4.1 Első lépés: Person 29 felvétele a Private_28 (org 21) tagjai közé ```sql INSERT INTO fleet.organization_members (organization_id, user_id, person_id, role, is_permanent, is_verified, status) VALUES (21, 28, 29, 'OWNER', true, true, 'active'); ``` **VAGY ha a user_id nem elvárás (person_id alapú):** ```sql INSERT INTO fleet.organization_members (organization_id, person_id, role, is_permanent, is_verified, status) VALUES (21, 29, 'OWNER', true, true, 'active'); ``` ### 4.2 Második lépés: NULL current_organization_id javítása ```sql UPDATE vehicle.assets SET current_organization_id = 21 WHERE owner_person_id = 29 AND current_organization_id IS NULL; ``` Ez a **Honda CB1000R** (UOK795), **Mazda 2** (PKT215) és **Skoda Citigo e** (AIML519) járműveket beköti a Privát Garázsba. ### 4.3 Harmadik lépés: Üzleti döntés szükséges A következő járművekhez **üzleti döntés** kell: 1. **Toyota Corolla** (ABC-123) - `current_org = 34, owner_org = 34` - **Opció A:** Áttenni a Private_28-ba (org 21) - **Opció B:** Felvenni Person 29-et a Swagger-Test Kft. (org 34) tagjai közé - **Opció C:** Megtartani a jelenlegi állapotot és kivételt képezni az új szabály alól 2. **APRILIA af1** (QWE123) + **BAYLINER** (TTRFGHZT) - `current_org = 44, owner_org = 44` - **Opció A:** Áttenni a Private_28-ba (org 21) - **Opció B:** Felvenni Person 29-et a Profibot Kft. (org 44) tagjai közé (de User 86 a tulajdonos!) - **Opció C:** Megtartani a jelenlegi állapotot ### 4.4 Teljes körű SQL javítás (ha az összes járművet a privát garázsba tennénk) ```sql -- 1. Person 29 taggá tétele a Private_28-ban INSERT INTO fleet.organization_members (organization_id, user_id, person_id, role, is_permanent, is_verified, status) VALUES (21, 28, 29, 'OWNER', true, true, 'active'); -- 2. Összes jármű áthelyezése a Private_28-ba UPDATE vehicle.assets SET current_organization_id = 21 WHERE owner_person_id = 29; ``` --- ## 5. ⚠️ KIEGÉSZÍTŐ MEGJEGYZÉSEK ### 5.1 User 28 soft-deleted állapota A korábbi audit ([`docs/db_schema_ownership_audit_2026-06-18.md`](docs/db_schema_ownership_audit_2026-06-18.md)) feltárta, hogy User 28 **soft-deletelve** van (`is_deleted = true`, `deleted_at = 2026-06-14`). Ez azt jelenti: - Jelenleg NEM tud bejelentkezni - Még az adatjavítás után sem fér hozzá a járművekhez, amíg a fiókja nincs visszaállítva ### 5.2 Tervezési ajánlás Az új "Unified Workspace" szabály bevezetése ELŐTT kötelező: 1. **Adatjavítás:** A NULL `current_organization_id`-val rendelkező járművek bekötése 2. **Tagság rögzítése:** Minden `individual` típusú org tulajdonosának automatikus OWNER taggá tétele 3. **Üzleti járművek felülvizsgálata:** Döntés a org 34-be és 44-be sorolt járművekről 4. **User 28 restore:** A soft-delete feloldása a KYC/restore folyamaton keresztül 5. **Átmeneti időszak:** Az `owner_person_id` alapú hozzáférés megtartása fallback-ként, amíg a fenti pontok nem teljesülnek --- ## 6. 🔮 ARCHITECT AJÁNLÁS **Javaslat:** NE vezessük be a "pure Unified Workspace"-t (kizárólag org + membership alapú hozzáférés), amíg: 1. Az összes `individual` org-nak nincs automatikusan létrehozott OWNER OrganizationMember rekordja 2. Az összes meglévő jármű `current_organization_id` mezője ki van töltve 3. A soft-deletelt userek vissza vannak állítva vagy tisztázva van a státuszuk **Ajánlott átmeneti megoldás:** Tartsd meg az `owner_person_id == user.person_id` ellenőrzést fallback-ként az org-based check mellett, amíg a fenti adatjavítások meg nem történnek.