[BUG] Quick-add provider cégek megjelennek a Cégeim menüben; státusz és tulajdonos probléma #266

Closed
opened 2026-06-17 21:25:52 +02:00 by kincses · 7 comments
Owner

Mérföldkő: Szolgáltató Rendszer Javítások
Cél: A gyors szolgáltató felvételnél (quick-add provider) létrejövő szervezetek hibásan jelennek meg a felhasználó Cégeim menüjében, nincs megfelelő tulajdonosuk, és a státuszuk eltér a vártól.

🔗 Függőségek (Dependencies)

  • Bemenet (Mikre támaszkodik): backend/app/api/v1/endpoints/organizations.py (GET /my endpoint), backend/app/services/provider_service.py (quick_add_provider), backend/app/models/marketplace/organization.py (Organization modell), frontend/src/components/header/HeaderCompanySwitcher.vue
  • Kimenet (Mik támaszkodnak rá): Admin felület, Szolgáltató kereső, Cégeim menü

📝 Elemzés

Három összefonódó hiba:

  1. Cégeim menüben való megjelenés: A GET /organizations/my endpoint (organizations.py:183-186) minden szervezetet visszaad, ahol a user tag az OrganizationMember táblában. Nincs org_type szűrés. A frontend HeaderCompanySwitcher.vue (142-146. sor) csak az 'individual' típust szűri ki, a 'service_provider' típusú szervezeteket nem. Így a quick-add providerrel létrehozott service_provider típusú szervezetek a user Cégeim listájában jelennek meg.

  2. Tulajdonos probléma: A quick_add_provider() beállítja az owner_id=user_id-t (541. sor) és létrehoz OrganizationMember-et OWNER szerepkörrel (638-646. sor). Azonban a GET /my endpoint response-ában (193-206. sor) NINCS visszaadva az owner_id mező. Emellett a legal_owner_id (Person rekordra mutató FK) nincs beállítva.

  3. Státusz probléma: A kód explicit beállítja a status='pending_verification'-t (528. sor), de az Organization modellben (99. sor) nincs server_default a status mezőre. Vizsgálandó, hogy az adatbázisban mi a default érték.

🛠️ Javítási javaslat

  1. Backend GET /my endpoint: Szűrjük ki a service_provider típusú szervezeteket
  2. Frontend HeaderCompanySwitcher: Szűrjük ki a service_provider típust (biztonsági réteg)
  3. Backend GET /my response: Adjuk vissza az owner_id mezőt is
  4. Vizsgáljuk meg az adatbázis organizations tábla status mezőjének server_default értékét
**Mérföldkő:** Szolgáltató Rendszer Javítások **Cél:** A gyors szolgáltató felvételnél (quick-add provider) létrejövő szervezetek hibásan jelennek meg a felhasználó Cégeim menüjében, nincs megfelelő tulajdonosuk, és a státuszuk eltér a vártól. ### 🔗 Függőségek (Dependencies) - **Bemenet (Mikre támaszkodik):** backend/app/api/v1/endpoints/organizations.py (GET /my endpoint), backend/app/services/provider_service.py (quick_add_provider), backend/app/models/marketplace/organization.py (Organization modell), frontend/src/components/header/HeaderCompanySwitcher.vue - **Kimenet (Mik támaszkodnak rá):** Admin felület, Szolgáltató kereső, Cégeim menü ### 📝 Elemzés Három összefonódó hiba: 1. **Cégeim menüben való megjelenés:** A GET /organizations/my endpoint (organizations.py:183-186) minden szervezetet visszaad, ahol a user tag az OrganizationMember táblában. Nincs org_type szűrés. A frontend HeaderCompanySwitcher.vue (142-146. sor) csak az 'individual' típust szűri ki, a 'service_provider' típusú szervezeteket nem. Így a quick-add providerrel létrehozott service_provider típusú szervezetek a user Cégeim listájában jelennek meg. 2. **Tulajdonos probléma:** A quick_add_provider() beállítja az owner_id=user_id-t (541. sor) és létrehoz OrganizationMember-et OWNER szerepkörrel (638-646. sor). Azonban a GET /my endpoint response-ában (193-206. sor) NINCS visszaadva az owner_id mező. Emellett a legal_owner_id (Person rekordra mutató FK) nincs beállítva. 3. **Státusz probléma:** A kód explicit beállítja a status='pending_verification'-t (528. sor), de az Organization modellben (99. sor) nincs server_default a status mezőre. Vizsgálandó, hogy az adatbázisban mi a default érték. ### 🛠️ Javítási javaslat 1. Backend GET /my endpoint: Szűrjük ki a service_provider típusú szervezeteket 2. Frontend HeaderCompanySwitcher: Szűrjük ki a service_provider típust (biztonsági réteg) 3. Backend GET /my response: Adjuk vissza az owner_id mezőt is 4. Vizsgáljuk meg az adatbázis organizations tábla status mezőjének server_default értékét
kincses added the Type: BugRole: AdminStatus: In Progress labels 2026-06-17 21:26:06 +02:00
kincses started working 2026-06-17 21:26:06 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-17 21:26:05

▶️ **Munka megkezdve:** 2026-06-17 21:26:05
kincses added Status: Done and removed Status: In Progress labels 2026-06-17 21:28:56 +02:00
kincses worked for 2 minutes 2026-06-17 21:28:56 +02:00
Author
Owner

Munka befejezve: 2026-06-17 21:28:56

