112 lines
4.2 KiB
Markdown
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 |
|
|
|
|
---
|