RABC fejlesztése és beélesítése hibák kijavításával
This commit is contained in:
189
docs/p0_unified_workspace_impact_analysis_2026-06-18.md
Normal file
189
docs/p0_unified_workspace_impact_analysis_2026-06-18.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user