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.9 KiB
JSON
77 lines
2.9 KiB
JSON
{
|
|
"Dashboard": "Панель",
|
|
"Save": "Сохранить",
|
|
"Cancel": "Отмена",
|
|
"Delete": "Удалить",
|
|
"Edit": "Изменить",
|
|
"Create": "Создать",
|
|
"Search": "Поиск",
|
|
"Filters": "Фильтры",
|
|
"Reset": "Сбросить",
|
|
"Yes": "Да",
|
|
"No": "Нет",
|
|
"Loading": "Загрузка...",
|
|
"Empty": "Нет результатов",
|
|
"Settings": "Настройки",
|
|
"Profile": "Профиль",
|
|
"Logout": "Выход",
|
|
"Welcome": "Добро пожаловать",
|
|
"Total": "Итого",
|
|
"Date": "Дата",
|
|
"Status": "Статус",
|
|
"Actions": "Действия",
|
|
"Notifications": "Уведомления",
|
|
"Clienți": "Клиенты",
|
|
"Mașini": "Машины",
|
|
"Cereri": "Заявки",
|
|
"Pâlnie": "Воронка",
|
|
"Calendar": "Календарь",
|
|
"Programări": "Записи",
|
|
"Fișe lucru": "Рабочие листы",
|
|
"Kanban": "Канбан",
|
|
"Norme-ore": "Нормо-часы",
|
|
"Depozit": "Склад",
|
|
"Furnizori": "Поставщики",
|
|
"Achiziții": "Закупки",
|
|
"Plăți": "Платежи",
|
|
"Cheltuieli": "Расходы",
|
|
"Salarii": "Зарплаты",
|
|
"Tehnicieni": "Техники",
|
|
"Marketing": "Маркетинг",
|
|
"Mesaje": "Сообщения",
|
|
"Rapoarte": "Отчёты",
|
|
"Recomandări": "Рекомендации",
|
|
"Încărcare STO": "Загрузка СТО",
|
|
"Procentaj": "Наценка",
|
|
"VIN-căutare": "VIN-поиск",
|
|
"Integrări": "Интеграции",
|
|
"Backup": "Бэкап",
|
|
"Asistent AI": "AI Ассистент",
|
|
"Setări companie": "Настройки компании",
|
|
"Utilizatori": "Пользователи",
|
|
"Jurnal": "Журнал",
|
|
"Telefonie": "Телефония",
|
|
"Finanțe": "Финансы",
|
|
"Site PSauto": "Сайт",
|
|
"Seturi anvelope": "Шины (комплекты)",
|
|
"Anvelope": "Шины",
|
|
"set anvelope": "комплект шин",
|
|
"seturi anvelope": "комплекты шин",
|
|
"Tinichigerie / Detailing": "Кузов / Детейлинг",
|
|
"Tinichigerie": "Кузовной цех",
|
|
"lucrare caroserie": "кузовная работа",
|
|
"lucrări caroserie": "кузовные работы",
|
|
"Subcontractori": "Субподрядчики",
|
|
"Subcontractare": "Субподряд",
|
|
"subcontractor": "субподрядчик",
|
|
"Lucrări terți": "Работы у третьих лиц",
|
|
"lucrare terți": "работа у третьих лиц",
|
|
"lucrări terți": "работы у третьих лиц",
|
|
"Coeficienți preț": "Ценовые коэффициенты",
|
|
"coeficient": "коэффициент",
|
|
"Magazin": "Магазин",
|
|
"Clienți magazin": "Клиенты магазина",
|
|
"client magazin": "клиент магазина",
|
|
"clienți magazin": "клиенты магазина"
|
|
}
|