AOSSIE-Org / AOSSIE-Org/Perspective
Centralized Error Handling + Strong Input Validation
- Ngôn ngữ chính
- TypeScript
- Star
- 50
- Fork
- 78
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
### 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
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.