AOSSIE-Org / AOSSIE-Org/Perspective

Centralized Error Handling + Strong Input Validation

Abierto
#143 3 comentarios 0 reacciones 0 asignados Ver en GitHub
good first issue
Lenguaje dominante
TypeScript
Estrellas
50
Forks
78
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

### Context

The backend FastAPI endpoints (`/bias`, `/process`, `/chat`) currently process user requests without full validation, and errors thrown by the NLP pipelines or vector database modules are not consistently handled. While Pydantic models exist (`URlRequest` and `ChatQuery`), they allow any string, which can lead to invalid URLs or empty chat messages. Additionally, exceptions from functions like `run_scraper_pipeline`, `check_bias`, `run_langgraph_workflow`, `search_pinecone`, or `ask_llm` can propagate unhandled, returning inconsistent 500 errors to the frontend.

**Problem:**
- Input data is not fully validated (invalid URLs, empty messages).
- Endpoint errors are inconsistent and sometimes unhandled.
- Frontend and API consumers cannot reliably parse error responses, making debugging harder.

**Proposed Solution:**
1. **Strong Input Validation:**
- Use `pydantic.HttpUrl` for URL fields in `URlRequest`.
- Ensure non-empty messages for `/chat` using Pydantic validators.
- Return structured 400 errors for invalid inputs.

2. **Centralized Error Handling Middleware:**
- Implement a global FastAPI exception handler using `@app.exception_handler`.
- Catch both `HTTPException` and unhandled exceptions.
- Return a consistent JSON error format, e.g.:
```json
{
"error": "",
"code": ""
}
```
- Optionally log exceptions with trace IDs for easier debugging.

**Impact:**
- Improves backend reliability and maintainability.
- Provides consistent error responses to the frontend.
- Prevents invalid input from breaking NLP and LangGraph pipelines.
- Enhances developer and contributor experience by reducing unexpected server errors.

### What Needs to Be Done

1. Strong Input Validation
2. Centralized Error Handling Middleware

### Resources

- [Contribution Guide - Start Here!](https://github.com/AOSSIE-Org/TODO/blob/main/CONTRIBUTING.md)
- [Discord Channel](https://discord.gg/hjUhu33uAn)

### Getting Started

- [x] I have joined the [Discord server](https://discord.gg/hjUhu33uAn) and will post updates there
- [x] I have read the [Contribution Guide](https://github.com/AOSSIE-Org/Template-Repo/blob/main/CONTRIBUTING.md)
- [x] I understand this issue is assigned on a first-come, first-served basis

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.