26 lines
1.2 KiB
Markdown
26 lines
1.2 KiB
Markdown
# Plan 08-04 Summary — Admin API Decomposition
|
|
|
|
**Status:** Complete
|
|
**Requirements:** CODE-01, CODE-08
|
|
**Date:** 2026-06-12
|
|
|
|
## What Was Done
|
|
|
|
- Added `validate_provider_id()` to `backend/services/ai_config.py` (D-11 migration)
|
|
- Created `backend/api/admin/` package: `shared.py`, `users.py`, `quotas.py`, `ai.py`, `__init__.py`
|
|
- `__init__.py` aggregates with `prefix="/api/admin"` — 13 routes total
|
|
- All sub-routers declare no prefix (D-04)
|
|
- `_user_to_dict` shared helper in `shared.py` (T-02-27 / SEC-07 field whitelist)
|
|
- Both `SystemAiConfigUpdate` and `TestConnectionRequest` call `validate_provider_id()` (CODE-08)
|
|
- Deleted `backend/api/admin.py` monolith after 54-test URL regression passed
|
|
|
|
## Test Results
|
|
|
|
- `tests/test_admin_api.py`: 27 passed
|
|
- `tests/test_cloud.py` + `tests/test_admin_ai_config.py`: 27 passed
|
|
- Full suite: 405 passed (1 pre-existing docx env skip)
|
|
|
|
## Admin Paths (unchanged)
|
|
|
|
`/api/admin/users`, `/api/admin/users/{id}`, `/api/admin/users/{id}/status`, `/api/admin/users/{id}/quota`, `/api/admin/users/{id}/ai-config`, `/api/admin/users/{id}/password-reset`, `/api/admin/topics`, `/api/admin/ai-config`, `/api/admin/ai-config/models`, `/api/admin/ai-config/test-connection`
|