AOSSIE-Org / AOSSIE-Org/Perspective

Centralized Error Handling + Strong Input Validation

Aberta
#143 3 comentários 0 reações 0 responsáveis Ver no GitHub
good first issue
Linguagem predominante
TypeScript
Estrelas
50
Forks
78
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

### 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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.