- internal/ai/types.go: IntakeRequest, IntakeResult, TierConfig, AIConfig domain types - internal/ai/client.go: AIClient interface + TierClient (go-openai, BaseURL tier-routing) - internal/ai/mock.go: MockAIClient test double with HighConfidenceResult/LowConfidenceResult fixtures - internal/ai/prompts/intake.go: BuildIntakePrompt() JSON-extraction prompt template - internal/config/config.go: Config.AI AIConfig field, tier defaults, env bindings, ai_config.json merge - ai_config.json: template config with placeholder Tier2 API key - .gitignore: add ai_config.local.json pattern for real keys (T-02-01 mitigation) - All tests pass: TestMockAIClient, TestMockAIClientError, TestTierClientConstruction, TestAIConfigDefaults
19 lines
456 B
JSON
19 lines
456 B
JSON
{
|
|
"ai": {
|
|
"tier1": {
|
|
"base_url": "http://localhost:8000/v1",
|
|
"api_key": "local",
|
|
"model": "gemma-4-e4b",
|
|
"timeout_seconds": 30
|
|
},
|
|
"tier2": {
|
|
"base_url": "https://openrouter.ai/api/v1",
|
|
"api_key": "REPLACE_WITH_OPENROUTER_KEY",
|
|
"model": "google/gemma-3-27b-it",
|
|
"timeout_seconds": 60
|
|
},
|
|
"confidence_threshold": 0.75,
|
|
"quick_add_enabled": false,
|
|
"quick_add_threshold": 0.90
|
|
}
|
|
}
|