AOSSIE-Org / AOSSIE-Org/Perspective

Centralized Error Handling + Strong Input Validation

Aperta
#143 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
good first issue
Lingua principale
TypeScript
Stelle
50
Fork
78
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.