refactor(backend): clean up jail service, add error handling service
- Extract jail status/processing to helper functions - Add error_handling.py service for centralized error handling - Update config.py with validation and defaults - Update .env.example with all config options - Remove obsolete Tasks.md, add Service-Development.md - Minor fixes across routers and services Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,81 +1,3 @@
|
||||
### Issue #25: MEDIUM - Incomplete Type Hints in Error Handling
|
||||
|
||||
**Where found**:
|
||||
- `backend/app/main.py` (line 283)
|
||||
- Error metadata uses `dict[str, str | int | list[str]]` instead of TypedDict
|
||||
|
||||
**Why this is needed**:
|
||||
Generic types don't enable proper type narrowing in exception handlers. Code can't safely access error fields.
|
||||
|
||||
**Goal**:
|
||||
Use TypedDict for type-safe error responses.
|
||||
|
||||
**What to do**:
|
||||
1. Define error response types:
|
||||
```python
|
||||
class ErrorResponse(TypedDict):
|
||||
error_id: str
|
||||
timestamp: int
|
||||
message: str
|
||||
tracebacks: list[str]
|
||||
correlation_id: str
|
||||
```
|
||||
2. Use in exception handlers
|
||||
3. Type checker can verify correct field access
|
||||
|
||||
**Possible traps and issues**:
|
||||
- TypedDict is Python 3.8+ only
|
||||
- Need to maintain multiple error response types
|
||||
|
||||
**Docs changes needed**:
|
||||
- Add type safety guidelines
|
||||
|
||||
**Doc references**:
|
||||
- DETAILED_FINDINGS.md - Issue #21 "Incomplete Type Hints"
|
||||
|
||||
---
|
||||
|
||||
### Issue #26: MEDIUM - Hardcoded Constants Not Configurable
|
||||
|
||||
**Where found**:
|
||||
- `backend/app/utils/constants.py`
|
||||
- MAX_PAGE_SIZE = 1000
|
||||
- BLOCKLIST_PREVIEW_MAX_LINES = 100
|
||||
- HISTORY_RETENTION_DAYS = 90
|
||||
|
||||
**Why this is needed**:
|
||||
Different deployments have different needs:
|
||||
- Large deployment might want smaller pages
|
||||
- User might want different preview size
|
||||
- Some want longer history retention
|
||||
|
||||
**Goal**:
|
||||
Make limits configurable via environment variables.
|
||||
|
||||
**What to do**:
|
||||
1. Move constants to config:
|
||||
```python
|
||||
class Settings(BaseSettings):
|
||||
max_page_size: int = Field(default=1000, env="BANGUI_MAX_PAGE_SIZE")
|
||||
blocklist_preview_max_lines: int = Field(default=100, env="BANGUI_PREVIEW_MAX_LINES")
|
||||
history_retention_days: int = Field(default=90, env="BANGUI_HISTORY_RETENTION")
|
||||
```
|
||||
2. Validate ranges (max_page_size > 0, < 10000)
|
||||
3. Update .env.example with all options
|
||||
4. Document in configuration guide
|
||||
|
||||
**Possible traps and issues**:
|
||||
- Too many configuration options can be overwhelming
|
||||
- Some limits have dependencies (page_size < max_records)
|
||||
|
||||
**Docs changes needed**:
|
||||
- Add to configuration reference
|
||||
|
||||
**Doc references**:
|
||||
- DETAILED_FINDINGS.md - Issue #20 "Hardcoded Constants"
|
||||
|
||||
---
|
||||
|
||||
### Issue #27: MEDIUM - Inconsistent Error Handling Patterns
|
||||
|
||||
**Where found**:
|
||||
|
||||
Reference in New Issue
Block a user