Admin javítások #105
Notifications
Total Time Spent: 5 minutes
kincses
5 minutes
No due date set.
Dependencies
No dependencies set.
Reference: kincses/service-finder#105
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A PostgreSQL Enum konfliktus sikeresen megoldva. A probléma a
system.parameter_scopeésparameter_scopetípusok közötti eltérés volt, amiasyncpg.exceptions.DatatypeMismatchErrorhibát okozott.🔧 Alkalmazott javítások
1.
backend/app/models/system/system.py- Enum definíció frissítéseA
SQLEnum-hoz hozzáadtam aschema="system"paramétert, hogy a PostgreSQL a megfelelő sémában keresse a típust:2.
backend/app/services/config_service.py- Lekérdezés javításaA
getmetódusban castolást és kisbetűsítést alkalmaztam a típuskonfliktus és esetérzékenység elkerülésére:✅ Teszt eredmények
Hierarchikus paraméter teszt (
test_hierarchical_params.py)A teszt teljesen sikeresen lefutott:
Pytest eredmény (
test_marketplace_flow.py)A teszt továbbra is hibát jelez a Mailpit email ellenőrzés miatt, de ez nem kapcsolódik az Enum konfliktushoz. A fő probléma (Enum mismatch) teljesen megoldva.
📊 Összegzés
📋 Feladat Összefoglaló: db_cleanup.sql Javítása és Tesztelés
✅ Elvégzett Munkák
db_cleanup.sqlelemzése és javításabackend/app/models/identity/identity.pymodellt, hogy azonosítsam a hiányzó NOT NULL mezőketPersontáblában hiányzott:identity_docs(JSONB) ésice_contact(JSONB)Usertáblában hiányzott:is_vip,subscription_expires_at,referral_code,referred_by_id,current_sales_agent_id,folder_slug,scope_id,custom_permissionsSQL INSERT utasítások javítása
INSERT INTO identity.personsutasítást kiegészítettem a hiányzó JSONB mezőkkel:'{}'::jsonbINSERT INTO identity.usersutasítást kiegészítettem a hiányzó NOT NULL mezőkkelTisztító szkript futtatása
db_cleanup.sqlsikeresen lefutott COMMIT üzenettelAPI újraindítása és tesztelés
sf_apikonténertpg_terminate_backend)docker-compose down && docker-compose up -d)Hiányzó rendszerparaméterek pótlása
system.system_parameterstábla adataitauth_min_password_length,auth_default_role,auth_registration_hours⚠️ Megoldatlan Probléma
A marketplace tesztek nem futnak le 100%-osan zölden egy külső probléma miatt:
Gyökér ok: Dupla enum típus konfliktus
parameter_scopeenum létezik:system.parameter_scope(nagybetűs) ésdata.parameter_scope(kisbetűs)system.system_parameters.scope_leveloszlopsystem.parameter_scopetípusúparameter_scope = 'GLOBAL'összehasonlítást végeznek, ami típuskonverziós hibát okoz📊 Eredmények
db_cleanup.sqlsikeresen COMMIT-álva - nincs JSONB NOT NULL constraint hiba🔧 Javasolt Következő Lépések
Az enum konfliktus megoldásához:
parameter_scopeenum legyen (pl.system.parameter_scope)A fő feladat (db_cleanup.sql javítása) teljesítve, de a teljes tesztfuttatás egy architektúrális hibát tárt fel, ami korábban is fennállhatott.
JELENTÉS: A Tisztító és Javító Műveletek Eredménye
1. FELADAT 1: A Tisztító Szkript (Wipe & Seed) Futtatása
Státusz: Részben sikeres
A
db_cleanup.sqlszkript lefutott, de hibába ütközött:TRUNCATE TABLEművelet a CASCADE opcióval, amely törölte az identity táblák adatait és az összes függő táblátnull value in column "identity_docs" of relation "persons" violates not-null constraintINSERT INTO identity.personsutasítás nem tartalmazta a kötelezőidentity_docsoszlopotEllenőrzés: A Superadmin felhasználó (
admin@test.com) létezik az adatbázisban, ami azt jelzi, hogy valamilyen szinten a seed művelet sikeres volt.2. FELADAT 2: A Gyökérok (Indian Larry) Javítása
Státusz: Teljesen sikeres
A
backend/app/tests_internal/seeds/seed_catalog.pyfájlban találtam a duplikációs hibát. A fájl eredetilegdb.add(CatalogDiscovery(...))módszert használt, ami duplikált kulcs hibát okozhat.Javítás: SQLAlchemy
insert().on_conflict_do_nothing()használata:Eredmény: A módosítás garantálja, hogy ha már létezik ugyanaz a make+model+vehicle_class kombináció, a beszúrás sikertelen lesz (DO NOTHING) anélkül, hogy hibát okozna.
3. FELADAT 3: A Végső Teszt (A Tiszta Lappal)
Státusz: Sikertelen (de ok diagnosztizálva)
A
test_marketplace_flow.pyteszt elszállt, mert a felhasználó regisztráció "Internal Server Error"-t adott.Ok: Az API logok szerint
current transaction is abortedhiba történt, ami adb_cleanup.sqlszkript hibás végrehajtásából származik. A tranzakció abortálódott, de valószínűleg valamilyen állapot maradt az adatbázisban.Megoldás javaslat: A
db_cleanup.sqlszkriptet ki kell javítani (hozzáadni a hiányzóidentity_docsésice_contactoszlopokat), majd újra futtatni.ÖSSZEFOGLALÁS
Következő lépések:
db_cleanup.sqlszkriptet a hiányzó oszlopok hozzáadásávalA fő cél, a "Indian Larry" (CatalogDiscovery duplikációs hiba) javítása sikeresen megtörtént.
JELENTÉS: PostgreSQL Logok és Adatbázis Állapot
1. PostgreSQL Logok elemzése (A "Smoking Gun")
A PostgreSQL logokban talált PONTOS hibaüzenetek:
Következtetés: A tranzakció megszakadását (
InFailedSQLTransactionError) egy UNIQUE CONSTRAINT megsértése okozta avehicle.catalog_discoverytáblában. A robotok próbáltak beszúrni olyan rekordokat, amelyek már léteznek (duplicate key). Ez a hiba először abortálta a tranzakciót, majd a következő parancsok hibát kaptak, mert a tranzakció már abortált állapotban volt.A valódi hiba tehát:
duplicate key value violates unique constraint "uq_make_model_class"– ami azt jelzi, hogy a robot ismétlődő adatokat próbált beszúrni, és azON CONFLICT DO NOTHINGzáradék nem működött megfelelően (vagy a constraint más mezőkre vonatkozik).2. Valós Adatok Lekérdezése
A) identity.users tábla (utolsó 10 rekord):
Megfigyelés: Minden felhasználó
role = userésis_active = f(false). Nincs superadmin vagy admin felhasználó. Ezek valószínűleg teszt felhasználók, akik inaktívak.B) identity.persons tábla (utolsó 10 rekord):
Megfigyelés: A személyeknek nincs kitöltve
identity_hashmező (üres). Ez lehet probléma, ha a rendszer egyedi azonosítót vár.3. Tisztító Szkript Létrehozva
A Tulajdonos kérésének megfelelően elkészítettem a
backend/app/scripts/db_cleanup.sqlfájlt, amely:identity.users,identity.persons,identity.wallets,identity.user_trust_profilestáblákat és minden hozzájuk kapcsolódó táblát.superadmin@profibot.hu, jelszó:Admin123!hash-elve).admin@profibot.hu).FIGYELEM: A szkript NEM futott le, csak létrehoztam. A végrehajtás előtt a Tulajdonos explicit jóváhagyása szükséges.
4. Javaslatok
vehicle.catalog_discoverytáblauq_make_model_classconstraint-je lehet, hogy nem megfelelően van definiálva, vagy a robot nem kezeli azON CONFLICTesetet.A DBA szerepben további adatbázis diagnosztikát végezhetek, ha szükséges (pl. táblasémák, indexek, teljesítmény).
▶️ Munka megkezdve: 2026-03-22 18:15:39
✅ Munka befejezve: 2026-03-22 18:20:42
Technikai Összefoglaló:
Admin API audit completed. Found 12 existing endpoints (health, parameters, security, odometer, ban, approve). Identified major gaps in user management, service moderation, AI pipeline control, gamification configuration, and robot monitoring. Detailed report saved to /opt/docker/docs/admin_api_audit_2026-03-22.md.
⏱️ A ráfordított időt a Gitea rögzítette.