🚀 Add generate/import routers

🛠 Refactor main.py
📦 Update models
This commit is contained in:
François Pelletier 2025-05-11 12:21:48 -04:00
parent 0fffbcfba4
commit 082ca6c638
8 changed files with 137 additions and 66 deletions

View file

@ -6,9 +6,9 @@ Système de création de contenu rétrospectif
## Backend
| Route | Method | Description |
|--------------------|--------|----------------------|
| /import/data | POST | Import raw data |
| /analyse/{data_id} | GET | Analyse stored data |
| /export/{data_id} | GET | Export analysed data |
| /generate/content | POST | Generate new content |
| Route | Method | Description |
|------------|--------|----------------------|
| /import/ | POST | Import raw data |
| /analysis/ | GET | Analysis stored data |
| /export/ | GET | Export analysed data |
| /generate/ | POST | Generate new content |

View file

@ -1,67 +1,16 @@
from fastapi import FastAPI, APIRouter, HTTPException
import uuid
from fastapi import FastAPI
from routers.convert_router import convert_router
from routers.import_router import import_router
from routers.analysis_router import analysis_router
from routers.export_router import export_router
from routers.generate_router import generate_router
app = FastAPI(title="Retro API", description="Retro content management system")
# Routers
import_router = APIRouter(prefix="/import", tags=["Import"])
analyse_router = APIRouter(prefix="/analyse", tags=["Analyse"])
export_router = APIRouter(prefix="/export", tags=["Export"])
generate_router = APIRouter(prefix="/generate", tags=["Generate"])
# Sample data storage (replace with Milvus/DB integration)
data_store = {}
# Import Router
@import_router.post("/data")
def import_data(data: dict):
"""
Import data (e.g., text, files, or structured data).
"""
data_id = str(uuid.uuid4())
data_store[data_id] = data
return {"message": "Data imported successfully", "data_id": data_id}
# Analyse Router
@analyse_router.get("/{data_id}")
def analyse_data(data_id: str):
"""
Analyse imported data (e.g., sentiment, keywords, or patterns).
"""
if data_id not in data_store:
raise HTTPException(status_code=404, detail="Data not found")
# Placeholder for analysis logic
return {
"data_id": data_id,
"analysis": {"word_count": len(data_store[data_id].get("text", ""))},
}
# Export Router
@export_router.get("/{data_id}")
def export_data(data_id: str):
"""
Export analysed data (e.g., as JSON, CSV, or PDF).
"""
if data_id not in data_store:
raise HTTPException(status_code=404, detail="Data not found")
return {
"data_id": data_id,
"content": data_store[data_id],
"status": "exported",
}
# Generate Router
@generate_router.post("/content")
def generate_content(prompt: str):
"""
Generate new content (e.g., text, images, or summaries).
"""
# Placeholder for generation logic (e.g., LLM, AI model)
generated = {"response": f"Generated content based on: {prompt}"}
return {"message": "Content generated", "data": generated}
# Include routers in the main app
app.include_router(convert_router)
app.include_router(import_router)
app.include_router(analyse_router)
app.include_router(analysis_router)
app.include_router(export_router)
app.include_router(generate_router)

48
backend/models.py Normal file
View file

@ -0,0 +1,48 @@
from typing import Dict
from pydantic import BaseModel
class AnalysisRequest:
analysis_type: str
filters: Dict
class AnalysisResponse:
result: str
class ConversionRequest(BaseModel):
source_type: str
source_data: str
class ConversionResponse(BaseModel):
converted_data: dict
status: str
class ExportRequest:
filters: Dict
format: str
class ExportResponse:
export_url: str
status: str
class GenerateRequest:
prompt: str
class GenerateResponse:
content_url: str
status: str
class ImportRequest:
data: str
class ImportResponse:
status: str

View file

@ -0,0 +1,14 @@
from fastapi import APIRouter
from backend.models import AnalysisResponse, AnalysisRequest
analysis_router = APIRouter(prefix="/analysis", tags=["Analysis"])
@analysis_router.post("/", response_model=AnalysisResponse)
def analysis_data(request: AnalysisRequest):
"""
Analysis imported data (e.g., sentiment, keywords, or patterns).
"""
# Placeholder for analysis logic
analysis = ...
return {"analysis": analysis}

View file

@ -0,0 +1,18 @@
from fastapi import APIRouter
from backend.models import ConversionResponse, ConversionRequest
convert_router = APIRouter(prefix="/convert", tags=["Convert"])
@convert_router.post("/", response_model=ConversionResponse)
def convert_data(request: ConversionRequest):
"""
Convert data from one format to another (e.g., JSON to CSV, text to XML).
"""
# Example conversion logic (replace with actual implementation)
converted_data = ...
return {
"converted_data": converted_data,
"status": "success"
}

View file

@ -0,0 +1,13 @@
from fastapi import APIRouter
from backend.models import ExportRequest, ExportResponse
export_router = APIRouter(prefix="/export", tags=["Export"])
@export_router.post("/", response_model=ExportResponse)
def export_data(request: ExportRequest):
"""
Export analysed data (e.g., as JSON, CSV, or PDF).
"""
exported_data_url = ...
return {"url": exported_data_url}

View file

@ -0,0 +1,15 @@
from fastapi import APIRouter
from backend.models import GenerateResponse, GenerateRequest
generate_router = APIRouter(prefix="/generate", tags=["Generate"])
@generate_router.post("/", response_model=GenerateResponse)
def generate_content(request: GenerateRequest):
"""
Generate new content (e.g., text, images, or summaries).
"""
# Placeholder for generation logic (e.g., LLM, AI model)
response = ...
return response

View file

@ -0,0 +1,14 @@
from fastapi import APIRouter
from backend.models import ImportRequest, ImportResponse
import_router = APIRouter(prefix="/import", tags=["Import"])
@import_router.post("/", response_model=ImportResponse)
def import_data(request: ImportRequest):
"""
Import data (e.g., text, files, or structured data).
"""
response = ...
return response