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
.envsoubory. - Databázové změny zapisuj rovnou vcelku do
backend/db/schema.sqlabackend/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í
/apientity. - 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¶
- Zmapovat React použití entity:
list,filter,get,create,update,delete, řazení, filtry a očekávaný tvar odpovědi. - Porovnat Base44 entitní definici v
react_dev/base44/entities/*.jsoncs aktuální DB schémou. - Doplnit tabulku/sloupce do
backend/db/schema.sqlabackend/db/schema_test.sql. - Vytvořit nebo rozšířit Slim controller.
- Přidat routy pod správný perimetr:
/api/{resource}pro interní staff CRUD,/api/public/{resource}jen pro klientský/veřejný portál,- explicitní token endpoint pro onboarding, platby, storna a veřejné doklady.
- Přidat nebo aktualizovat oprávnění v
backend/src/routes.php. - Přidat feature testy v
backend/tests/Feature. - Přesměrovat entitu v
react_dev/src/api/base44Client.jsna nativní endpoint. - Ověřit frontend volania a build.
- 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:
- Kalendář a rezervace:
CalendarEvent,Booking,AvailabilityBlock,AppointmentStatus. - Nastavení provozu:
Room,RoomCategory,Service,ServiceCategory,TherapistService,CalendarSettings. - Klientské finance:
ClientCredit,CreditTransaction,ClientPackage,ServicePackage,Voucher. - Dokumenty a notifikace:
LegalDocument,NotificationSettings,PaymentSettings,SystemSettings. - Integrace a exporty:
PohodaExportLog,comgatePayment. - Audit a provozní přehledy:
ActivityLog.
Checklist podle entit¶
-
ActivityLog->/api/activityLogs -
AppointmentStatus->/api/appointmentStatuses -
AvailabilityBlock->/api/availabilityBlocks -
Booking->/api/bookingsa potřebné/api/public/bookingstoken/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/comgatePaymenta 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
/apinebo/api/publicperimetrem. - Backend vynucuje autentizaci, role/oprávnění a company scope.
- DB struktura je zapsaná v
schema.sqlischema_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é.