0e3f9e8bca
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>
77 lines
2.2 KiB
JSON
77 lines
2.2 KiB
JSON
{
|
|
"Dashboard": "Dashboard",
|
|
"Save": "Save",
|
|
"Cancel": "Cancel",
|
|
"Delete": "Delete",
|
|
"Edit": "Edit",
|
|
"Create": "Create",
|
|
"Search": "Search",
|
|
"Filters": "Filters",
|
|
"Reset": "Reset",
|
|
"Yes": "Yes",
|
|
"No": "No",
|
|
"Loading": "Loading...",
|
|
"Empty": "No results",
|
|
"Settings": "Settings",
|
|
"Profile": "Profile",
|
|
"Logout": "Logout",
|
|
"Welcome": "Welcome",
|
|
"Total": "Total",
|
|
"Date": "Date",
|
|
"Status": "Status",
|
|
"Actions": "Actions",
|
|
"Notifications": "Notifications",
|
|
"Clienți": "Clients",
|
|
"Mașini": "Vehicles",
|
|
"Cereri": "Leads",
|
|
"Pâlnie": "Pipeline",
|
|
"Calendar": "Calendar",
|
|
"Programări": "Appointments",
|
|
"Fișe lucru": "Work orders",
|
|
"Kanban": "Kanban",
|
|
"Norme-ore": "Labor times",
|
|
"Depozit": "Inventory",
|
|
"Furnizori": "Suppliers",
|
|
"Achiziții": "Purchases",
|
|
"Plăți": "Payments",
|
|
"Cheltuieli": "Expenses",
|
|
"Salarii": "Payroll",
|
|
"Tehnicieni": "Technicians",
|
|
"Marketing": "Marketing",
|
|
"Mesaje": "Messages",
|
|
"Rapoarte": "Reports",
|
|
"Recomandări": "Recommendations",
|
|
"Încărcare STO": "Workshop load",
|
|
"Procentaj": "Markup",
|
|
"VIN-căutare": "VIN search",
|
|
"Integrări": "Integrations",
|
|
"Backup": "Backup",
|
|
"Asistent AI": "AI Assistant",
|
|
"Setări companie": "Company settings",
|
|
"Utilizatori": "Users",
|
|
"Jurnal": "Audit log",
|
|
"Telefonie": "Calls",
|
|
"Finanțe": "Finance",
|
|
"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"
|
|
}
|