Files
service-finder/docs/nav_api_lookup_tax_analysis.md
2026-06-10 08:06:07 +00:00

112 lines
4.2 KiB
Markdown

# 🔍 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 |
---