2.9 KiB
2.9 KiB
AI Prompt Settings and Task Registry Plan
Summary
Add an AI prompt settings tab under the operations AI settings page. Operators can select a business AI task from a dropdown, edit its prompt, save the override, and reset it back to the shipped default. Runtime LLM calls must resolve prompts through a task registry instead of embedding large prompt blocks at each call site.
Default prompts are shipped as versioned resource data, not scattered business-code literals. Business services reference stable task keys, and the runtime resolves the effective prompt from the database override first, then the shipped default resource.
Key Changes
- Add a backend task prompt registry with stable keys, labels, groups, versions, default system prompts, and default task prompts.
- Store operator overrides in the existing
SystemSettingtable under anai_promptscategory. Store only custom overrides; defaults remain in the versioned prompt resource. - Add settings APIs:
GET /api/v1/settings/ai-promptsPUT /api/v1/settings/ai-prompts/{task_key}POST /api/v1/settings/ai-prompts/{task_key}/reset
- Migrate business LLM entrypoints to resolve prompts by task key.
aiproviderremains a pure model adapter and does not inject business prompts. - Add a “提示词” tab to
/ai. The tab shows a grouped task dropdown, current/default prompt status, editable prompt fields, save, and reset-to-default controls.
Initial Tasks
earth.news.enrich— Earth news localization and location enrichment.alerts.brief— system alert AI brief.alerts.situational.brief— situational alert AI brief.bgp.brief— BGP AI brief.location.factcheck.normalize— location factcheck normalization.location.factcheck.resolve— location factcheck fallback resolution.datasource.mapping— datasource mapping DSL generation.credential.guide— credential guide generation.ai.connection_test— AI provider connection test.
Playground and public free-form analyze endpoints stay caller-controlled and are not shown in the prompt settings dropdown.
Test Plan
- Backend uses
uv:uv run pytest tests/test_settings_ai_prompts.pyuv run pytest tests/test_earth_news.pyuv run pytest tests/test_api.py
- Frontend uses
bun:cd frontend && bun run build
- Manual checks:
- Prompt dropdown switches task content correctly.
- Save persists an override and runtime calls use it.
- Reset deletes the override and restores the shipped default.
- Alert prompts do not leak into news, BGP, datasource, or location tasks.
Assumptions
- This iteration does not add prompt history, approval workflows, A/B testing, or per-user prompt variants.
- Strict JSON tasks may fail validation if an operator edits away the output contract; existing task-specific failure and retry behavior remains responsible for recovery.
- The UI stays Chinese-only in this iteration.