# 🔍 NAV API Tax Number Lookup - Hibaelemzés és Javítási Terv **Dátum:** 2026-06-07 **Gitea Issue-ek:** #224 (NAV API aláírás), #226 (Frontend CSS import) **Elemző:** Rendszer-Architect --- ## 1. Összefoglaló Két független hibát azonosítottam: 1. **Frontend**: A Vite fejlesztői szerver nem tudja feloldani a `flag-icons/css/flag-icons.css` importot → `npm install` hiányzik 2. **Backend (NAV API)**: A NAV Online Számla API v3 `queryTaxpayer` hívása `INVALID_REQUEST_SIGNATURE` hibát ad → valószínűleg érvénytelen `NAV_API_SIGN_KEY` --- ## 2. Frontend Hiba: flag-icons CSS import ### 2.1. Helyszín - [`frontend/src/main.ts:13`](/opt/docker/dev/service_finder/frontend/src/main.ts) - `import 'flag-icons/css/flag-icons.css'` - [`frontend/package.json:14`](/opt/docker/dev/service_finder/frontend/package.json) - `"flag-icons": "^7.5.0"` függőség ### 2.2. Ok A `flag-icons` npm csomag deklarálva van a `package.json`-ban, de **nincs telepítve** a `node_modules`-ban. Ez tipikusan akkor fordul elő, ha: - A függőséget kézzel adták hozzá a `package.json`-hoz, de `npm install` nem futott le - A `node_modules` mappa régi, és `npm install` vagy `npm update` szükséges ### 2.3. Javítás ```bash cd /opt/docker/dev/service_finder/frontend && npm install ``` --- ## 3. Backend Hiba: NAV API INVALID_REQUEST_SIGNATURE ### 3.1. Helyszín - [`backend/app/services/nav_service.py`](/opt/docker/dev/service_finder/backend/app/services/nav_service.py) - Teljes NAV API integráció - [`backend/app/api/v1/endpoints/organizations.py:124`](/opt/docker/dev/service_finder/backend/app/api/v1/endpoints/organizations.py) - `/lookup-tax/{tax_number}` végpont - [`backend/app/core/config.py:130`](/opt/docker/dev/service_finder/backend/app/core/config.py) - NAV konfigurációs mezők - [`.env:90`](/opt/docker/dev/service_finder/.env) - NAV API hitelesítő adatok ### 3.2. A Hiba Lánca 1. Felhasználó meghívja: `GET /api/v1/organizations/lookup-tax/24742063` 2. `NavService.query_taxpayer()` összeállítja a SOAP/XML kérést 3. Kiszámolja az aláírást: `SHA3-512(requestId + timestamp + NAV_API_SIGN_KEY)` 4. NAV API válasz: `HTTP 400` → `INVALID_REQUEST_SIGNATURE` ("Érvénytelen kérés aláírás") 5. `query_taxpayer()` visszatér `None`-nal 6. A végpont `HTTP 404`-et ad: "Cég nem található a NAV adatbázisában" ### 3.3. Tesztelt Aláírási Módszerek | Módszer | Eredmény | |---------|----------| | SHA3-512(requestId + timestamp + signKey) | ❌ INVALID_REQUEST_SIGNATURE | | SHA3-512(requestId + timestamp + passwordHash) | ❌ INVALID_REQUEST_SIGNATURE | | SHA3-512(requestId + timestamp + exchangeKey) | ❌ INVALID_REQUEST_SIGNATURE | | HMAC-SHA3-512(signKey, requestId + timestamp) | ❌ INVALID_REQUEST_SIGNATURE | | SHA3-512(requestId + timestamp) (no key) | ❌ INVALID_REQUEST_SIGNATURE | ### 3.4. Következtetés **Minden** aláírási módszer ugyanazt a hibát adja vissza, ami arra utal, hogy **nem a kódban lévő aláírás-számítás a hibás, hanem maguk a hitelesítő adatok érvénytelenek**. Gyanús elemek: - `NAV_API_SIGN_KEY=02-b52b-3d9e7d638c695EPWNIUAEGHS` - a formátuma nem szabványos (nem UUID, nem base64) - `NAV_API_EXCHANGE_KEY=a5cf5EPWNIU9DP8O` - szintén rövid, nem szabványos ### 3.5. Javítási Terv #### 1. lépés: Új NAV API kulcsok igénylése Látogass el a NAV Online Számla teszt portáljára: - https://onlineszamla.nav.gov.hu/ - Regisztráció után generálj új `signKey` és `exchangeKey` párost #### 2. lépés: Frissítsd a `.env` fájlt ```env NAV_API_USER=<új felhasználónév> NAV_API_PASSWORD=<új jelszó> NAV_API_SIGN_KEY=<új signKey> NAV_API_EXCHANGE_KEY=<új exchangeKey> NAV_API_CALLER_TAX_NUMBER="48952046133" ``` #### 3. lépés: Teszteld a kapcsolatot ```bash docker exec sf_api python3 -c " from app.services.nav_service import NavService import asyncio result = asyncio.run(NavService.query_taxpayer('24742063')) print(result) " ``` --- ## 4. Kapcsolódó Gitea Issue-ek | ID | Cím | Státusz | |----|-----|---------| | #224 | 🔴 Hiba: NAV API aláírás (INVALID_REQUEST_SIGNATURE) | Nyitott | | #225 | 🔴 Hiba: Frontend - flag-icons CSS import | Nyitott (duplikátum?) | | #226 | Frontend: flag-icons CSS import hiba | Nyitott | ---