frontend 2026-06-10 bontva a 2 felület
This commit is contained in:
94
docs/nav_api_v3_fix_audit.md
Normal file
94
docs/nav_api_v3_fix_audit.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 🔍 NAV API v3 Fix Audit - Hiányosságjelentés
|
||||
|
||||
**Dátum:** 2026-06-07
|
||||
**Vizsgált Issue:** #227
|
||||
**Forrásdokumentáció:** [`docs/nav_api_v3_fix_summary.md`](docs/nav_api_v3_fix_summary.md)
|
||||
|
||||
## Összefoglaló
|
||||
|
||||
A [`docs/nav_api_v3_fix_summary.md`](docs/nav_api_v3_fix_summary.md) dokumentációban leírt 3 javítási lépésből **egyik sem lett végrehajtva**. Az alábbi táblázat mutatja a pontos állapotot.
|
||||
|
||||
## Részletes Hiányosság-leképezés
|
||||
|
||||
### 1. `.env` fájl - ❌ Idezőjelek még mindig jelen
|
||||
|
||||
| Mező | Jelenlegi érték | Helyes érték |
|
||||
|------|----------------|--------------|
|
||||
| [`NAV_API_PASSWORD`](.env:91) | `'Tevelegelek&99'` (aposztrófokkal, 14 karakter) | `Tevelegelek&99` (12 karakter) |
|
||||
| [`NAV_API_CALLER_TAX_NUMBER`](.env:94) | `"48952046133"` (idézőjellel, 12 karakter) | `48952046133` (11 karakter) |
|
||||
|
||||
**Következmény:**
|
||||
- `passwordHash = SHA-512("'Tevelegelek&99'")` → **ROSSZ hash** (aposztrófokkal)
|
||||
- `caller_tax_number_core[:8]` → `'"4895204'` → **ROSSZ adószám**
|
||||
|
||||
### 2. [`backend/app/core/config.py`](backend/app/core/config.py) - ❌ HIÁNYZIK a `strip_quotes` field_validator
|
||||
|
||||
A [`config.py:130-136`](backend/app/core/config.py:130) sorokban a NAV_API_* mezők definiálva vannak, de **nincs hozzáadva** a `field_validator`.
|
||||
|
||||
**Hiányzó kód** (beszúrandó a [`config.py:136`](backend/app/core/config.py:136) sor után):
|
||||
```python
|
||||
@field_validator('NAV_API_PASSWORD', 'NAV_API_SIGN_KEY', 'NAV_API_EXCHANGE_KEY', 'NAV_API_CALLER_TAX_NUMBER')
|
||||
@classmethod
|
||||
def strip_quotes(cls, v: str) -> str:
|
||||
if v:
|
||||
v = v.strip()
|
||||
if len(v) >= 2 and v[0] == v[-1] and v[0] in ('"', "'"):
|
||||
v = v[1:-1]
|
||||
return v
|
||||
```
|
||||
|
||||
### 3. [`backend/app/services/nav_service.py`](backend/app/services/nav_service.py) - ❌ HIÁNYZIK a `.strip()` hívás
|
||||
|
||||
A [`nav_service.py:134-138`](backend/app/services/nav_service.py:134) sorokban és a [`nav_service.py:127-131`](backend/app/services/nav_service.py:127) sorokban is hiányzik a `.strip()`:
|
||||
|
||||
```python
|
||||
# JELENLEGI (hibás):
|
||||
target_tax_number_core = (
|
||||
tax_number
|
||||
.replace("-", "")
|
||||
.replace(" ", "")[:8]
|
||||
)
|
||||
|
||||
# HELYES:
|
||||
target_tax_number_core = (
|
||||
tax_number
|
||||
.strip()
|
||||
.replace("-", "")
|
||||
.replace(" ", "")[:8]
|
||||
)
|
||||
```
|
||||
|
||||
```python
|
||||
# JELENLEGI (hibás) - caller_tax_number_core:
|
||||
caller_tax_number_core = (
|
||||
settings.NAV_API_CALLER_TAX_NUMBER
|
||||
.replace("-", "")
|
||||
.replace(" ", "")[:8]
|
||||
)
|
||||
|
||||
# HELYES:
|
||||
caller_tax_number_core = (
|
||||
settings.NAV_API_CALLER_TAX_NUMBER
|
||||
.strip()
|
||||
.replace("-", "")
|
||||
.replace(" ", "")[:8]
|
||||
)
|
||||
```
|
||||
|
||||
## Javítási Sorrend (Kötelező)
|
||||
|
||||
| # | Fájl | Művelet | Parancs |
|
||||
|---|------|---------|---------|
|
||||
| 1 | `.env` | Idézőjelek eltávolítása | Kézi szerkesztés |
|
||||
| 2 | [`backend/app/core/config.py`](backend/app/core/config.py) | `strip_quotes` field_validator hozzáadása | Szerkesztés |
|
||||
| 3 | [`backend/app/services/nav_service.py`](backend/app/services/nav_service.py) | `.strip()` hozzáadása mindkét helyen | Szerkesztés |
|
||||
| 4 | Konténer újraindítás | `docker compose restart sf_api` | `docker compose restart sf_api` |
|
||||
| 5 | Teszt | Lekérdezés futtatása | `docker exec sf_api python3 -c "from app.services.nav_service import NavService; import asyncio; result = asyncio.run(NavService.query_taxpayer('24742063')); print(result)"` |
|
||||
|
||||
## Gyökérok Elemzés
|
||||
|
||||
A jelenlegi `INVALID_REQUEST_SIGNATURE` hiba oka:
|
||||
|
||||
1. A `passwordHash` aposztrófokkal együtt lett hash-elve → a NAV szerver nem ismeri fel a jelszót
|
||||
2. A `caller_tax_number` idézőjellel együtt kerül a `<user><taxNumber>` mezőbe → a NAV szerver a hívó felet sem tudja azonosítani
|
||||
3. Mivel a fenti két érték hibás, a teljes `requestSignature` is érvénytelen lesz, mert a NAV szerver a felhasználó azonosítása után számolja ki a saját oldalán a várható signature-t
|
||||
Reference in New Issue
Block a user