Feature 1 — PPTX from Template (Code-Gen): - backend/services/template_codegen_service.py: analyze PPTX, strip slides, Gemini code-gen + subprocess exec (60s timeout, auto-retry on error) - backend/api/v1/ppt/endpoints/template_codegen.py: POST /template-codegen/generate (multipart: presentation_id + template_file + custom_prompt, rate-limited 3/min) - frontend/components/TemplateCodegenExport.tsx: drag-drop modal - Header.tsx: "Export from Template" option in export dropdown Feature 2 — Diagrams in Slides: - backend/models/diagram_data.py: DiagramData / FlowStep / BarChartItem models - generate_slide_content.py: optional __diagram__ + __mermaid__ fields in LLM schema - DiagramRenderer.tsx: pure React flowchart / bar chart / pie chart (no deps) - SlideRenderer.tsx: chart elements render DiagramRenderer/MermaidRenderer; floating overlay fallback when no chart element exists in JSON layout - V1ContentRender.tsx: diagram/mermaid overlay on built-in template slides - generate-pptx/route.ts: addDiagramToSlide() — bar/pie via pptxgenjs addChart(), flowchart via addShape()+addText(), mermaid via /api/mermaid-to-image Feature 3 — Mermaid Diagrams: - MermaidRenderer.tsx: dynamic import mermaid@11, useEffect render, error fallback - frontend/app/api/mermaid-to-image/route.ts: Puppeteer renders Mermaid to PNG → base64 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
2.1 KiB
Python
43 lines
2.1 KiB
Python
from fastapi import APIRouter
|
|
|
|
from api.v1.ppt.endpoints.slide_to_html import SLIDE_TO_HTML_ROUTER, HTML_TO_REACT_ROUTER, HTML_EDIT_ROUTER, LAYOUT_MANAGEMENT_ROUTER
|
|
from api.v1.ppt.endpoints.presentation import PRESENTATION_ROUTER
|
|
from api.v1.ppt.endpoints.anthropic import ANTHROPIC_ROUTER
|
|
from api.v1.ppt.endpoints.google import GOOGLE_ROUTER
|
|
from api.v1.ppt.endpoints.openai import OPENAI_ROUTER
|
|
from api.v1.ppt.endpoints.files import FILES_ROUTER
|
|
from api.v1.ppt.endpoints.pptx_slides import PPTX_SLIDES_ROUTER
|
|
from api.v1.ppt.endpoints.pdf_slides import PDF_SLIDES_ROUTER
|
|
from api.v1.ppt.endpoints.fonts import FONTS_ROUTER
|
|
from api.v1.ppt.endpoints.icons import ICONS_ROUTER
|
|
from api.v1.ppt.endpoints.images import IMAGES_ROUTER
|
|
from api.v1.ppt.endpoints.ollama import OLLAMA_ROUTER
|
|
from api.v1.ppt.endpoints.outlines import OUTLINES_ROUTER
|
|
from api.v1.ppt.endpoints.slide import SLIDE_ROUTER
|
|
from api.v1.ppt.endpoints.pptx_slides import PPTX_FONTS_ROUTER
|
|
from api.v1.ppt.endpoints.content import CONTENT_ROUTER
|
|
from api.v1.ppt.endpoints.template_codegen import TEMPLATE_CODEGEN_ROUTER
|
|
|
|
|
|
API_V1_PPT_ROUTER = APIRouter(prefix="/api/v1/ppt")
|
|
|
|
API_V1_PPT_ROUTER.include_router(FILES_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(FONTS_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(OUTLINES_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(PRESENTATION_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(PPTX_SLIDES_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(SLIDE_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(SLIDE_TO_HTML_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(HTML_TO_REACT_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(HTML_EDIT_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(LAYOUT_MANAGEMENT_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(IMAGES_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(ICONS_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(OLLAMA_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(PDF_SLIDES_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(OPENAI_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(ANTHROPIC_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(GOOGLE_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(PPTX_FONTS_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(CONTENT_ROUTER)
|
|
API_V1_PPT_ROUTER.include_router(TEMPLATE_CODEGEN_ROUTER)
|