Refactor backend services and routers
- Reorganized dashboard router with improved structure - Enhanced ban_service with better separation of concerns - Updated history service with cleaner logic - Improved constants and configuration handling - Updated documentation of completed tasks Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,28 +1,3 @@
|
||||
### T-02 · Remove duplicate router-level exception helpers — use global handlers only
|
||||
|
||||
**Where found:** `backend/app/routers/jails.py`, `bans.py`, `jail_config.py`, `server.py`, `config_misc.py` each define `_bad_gateway()`, `_not_found()`, `_conflict()`. Global handlers for the same exceptions exist in `backend/app/main.py`.
|
||||
|
||||
**Why this is needed:** Two parallel error-mapping systems produce inconsistent error bodies. A `Fail2BanConnectionError` caught by a router produces `"Cannot reach fail2ban: {exc}"` while one that escapes produces `"{exc}"` (just the exception string). Adds dead code and maintenance burden.
|
||||
|
||||
**Goal:** All domain exceptions propagate to the global handlers in `main.py`. Routers contain zero HTTP error construction.
|
||||
|
||||
**What to do:**
|
||||
1. Remove all `_bad_gateway`, `_not_found`, `_conflict` helpers from routers.
|
||||
2. Remove the `try/except` blocks in router handlers that convert domain exceptions to `HTTPException` — let them propagate.
|
||||
3. Verify that all domain exception types are covered in `main.py`'s `add_exception_handler` registrations.
|
||||
4. Confirm error body format is consistent across all affected endpoints.
|
||||
|
||||
**Possible traps and issues:**
|
||||
- A few routers catch `ValueError` from service layer and re-raise as `JailOperationError` — ensure those paths still reach the correct global handler.
|
||||
- FastAPI evaluates exception handlers in registration order. Verify the order in `create_app` is most-specific first.
|
||||
- Integration tests that assert on specific error message strings may need updates.
|
||||
|
||||
**Docs changes needed:** `Docs/Backend-Development.md` — document that routers must not construct `HTTPException` for domain errors; they should raise or let domain exceptions propagate.
|
||||
|
||||
**Doc references:** `Docs/Backend-Development.md`
|
||||
|
||||
---
|
||||
|
||||
### T-03 · Centralise `_DEFAULT_PAGE_SIZE` constant
|
||||
|
||||
**Where found:** `backend/app/routers/dashboard.py:45`, `routers/history.py:34`, `services/ban_service.py:70`, `services/history_service.py:49`
|
||||
|
||||
Reference in New Issue
Block a user