Files
Business-Management/features/ai-service/CLAUDE.md
T
curo1305 cfec3bb906 feat: Phase 4+5 — admin storage UI, backend proxy, CLAUDE.md enforcement
- backend/app/routers/storage_config.py: 5 admin-only endpoints proxying
  storage-service config + migration API (GET/PATCH/POST/DELETE)
- backend/app/main.py: register storage_config router
- frontend/src/api/client.ts: StorageStatus, MigrationStatus,
  StorageBackendConfig interfaces + 5 API functions
- frontend/src/pages/StorageAdminPage.tsx: full admin UI — backend health
  dot, driver selector (local/S3/WebDAV), conditional credential fields,
  Test & Migrate button, live 2s-poll migration progress bar, Cancel
- frontend/src/App.tsx: /admin/storage route (AdminRoute guard)
- CLAUDE.md: storage enforcement rule, updated Docker tables (6 services,
  3 volumes), §20 in merge checklist
- backend/CLAUDE.md, frontend/CLAUDE.md, doc-service/CLAUDE.md,
  ai-service/CLAUDE.md: updated to reflect storage-service integration
- tests/ALL_TESTS.md + tests/storage-service_tests.md: §20 (20 tests)
- backend/STATUS.md, frontend/STATUS.md: updated with new endpoints/routes
- changelog/2026-04-20_storage-service.md: full change log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:13:05 +02:00

2.3 KiB

ai-service — Claude context

AI provider intermediary, port 8010 (internal only — never proxied to the browser). Accepts chat requests from doc-service (and potentially other callers). Manages a priority queue and abstracts over multiple AI providers (Anthropic, Ollama/LM Studio). See root CLAUDE.md for architecture, Docker, and project-wide workflows.


File & Folder Tree

features/ai-service/
├── app/
│   ├── main.py                    ← FastAPI, queue worker lifespan
│   ├── core/
│   │   └── config.py              ← Settings via pydantic-settings
│   ├── providers/
│   │   ├── base.py                ← AIProvider abstract class
│   │   ├── anthropic_provider.py  ← Anthropic API integration
│   │   └── openai_compat.py       ← Ollama / LM Studio compatibility
│   ├── routers/
│   │   ├── chat.py                ← POST /chat (sync, NORMAL priority queue)
│   │   ├── health.py              ← GET /health
│   │   ├── queue.py               ← GET /queue/status, /pause, /resume, /cancel/{id}
│   │   └── plugin.py              ← GET /plugin/manifest (access rules for ai-service-admin group)
│   └── services/
│       ├── queue.py               ← Priority queue (CRITICAL > HIGH > NORMAL)
│       └── config_reader.py       ← Reads ai_service_config.json from storage-service config bucket (30 s TTL cache)
├── Dockerfile                     ← python:3.12-slim, non-root user 1001
└── STATUS.md

API Endpoints (internal only)

Method Path Description
POST /chat Chat request (queued at NORMAL priority)
GET /health Health check
GET /queue/status Queue state
POST /queue/pause Pause queue
POST /queue/resume Resume queue
POST /queue/cancel/{job_id} Cancel job
GET /plugin/manifest Plugin manifest (access rules for ai-service-admin group)

These endpoints are only reachable on backend-net. The backend does not expose them to the browser.


Note on timeout and retry configuration

Caller-side timeout and retry settings live in features/doc-service/app/services/ai_client.py — see features/doc-service/CLAUDE.md for the values.