feat: AI model selector + i18n nav labels (RU/EN) on new modules
AI model selector:
- AiAssistantService::MODEL_DEFAULTS and MODEL_OPTIONS const tables (3 picks per
provider: Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5, OpenAI 4o / 4o-mini,
Gemini 1.5 Pro / Flash). Default upgraded from Sonnet 4.5 → Sonnet 4.6.
- modelFor(provider, company?) resolves tenant override > global default.
- All 8 hardcoded model strings replaced with modelFor() across callClaude
(chat with tool-use), callOpenAI, callGemini (chat), postClaude/postOpenAI/
postGemini (single-shot), and OcrInvoiceService.
- Settings page adds 3 model selectors per provider with persistence at
settings.ai.models.{claude,gpt,gemini}.
i18n nav labels:
- TireSet / Bodyshop / Subcontractor / SubcontractJob / PricingCoefficient /
ShopCustomer resources: getNavigationLabel / getNavigationGroup /
getModelLabel / getPluralModelLabel return __()-wrapped strings.
- 20 keys added to lang/ru.json and lang/en.json.
Tests (4 new): default model, tenant override wins, unknown provider falls
back to claude default, options dictionary contains each default key.
Full suite: 134 passed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+21
-2
@@ -21,7 +21,6 @@
|
||||
"Status": "Status",
|
||||
"Actions": "Actions",
|
||||
"Notifications": "Notifications",
|
||||
|
||||
"Clienți": "Clients",
|
||||
"Mașini": "Vehicles",
|
||||
"Cereri": "Leads",
|
||||
@@ -53,5 +52,25 @@
|
||||
"Jurnal": "Audit log",
|
||||
"Telefonie": "Calls",
|
||||
"Finanțe": "Finance",
|
||||
"Site PSauto": "Public site"
|
||||
"Site PSauto": "Public site",
|
||||
"Seturi anvelope": "Tire sets",
|
||||
"Anvelope": "Tires",
|
||||
"set anvelope": "tire set",
|
||||
"seturi anvelope": "tire sets",
|
||||
"Tinichigerie / Detailing": "Body / Detailing",
|
||||
"Tinichigerie": "Body shop",
|
||||
"lucrare caroserie": "body job",
|
||||
"lucrări caroserie": "body jobs",
|
||||
"Subcontractori": "Subcontractors",
|
||||
"Subcontractare": "Subcontracting",
|
||||
"subcontractor": "subcontractor",
|
||||
"Lucrări terți": "Outsourced jobs",
|
||||
"lucrare terți": "outsourced job",
|
||||
"lucrări terți": "outsourced jobs",
|
||||
"Coeficienți preț": "Pricing coefficients",
|
||||
"coeficient": "coefficient",
|
||||
"Magazin": "Shop",
|
||||
"Clienți magazin": "Shop customers",
|
||||
"client magazin": "shop customer",
|
||||
"clienți magazin": "shop customers"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user