Technikai Összefoglaló:
Bug investigation completed. Found 3 root causes: 1) GET /organizations/my endpoint has no org_type filter - returns all orgs where user is member 2) HeaderCompanySwitcher.vue only filters out 'individual' type, not 'service_provider' 3) quick_add_provider() creates OrganizationMember with OWNER role. Fix proposal saved in plans/logic_spec_provider_cegeim_bugfix.md

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-17 21:28:56 **Technikai Összefoglaló:** Bug investigation completed. Found 3 root causes: 1) GET /organizations/my endpoint has no org_type filter - returns all orgs where user is member 2) HeaderCompanySwitcher.vue only filters out 'individual' type, not 'service_provider' 3) quick_add_provider() creates OrganizationMember with OWNER role. Fix proposal saved in plans/logic_spec_provider_cegeim_bugfix.md ⏱️ *Az idő rögzítve.*
Author
Owner

Munka befejezve: 2026-06-17 21:45:29

Technikai Összefoglaló:
Javítás v2: A GET /my endpoint org_type szűrése whitelist-ről (in_) blacklist-re (notin_) változott. Korábban csak business, fleet_owner, individual típusok voltak láthatóak, ami kizárta a valódi cégeket (pl. club). Most csak a service_provider és service típusok vannak kiszűrve, minden más megjelenik a Cégeim menüben.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-17 21:45:29 **Technikai Összefoglaló:** Javítás v2: A GET /my endpoint org_type szűrése whitelist-ről (in_) blacklist-re (notin_) változott. Korábban csak business, fleet_owner, individual típusok voltak láthatóak, ami kizárta a valódi cégeket (pl. club). Most csak a service_provider és service típusok vannak kiszűrve, minden más megjelenik a Cégeim menüben. ⏱️ *Az idő rögzítve.*
kincses added Status: In Progress and removed Status: Done labels 2026-06-17 22:02:11 +02:00
kincses started working 2026-06-17 22:02:11 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-17 22:02:11

▶️ **Munka megkezdve:** 2026-06-17 22:02:11
kincses added Status: Done and removed Status: In Progress labels 2026-06-17 22:15:01 +02:00
kincses worked for 12 minutes 2026-06-17 22:15:01 +02:00
Author
Owner

Munka befejezve: 2026-06-17 22:15:01

Technikai Összefoglaló:
Backend es frontend javitas: A GET /api/v1/organizations/my endpoint most mar a OrganizationMember.role-t is lekerdezi, es a service_provider/service tipusu orgokat CSAK akkor szuri ki, ha a user role NEM OWNER. A valaszban user_role mezo is szerepel. Frontenden a HeaderCompanySwitcher.vue es az OrganizationItem tipus is frissitve. API teszt sikeres: admin user 4 orgot lat (1 individual + 3 service_provider OWNER).

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-17 22:15:01 **Technikai Összefoglaló:** Backend es frontend javitas: A GET /api/v1/organizations/my endpoint most mar a OrganizationMember.role-t is lekerdezi, es a service_provider/service tipusu orgokat CSAK akkor szuri ki, ha a user role NEM OWNER. A valaszban user_role mezo is szerepel. Frontenden a HeaderCompanySwitcher.vue es az OrganizationItem tipus is frissitve. API teszt sikeres: admin user 4 orgot lat (1 individual + 3 service_provider OWNER). ⏱️ *Az idő rögzítve.*
Author
Owner

Munka befejezve: 2026-06-17 22:24:59

Technikai Összefoglaló:
Root cause fix: quick_add_provider crowdsourcingból felvett szolgáltatóknál owner_id=None és role=ADMIN (nem OWNER). Backend/frontend szűrés visszaállítva: service_provider/service típusú org-ok kizárva a Cégeim listából. A meglévő adatok (org #57, #58, #62 owner_id=2, role=OWNER) a régi kóddal jöttek létre, az új kód már helyesen hozza létre az új provider-eket.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-17 22:24:59 **Technikai Összefoglaló:** Root cause fix: quick_add_provider crowdsourcingból felvett szolgáltatóknál owner_id=None és role=ADMIN (nem OWNER). Backend/frontend szűrés visszaállítva: service_provider/service típusú org-ok kizárva a Cégeim listából. A meglévő adatok (org #57, #58, #62 owner_id=2, role=OWNER) a régi kóddal jöttek létre, az új kód már helyesen hozza létre az új provider-eket. ⏱️ *Az idő rögzítve.*
Author
Owner

Munka befejezve: 2026-06-17 23:40:28

Technikai Összefoglaló:
P0 Garage Selector fix + Team Management API implementálva. Javítások: (1) GET /organizations/my DISTINCT hiba javítva subquery approach-pal (JSON oszlopok miatt). (2) MissingGreenlet hiba javítva selectinload hozzáadásával. (3) OrgUserRole enum szinkronizálva DB-vel (OWNER,ADMIN,MANAGER,MEMBER,AGENT). (4) invited_email és expires_at oszlopok hozzáadva OrganizationMember-hez. (5) 4 új Team Management API végpont: GET/POST/PATCH/DELETE members/invitations. (6) display_name→email javítás. Mind a 5 API teszt sikeresen lefutott.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-17 23:40:28 **Technikai Összefoglaló:** P0 Garage Selector fix + Team Management API implementálva. Javítások: (1) GET /organizations/my DISTINCT hiba javítva subquery approach-pal (JSON oszlopok miatt). (2) MissingGreenlet hiba javítva selectinload hozzáadásával. (3) OrgUserRole enum szinkronizálva DB-vel (OWNER,ADMIN,MANAGER,MEMBER,AGENT). (4) invited_email és expires_at oszlopok hozzáadva OrganizationMember-hez. (5) 4 új Team Management API végpont: GET/POST/PATCH/DELETE members/invitations. (6) display_name→email javítás. Mind a 5 API teszt sikeresen lefutott. ⏱️ *Az idő rögzítve.*
Sign in to join this conversation.