2.4 KiB
2.4 KiB
🛠️ DEVELOPER NOTES & TROUBLESHOOTING
1. ADATBÁZIS ÉS SQL FIXEK
Postgres Enum Case Sensitivity
- Probléma: Az SQLAlchemy Enum típusa és a Postgres Enum típusa ütközhet, ha a Python kódban nagybetűs stringet (
USER) küldünk. - Megoldás: Mindig használd a
.valueproperty-t vagy kényszerítsd a kisbetűs stringet:role="user".
Tábla oszlopok frissítése
- Probléma: A
Base.metadata.create_allnem adja hozzá az új oszlopokat a már meglévő táblákhoz. - Megoldás: Új mező esetén (pl.
social_provider,mothers_name) manuálisALTER TABLEparancsot kell futtatni vagy Alembic migrációt generálni.
2. BACKEND API HIBÁK
ImportError: create_access_token
- Ok: A
app.core.securitymodulban hiányzott a funkció, vagy elavult volt az import azendpoints/auth.py-ban. - Javítás: A
security.py-nak tartalmaznia kell ajosekönyvtárat használó tokengenerálást.
Üres Swagger (OpenAPI) felület
- Ok: Ha az SQLAlchemy Mapper vagy egy Pydantic séma importja hibás, a FastAPI nem tudja legenerálni a dokumentációt.
- Javítás: Ellenőrizd a
docker logskimenetét indításkor, keresd aMapperConfigurationErrorvagyImportErrorsorokat.
17. Developer Notes & Pitfalls
17.1. SQLAlchemy & Circular Imports
Hiba: InvalidRequestError: Mapper has no property 'organization'
Ok: Ha egy modellben definiálsz egy ForeignKey-t, de nem adod hozzá a relationship-et, a SQLAlchemy mapper inicializáláskor összeomolhat, ha egy másik modell próbál hivatkozni rá (back_populates).
Megoldás: Mindig párban definiáld a kapcsolatokat (FK + relationship).
Példa javítás (AssetAssignment):
organization_id = Column(Integer, ForeignKey("data.organizations.id"))
organization = relationship("Organization") # Ez hiányzott!
17.2. Configuration Missing
Hiba: AttributeError: 'Settings' object has no attribute 'STATIC_DIR' Tanulság: Ha fájlrendszer műveleteket végzel (pl. JSON export), mindig a core/config.py-ban definiáld az abszolút útvonalakat (BASE_DIR, STATIC_DIR), ne hardkódolj útvonalakat a service fájlokban.
17.3. Database Migrations
Best Practice: Ha mezőt adsz hozzá egy modellhez (pl. User.region_code), azonnal generálj Alembic migrációt (alembic revision --autogenerate), különben az API 500-as hibát dob, mert a Python objektum attribútuma létezik, de az SQL lekérdezés nem adja vissza az oszlopot.