Přeskočit obsah

13. Roadmap migrace React entit na Slim CRUD endpointy

Pracovní roadmap k 10. 9. 2026. Dokument navazuje na 11. Roadmap autentizace, autorizace a API perimetru a 12. Technologický dluh. Cílem je postupně odstranit závislost Reactu na Base44 kompatibilním base44.entities.* povrchu a převést každou používanou entitu na vlastní Slim endpoint s jasným perimetrem, autorizací, testy a schématem v repozitáři.

Cíl

Frontend má pro každou používanou entitu volat vlastní backend endpoint:

  • interní personální data přes /api/...,
  • klientské a veřejné portálové čtení nebo zápis přes /api/public/...,
  • token-only flow přes explicitní veřejné endpointy, ne přes obecný entity CRUD.

Dočasný base44.entities.* wrapper může během migrace zůstat jako kompatibilní klientská vrstva, ale pro hotovou entitu musí směrovat na nativní endpoint a nesmí využívat obecný /api/apps/{appId}/entities/{entity} fallback.

Zásady

  • Před úpravami vždy ověř aktuální stav repozitáře a pracovní strom.
  • Preferuj minimální změny a zachovej existující architekturu.
  • Nepřidávej nové závislosti, pokud není jasný technický důvod.
  • Nikdy neupravuj .env soubory.
  • Databázové změny zapisuj rovnou vcelku do backend/db/schema.sql a backend/db/schema_test.sql. Nepřidávej inkrementální update/migration SQL soubory, dokud se nezmění projektové pravidlo.
  • Každý endpoint musí být company-scoped, pokud entita patří konkrétní firmě.
  • Klientská session nikdy nesmí otevřít interní /api entity.
  • Staff session se nesmí používat jako klientská identita na /api/public.
  • Public/token-only endpoint nesmí umožnit libovolný přístup podle ID z requestu.
  • Zachovej Base44 tvar odpovědí jen tam, kde ho aktuální React kód očekává.
  • Testy přidávej podle rizika: minimálně CRUD happy path, cross-company izolaci, neautorizovaný přístup a kritické validační chyby.

Současný stav

React aktuálně používá tyto Base44 entity:

Entita Použití ve frontendu Stav
ActivityLog 2 [x]
AppointmentStatus 8 [x]
AvailabilityBlock 14 [x]
Booking 5 [x]
CalendarEvent 24 [x]
CalendarSettings 8 [x]
Client 28 [x]
ClientCategory 13 [x]
ClientCredit 13 [x]
ClientPackage 5 [x]
CreditTransaction 6 [x]
DemoUser 5 [x]
Invoice 6 [x]
LegalDocument 4 [x]
NotificationSettings 6 [x]
PaymentLog 6 [x]
PaymentSettings 7 [x]
PohodaExportLog 2 [x]
Room 9 [x]
RoomCategory 6 [x]
Service 14 [x]
ServiceCategory 4 [x]
ServicePackage 8 [x]
SystemSettings 9 [x]
Therapist 11 [x]
TherapistService 6 [x]
Voucher 4 [x]

Stav [x] znamená, že entita už má nativní routu v base44Client.js a vlastní Slim CRUD/controller surface. U Invoice a PaymentLog existuje nativní /api/... surface i dočasná legacy Base44 app-ID route pro kompatibilitu existujícího frontendu. U DemoUser a Therapist je frontendová entita mapovaná na interní uživatelské endpointy.

Cílový pattern pro jednu entitu

  1. Zmapovat React použití entity: list, filter, get, create, update, delete, řazení, filtry a očekávaný tvar odpovědi.
  2. Porovnat Base44 entitní definici v react_dev/base44/entities/*.jsonc s aktuální DB schémou.
  3. Doplnit tabulku/sloupce do backend/db/schema.sql a backend/db/schema_test.sql.
  4. Vytvořit nebo rozšířit Slim controller.
  5. Přidat routy pod správný perimetr:
  6. /api/{resource} pro interní staff CRUD,
  7. /api/public/{resource} jen pro klientský/veřejný portál,
  8. explicitní token endpoint pro onboarding, platby, storna a veřejné doklady.
  9. Přidat nebo aktualizovat oprávnění v backend/src/routes.php.
  10. Přidat feature testy v backend/tests/Feature.
  11. Přesměrovat entitu v react_dev/src/api/base44Client.js na nativní endpoint.
  12. Ověřit frontend volania a build.
  13. Zaškrtnout entitu v tomto dokumentu až po zelených relevantních testech.

Pořadí migrace

Priorita jde podle rizika, počtu použití a vazby na veřejný/client portal:

  1. Kalendář a rezervace: CalendarEvent, Booking, AvailabilityBlock, AppointmentStatus.
  2. Nastavení provozu: Room, RoomCategory, Service, ServiceCategory, TherapistService, CalendarSettings.
  3. Klientské finance: ClientCredit, CreditTransaction, ClientPackage, ServicePackage, Voucher.
  4. Dokumenty a notifikace: LegalDocument, NotificationSettings, PaymentSettings, SystemSettings.
  5. Integrace a exporty: PohodaExportLog, comgatePayment.
  6. Audit a provozní přehledy: ActivityLog.

Checklist podle entit

  • ActivityLog -> /api/activityLogs
  • AppointmentStatus -> /api/appointmentStatuses
  • AvailabilityBlock -> /api/availabilityBlocks
  • Booking -> /api/bookings a potřebné /api/public/bookings token/client endpointy
  • CalendarEvent -> /api/calendarEvents
  • CalendarSettings -> /api/calendarSettings
  • Client -> /api/clients
  • ClientCategory -> /api/clientCategories
  • ClientCredit -> /api/clientCredits
  • ClientPackage -> /api/clientPackages
  • CreditTransaction -> /api/creditTransactions
  • DemoUser -> /api/users
  • Invoice -> /api/invoices
  • LegalDocument -> /api/legalDocuments
  • NotificationSettings -> /api/notificationSettings
  • PaymentLog -> /api/paymentLogs
  • PaymentSettings -> /api/paymentSettings
  • PohodaExportLog -> /api/pohodaExportLogs
  • Room -> /api/rooms
  • RoomCategory -> /api/roomCategories
  • Service -> /api/services
  • ServiceCategory -> /api/serviceCategories
  • ServicePackage -> /api/servicePackages
  • SystemSettings -> /api/systemSettings
  • Therapist -> /api/therapists
  • TherapistService -> /api/therapistServices
  • Voucher -> /api/vouchers

Checklist podle funkcí

  • comgatePayment -> nativní Slim endpoint pod /api/functions/comgatePayment a potřebný veřejný návratový/webhook/public perimeter pro platební flow.

Poznámka k 10. 9. 2026: frontend z react_dev_new už volá comgatePayment a route match ve Slim i appAuth mapování jsou připravené, ale samotná PHP implementace Comgate flow ještě není migrovaná.

Definice hotovo

Migrace entity je hotová, až platí:

  • React pro entitu nepoužívá Base44 app-ID fallback.
  • Endpoint je pod správným /api nebo /api/public perimetrem.
  • Backend vynucuje autentizaci, role/oprávnění a company scope.
  • DB struktura je zapsaná v schema.sql i schema_test.sql.
  • Testy pokrývají CRUD, izolaci mezi firmami a neautorizovaný přístup.
  • Frontend build projde v projektovém Node runtime.

Celá roadmap je hotová, až žádná React entita nepoužívá /api/apps/{appId}/entities/{entity} fallback a všechny položky v checklistu jsou zaškrtnuté.