### ✅ Verifikáció 1. **Build ellenőrzés** → `npx vite build` sikeres (7.08s, 0 error) 2. **Chunk generálva**: `CostEntryWizard-C_-R4OzC.js` (29.95 kB) - refaktorált komponens helyesen fordul 3. **ProviderAutocomplete** újrafelhasználva mindhárom komponensben - nincs duplikáció --- ## Fix: 401 Unauthorized on Admin Ledger Endpoint (Gitea #413) **Dátum:** 2026-07-25 ... --- ## Fix: POST /api/v1/expenses/ — 500 Internal Server Error (PG ENUM vs varchar JOIN) **Dátum:** 2026-07-26 ### Probléma A `POST /api/v1/expenses/` végpont 500-as hibát dobott insurance (biztosítás) költség létrehozásakor. ### Gyökér-ok (két rétegben) 1. **Stale `.pyc` cache** → `ModuleNotFoundError: No module named 'app.models.fleet.org_role'` — A konténer régi bytecode-ot futtatott. Megoldva cache törléssel. 2. **PG ENUM vs varchar típusütközés** → `operator does not exist: fleet.orguserrole = character varying` — A `_check_org_capability()` függvény JOIN-t használt `OrganizationMember.role` (ENUM) és `OrgRole.name_key` (varchar) között, amit a PostgreSQL nem tud implicit konvertálni. ### Javítás [`expenses.py:93-117`](backend/app/api/v1/endpoints/expenses.py:93): - A JOIN-os lekérdezést két különálló SELECT-re bontottam (az `assets.py:_get_user_permissions()` mintájára) - **1. lépés:** `select(OrganizationMember.role)` → Python string (asyncpg auto-konvertálja az ENUM-ot) - **2. lépés:** `select(OrgRole.permissions).where(OrgRole.name_key == role_string)` — varchar=varchar összehasonlítás - Függvény interfésze változatlan ### Verifikáció - `POST /api/v1/expenses/` → **HTTP 201** ✅ - Biztosítási költség sikeresen létrejött --- ## Fix: 401 Unauthorized on Admin Ledger Endpoint (Gitea #413) **Dátum:** 2026-07-25 ### Probléma ... ### Documentation `docs/p0_expense_500_import_bugfix_2026-07-26.md` **Gitea Issue:** #421 (closed)