refaktor címjegyzék
This commit is contained in:
@@ -129,3 +129,89 @@ A `docs/p0_address_manager_usage_audit_2026-07-01.md` auditban feltárt P0 kriti
|
||||
- Backend Python szintaxis: OK (all 3 files pass py_compile)
|
||||
- Import verifikáció: `Organization.address_id`=True, `Organization.address_city`=False (confirmed removed)
|
||||
- Sync Engine: 1274 OK, 0 Fixed, 26 Shadow Data (pre-existing ghost columns confirmed)
|
||||
|
||||
## 2026-07-01 - P0 CRITICAL HOTFIX: Fix 500 Error on /admin/providers List View
|
||||
|
||||
### 🎯 Cél
|
||||
A GET /api/v1/admin/providers végpont 500-as hibát dobott a denormalizált cím oszlopok eltávolítása után.
|
||||
|
||||
### 🔧 Root Cause & Fix
|
||||
**Root Cause 1 — Wrong ServiceStaging import:**
|
||||
Az `admin_providers.py` a `ServiceStaging`-et az `app.models.marketplace.service` modulból importálta, amely NEM tartalmazza a `full_address` és `city` mezőket. A helyes import az `app.models.marketplace.staged_data` modulból származik, amely rendelkezik ezekkel a mezőkkel.
|
||||
|
||||
**Root Cause 2 — AddressOut missing required `id` field:**
|
||||
A `get_provider_detail` és `update_provider` végpontok `AddressOut(...)`-ot konstruáltak a ServiceProvider flat address mezőiből, de az `AddressOut` séma `id: uuid.UUID` mezője kötelező (nem Optional). Mivel a ServiceProvider nem rendelkezik Address kapcsolattal, az `address_detail` mezőt `None`-ra kell állítani.
|
||||
|
||||
### 🔧 Változtatások
|
||||
1. **`backend/app/api/v1/endpoints/admin_providers.py:41`** — Import csere: `from app.models.marketplace.service import ServiceStaging` → `from app.models.marketplace.staged_data import ServiceStaging`
|
||||
2. **`backend/app/api/v1/endpoints/admin_providers.py:568`** — `address_detail=AddressOut(...)` → `address_detail=None` (get_provider_detail)
|
||||
3. **`backend/app/api/v1/endpoints/admin_providers.py:1340`** — `address_detail=AddressOut(...)` → `address_detail=None` (update_provider)
|
||||
|
||||
### ✅ Verifikáció
|
||||
- `GET /api/v1/admin/providers` (default): 200 ✅ (50 items)
|
||||
- `GET /api/v1/admin/providers?status=pending`: 200 ✅ (50 items)
|
||||
- `GET /api/v1/admin/providers/4`: 200 ✅ (address_detail=None)
|
||||
- Sorting by name/validation_score/status: 200 ✅
|
||||
- Search: 200 ✅ (4 results)
|
||||
|
||||
## 2026-07-01 - P0 BUGFIX: Organization Details 500 Error & Provider Raw Data
|
||||
|
||||
### 🎯 Cél
|
||||
Két P0 hibajavítás:
|
||||
1. **Organization Details 500 error** - A `fleet.organizations` táblából fizikailag eltávolított denormalizált cím oszlopok (15 db: address_city, billing_zip, notification_street_name, stb.) miatt a `PUT /{org_id}` végpont `setattr`-nál 500-as hibát dobott, ha a frontend elküldte ezeket a mezőket.
|
||||
2. **Provider Raw Data hiány** - A `GET /admin/providers/{id}` végpont ServiceProvider rekordoknál nem adta vissza a `raw_data` mezőt, így a frontend "Nyers adatok" tab üresen/mock adatként jelent meg.
|
||||
|
||||
### 🔧 Eredmények
|
||||
|
||||
**1. `admin_organizations.py` - Deprecated address field filter** (1341-1361. sor)
|
||||
- Bevezetve a `DEPRECATED_ADDRESS_FIELDS` halmaz, amely tartalmazza mind a 15 ghost oszlopot
|
||||
- A `update_organization` függvény `setattr` ciklusa előtt ezek a mezők kiszűrésre kerülnek `logger.warning` kíséretében
|
||||
- A GET végpont (`get_organization_details`) már korábban is helyesen, relationship-ekből töltötte a denormalizált mezőket (1114-1139. sor)
|
||||
|
||||
**2. `admin_providers.py` - Raw data hozzáadása ServiceProvider válaszhoz** (589-591. sor)
|
||||
- A `get_provider_detail` ServiceProvider ágához hozzáadva: `raw_data=sp.raw_data or {}`
|
||||
- Ezzel a frontend `RawDataViewer` komponense valós adatokat kap, nem üres/mock állapotot
|
||||
|
||||
### ✅ Verifikáció
|
||||
- Mindkét fájl Python szintaxis ellenőrzése: **OK**
|
||||
- `sync_engine.py` futtatás: **1274 elem OK, 0 hiba** - teljes szinkronban
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-02: Bugfix - Provider validációs érték és research_in_progress státusz (Gitea #393)
|
||||
|
||||
### 🎯 Cél
|
||||
Provider 1752 (Carnanny) esetén a validációs érték üres volt (validation_score=0), és a `research_in_progress` státusz nem jelent meg helyesen a frontend státuszablakában.
|
||||
|
||||
### 🔧 Root Cause & Fix - 4 bug javítva
|
||||
|
||||
**Bug 1 - Backend: `validation_score` hardcoded to 0 for staging providers**
|
||||
- **Hely:** [`admin_providers.py:613`](backend/app/api/v1/endpoints/admin_providers.py:613)
|
||||
- **Ok:** A `get_provider_detail` ServiceStaging ágában `validation_score=0` volt keménykódolva
|
||||
- **Fix:** `validation_score=ss.trust_score or 0` - így a trust_score értéke jelenik meg validation_score-ként
|
||||
|
||||
**Bug 2 - Frontend: `research_in_progress` hiányzott a statusLabel/statusDescription függvényekből**
|
||||
- **Hely:** [`index.vue:869-887`](frontend_admin/pages/providers/[id]/index.vue:869)
|
||||
- **Ok:** A switch csak 'approved', 'pending', 'rejected' eseteket kezelte
|
||||
- **Fix:** Hozzáadva: `case 'research_in_progress': return 'Kutatás folyamatban'` és magyarázó leírás
|
||||
|
||||
**Bug 3 - Frontend: `research_in_progress` hiányzott a CSS computed property-kből**
|
||||
- **Hely:** [`index.vue:774-808`](frontend_admin/pages/providers/[id]/index.vue:774)
|
||||
- **Ok:** A `statusBannerClass`, `statusIconClass`, `statusTextClass`, `statusSubtextClass` nem kezelték ezt a státuszt → piros (elutasított) stílust kapott
|
||||
- **Fix:** Mind a 4 computed property-hez hozzáadva a `research_in_progress` case kék színű (blue-500) Tailwind osztályokkal
|
||||
|
||||
**Bug 4 - Frontend: Moderációs műveletek rossz ágba kerültek**
|
||||
- **Hely:** [`index.vue:283`](frontend_admin/pages/providers/[id]/index.vue:283)
|
||||
- **Ok:** `v-if="provider.status === 'pending'"` csak a pending státuszt kezelte, a `research_in_progress` a `v-else` ágba esett ("elutasításra került")
|
||||
- **Fix:** `v-if="provider.status === 'pending' || provider.status === 'research_in_progress'"` - így a research_in_progress státuszú provider-ek is látják az Approve/Reject gombokat
|
||||
|
||||
### 📊 Adatbázis megállapítás
|
||||
- A `service_staging.trust_score` mező értéke 0 a DB-ben, de a `raw_data` JSON tartalmazza: `"trust_score": 20`
|
||||
- Ez egy OSM scout bot enrichment pipeline hiányosság - a bot nem extractálja a `trust_score`-t a `raw_data`-ból a staging oszlopba
|
||||
- A fix biztosítja, hogy AMIKOR a trust_score populálva lesz, az helyesen megjelenjen validation_score-ként
|
||||
|
||||
### ✅ Verifikáció
|
||||
- Backend Python szintaxis: **OK**
|
||||
- API konténer restart: **OK**
|
||||
- API hívás provider 1752-re: **200 OK** - status=research_in_progress, validation_score=0 (trust_score=0 miatt), raw_data jelen van
|
||||
- Frontend: mind a 4 Vue komponens módosítás érvényben
|
||||
|
||||
Reference in New Issue
Block a user