All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m40s
- Chaque modele d'un palier devient une route {canal, modele} : openrouter,
deepseek direct, zhipu (z.ai, nouveau canal), minimax, openai, xai ;
repli automatique sur la route suivante si la cle manque, compatibilite
ascendante avec les anciens reglages a chaines
- Page Fournisseurs refondue en sections ; interrupteurs et chaine de
secours retablis ; tests de connexion avec delai d'attente
- Emails de relance generes par IA (canal au choix, prompt construit depuis
le plan marketing, HTML sane, RTL arabe/persan, jamais d'envoi automatique)
- Codes promo : validation locale avant Stripe, Coupon+PromotionCode avec
double plafond, comptage par session (webhook+sync=1 fois), ecriture
atomique, relier-a-Stripe, suppression, validation publique au checkout
- Page Tarifs : champ code promo (?promo=) avec verification traduite
- Tests : 1357 verts (facturation par palier testee dans le worker,
point de contact providers/available, promos, generation)
36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
"""
|
|
Main API v1 Router
|
|
Aggregates all v1 sub-routers under /api/v1 prefix
|
|
Story 3.5: API Versioning
|
|
"""
|
|
|
|
from fastapi import APIRouter
|
|
|
|
router = APIRouter(tags=["API v1"])
|
|
|
|
from routes.translate_routes import router_v1 as translate_router
|
|
from routes.auth_routes import router_v1 as auth_router
|
|
from routes.auth_routes import promos_public_router
|
|
from routes.api_key_routes import router as api_key_router
|
|
from routes.admin_routes import router as admin_router
|
|
from routes.admin_routes import marketing_public_router
|
|
from routes.legacy_routes import router as legacy_router
|
|
from routes.glossary_routes import router as glossary_router
|
|
from routes.prompt_routes import router as prompt_router
|
|
from routes.waitlist_routes import router as waitlist_router
|
|
from routes.review_routes import router as review_router
|
|
from routes.workspace_routes import router as workspace_router
|
|
|
|
router.include_router(translate_router, tags=["Translation"])
|
|
router.include_router(auth_router, tags=["Authentication"])
|
|
router.include_router(promos_public_router, tags=["Promotions"])
|
|
router.include_router(api_key_router, tags=["API Keys"])
|
|
router.include_router(admin_router, tags=["Admin"])
|
|
router.include_router(marketing_public_router, tags=["Marketing"])
|
|
router.include_router(legacy_router, tags=["Legacy"])
|
|
router.include_router(glossary_router, tags=["Glossaries"])
|
|
router.include_router(prompt_router, tags=["Prompts"])
|
|
router.include_router(waitlist_router, tags=["Waitlist"])
|
|
router.include_router(review_router, tags=["Review"])
|
|
router.include_router(workspace_router, tags=["Workspaces"])
|