mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
9.6 KiB
9.6 KiB
MyClub E‑shop – Timeline
Přehled kroků pro dokončení e‑shopu. Položky označené
✔jsou hotové,⬜čekají na dokončení.
1. Infrastruktura a zapínání e‑shopu (✔ hotovo)
- ✔ Env & config
ESHOP_ENABLED,ESHOP_FRONTEND_URL,ESHOP_API_URL,ESHOP_FRONTEND_PORT,ESHOP_BACKEND_PORTv.env.- Backend
Confignačítá Stripe a Packeta údaje.
- ✔ Docker Compose & Makefile
docker-compose.eshop.ymlpřidáváeshop-backendaeshop-frontend.make docker-up/make devpodleESHOP_ENABLEDspouští buď jen MyClub, nebo MyClub + e‑shop.
2. E‑shop backend – jádro (✔ hotovo – první verze)
- ✔ Samostatný backend
- Služba
eshop-backend(Go/Gin) se sdílenou DB a auth (JWTOptional). - Healthcheck:
GET /api/v1/eshop/health.
- Služba
- ✔ Databázové modely (
internal/models/eshop.go)eshop_product_categories,eshop_products,eshop_product_variants.eshop_carts,eshop_cart_items.eshop_orders,eshop_order_items,eshop_payments,eshop_shipping_labels.eshop_settings.
- ✔ Migrace
- Modely přidány do
pkg/database.MigrateDBa best‑effortAutoMigratevmain.go.
- Modely přidány do
- ✔ Veřejné API (MVP)
GET /api/v1/eshop/products– seznam aktivních produktů.GET /api/v1/eshop/products/:slug– detail produktu.GET /api/v1/eshop/cart– košík pro uživatele / session.POST /api/v1/eshop/cart/items– přidání/úprava položky.PATCH /api/v1/eshop/cart/items/:id– změna množství.DELETE /api/v1/eshop/cart/items/:id– odebrání položky.
3. E‑shop frontend – veřejná část (✔ hotovo – MVP)
- ✔ Nová SPA aplikace (
eshop/frontend)- CRA + TypeScript + Chakra UI + React Query.
- Základní theme (
theme.ts) – později napojíme na klubové barvy.
- ✔ Routing (
App.tsx)/– přehled produktů (ShopHomePage)./produkt/:slug– detail produktu (ProductDetailPage)./cart– košík (CartPage)./admin– základ admin dashboard (AdminDashboardPage).
- ✔ API klient (
services/eshopApi.ts)- Napojení na
REACT_APP_API_URL(v Dockeru/api/v1/eshop). - Funkce
getProducts,getProduct,getCart,addToCart,updateCartItem,removeCartItem.
- Napojení na
- ✔ Docker + Nginx
eshop/frontend/Dockerfilebuildí appku.eshop/frontend/nginx.conf:/→ SPA (index.html)./api/→ proxy naeshop-backend:8080.
4. Propojení s MyClub (clothing / merch) (✔ hotovo – první krok)
- ✔ Veřejný web
/obleceni(ClothingPage) – zobrazuje CTA „Přejít do plného e‑shopu“, když jeREACT_APP_ESHOP_URLnastavené.MerchSectionna homepage – vedle „Zobrazit vše“ přidán button „E‑shop“ → plný e‑shop.
- ✔ Admin MyClub
AdminMerchPageukazuje informační box s odkazem na plný e‑shop, pokudREACT_APP_ESHOP_URLexistuje.
- ✔ Frontend env
frontend/.env(.example)– přidánoREACT_APP_ESHOP_URL.
5. E‑shop produktová administrace v MyClub adminu (✔ hotovo)
Cíl: pohodlně spravovat produkty/varianty přímo z hlavní administrace.
- ✔ Backend (MyClub)
- Admin endpointy
/api/v1/admin/eshop/products+/variantspro CRUD nadeshop_productsaeshop_product_variantsjsou implementované vEshopAdminControllera zaregistrované vroutes.go. - Ochrana přes JWT +
RoleAuth("admin")přes skupinu/api/v1/admin.
- Admin endpointy
- ✔ Frontend (MyClub admin)
- Stránka „E‑shop → Produkty“ (
AdminEshopProductsPage) v admin SPA umožňuje CRUD nad produkty (název, slug, cena v haléřích, měna, aktivita, krátký + HTML popis, hlavní obrázek s náhledem, režim skladu). - Pod každým produktem je sekce Varianty s plným CRUD (přidání / úprava / smazání) napojeným na admin API (
eshop_product_variants).
- Stránka „E‑shop → Produkty“ (
6. Checkout & objednávky (GoCardless / GoPay – MVP plateb) (✔ hotovo – MVP)
- ✔ Backend (eshop-backend)
POST /api/v1/eshop/checkout:- zvaliduje košík, vytvoří draft
EshopOrderse stavemawaiting_payment. - podle konfigurace zvolí poskytovatele plateb:
- pokud
GOCARDLESS_ENABLED=true→ použije GoCardless, - jinak pokud
GOPAY_ENABLED=true→ použije GoPay, - jinak vytvoří záznam
EshopPaymenttypumanual_email.
- pokud
- pro GoPay/GoCardless vrátí
payment_redirect_urlpro frontend. - pro fallback vrátí
manual_payment=true+contact_email(kam objednávku poslat ručně).
- zvaliduje košík, vytvoří draft
- ✔ Frontend (eshop-frontend)
/cartmá krok „Pokračovat k platbě“ → jednoduchý checkout wizard.- Po úspěšném
checkout:- pokud je
payment_redirect_url, přesměruje uživatele na platební bránu (GoPay / GoCardless), - pokud je
manual_payment=true, zobrazí hlášku „Online platba není aktuálně dostupná, objednávku prosím pošlete na tento e‑mail…“ a zároveň přesměruje na stránku shrnutí objednávky/objednavka/dekujeme.
- pokud je
- Checkout stránka má vylepšené UX:
- inline validace povinných polí (e‑mail, jméno, příjmení, telefon),
- lepší stavy pro Packeta widget (načítání, chyba konfigurace),
- v rekapitulaci zobrazuje cenu dopravy a celkovou částku k úhradě podle nastavení backendu.
7. Doprava – Packeta (Zásilkovna) (✔ hotovo)
- ✔ Frontend (checkout)
- Na stránce checkoutu načítat Packeta widget (
widget.packeta.com). - Uložení vybraného výdejního místa / adresy a předání na backend.
- Na stránce checkoutu načítat Packeta widget (
- ✔ Backend (eshop-backend)
- Po
paidobjednávce vytvořit Packeta zásilku (createPacket) a uložitpacket_iddoEshopShippingLabel. - Endpoint pro stažení PDF štítku.
- Cron/background job pro pravidelné dotahování stavů (
packetStatus) a updateEshopShippingLabel.Status.
- Po
8. DeepSeek AI zákaznická podpora (✔ hotovo – MVP)
- ✔ Backend (eshop-backend)
POST /api/v1/eshop/support/chat/stream– proxy na DeepSeek (deepseek-chat),stream=true.- Použití systémového promptu z
eshop/DeepSeekSupportPrompt.md. - Doplnění kontextu (store info, poslední objednávky uživatele).
- ✔ Frontend (eshop-frontend)
- Malý chat widget v rohu (plovoucí okno) napojený na stream endpoint.
- Odpovědi primárně česky, podle promptu.
9. E‑shop Setup (druhý krok po MyClub Setup) (✔ hotovo)
- ✔ Backend / nastavení
- Eshop endpointy pro čtení/uložení
EshopSettingsaclub-info.
- Eshop endpointy pro čtení/uložení
- ✔ Frontend
- Nová stránka „E‑shop Setup“ (
/setup) s kroky:- Výchozí měna, země.
- Kontaktní email/telefon pro podporu.
- Základní nastavení dopravy (Packeta on/off).
- Automatické předvyplnění názvu klubu, loga a barev z MyClub
Settings.
- Nová stránka „E‑shop Setup“ (
10. Hardening, monitoring a testy (⬜ TODO – průběžně)
- ✔ Bezpečnost & performance
- Rate limiting pro checkout, platby, support chat.
- Logging a error reporting pro eshop‑backend (využít stávající
ErrorReporter). - Stabilní anonymní session token pro košík a AI chat (
X-Session-Token+ cookieeshop_session_token).
- ✔ Stripe integrace
- Complete Stripe Payment Element integration with proper Elements wrapper
- Enhanced Stripe webhook handler with order status updates
- Improved error handling for payment failures
- ✔ Uživatelské rozhraní
- Enhanced order confirmation page with detailed order information
- Better status display and next steps information
- Improved responsive design and user experience
- ✔ Doprava a logistika
- Enhanced Packeta background job with order status synchronization
- Better error handling for shipping status updates
- Automatic order status updates based on shipping changes
- ✔ Validace a error handling
- Comprehensive input validation for checkout (email, phone, shipping)
- Cart validation with inventory checks and product availability
- Better error messages and user feedback
- Stock validation for product variants
- ⬜ Testy
- ✔ Základní unit test pro
PacketaService.GetPacketStatus(mockovaná API odpověď). - ✔ Integrační test: aktualizace stavů Packeta zásilek (
ShippingController.UpdatePacketStatuses) s mockovaným Packeta API. - ✔ Integrační test: vytvoření objednávky bez online plateb (fallback
manual_emailvCheckoutController.Checkout). - ✔ Integrační test: GoPay webhook (
CheckoutController.GoPayWebhook) pro stavPAID→ paymentsucceeded, orderpaid, košíkcompleted. - ✔ Integrační test: end‑to‑end flow checkout → objednávka (včetně označení košíku jako completed po úspěšné platbě).
- ⬜ Zátěžové testy základních endpointů (produkty, košík, checkout).
- ✔ Frontend: stránka úspěšné objednávky
/objednavka/dekujemese shrnutím objednávky (načtení přes/api/v1/eshop/orders/:id). - ✔ Frontend: build (
npm run buildveshop/frontend) prochází včetně checkoutu, Packeta widgetu a AI support chatu.
- ✔ Základní unit test pro
Jak tento soubor používat
- Pro každý blok výše můžeš:
- doplnit konkrétní TODO podkroky,
- značit hotové věci jako
✔(nebo[x]) podle stavu projektu, - přidat odkazy na další dokumentaci (např.
ESHOP_IMPLEMENTATION_PLAN.md,packeta.md).
Aktuálně je hotová infrastruktura, jádro backendu, základní e‑shop frontend, propojení s MyClub clothing, administrace produktů, checkout se Stripe platbami, Packeta integrace a AI podpora. Projekt je ve fázi MVP funkčního celku. Další kroky jsou hardening, monitoring a testování (blok 10).