refactor: single image provider — routerai gpt-5-image-mini only

- config: убраны imageBaseUrl/imageFallbackBaseUrl/imageModel (старые провайдеры)
  Остались только routeraiBaseUrl, routeraiApiKey, routeraiModel
- covers.js: единственная цепочка routerai→retry→local SVG
  Убраны generateCoverViaImageGenerations, ViaResponses (aiprimetech), ViaImagesEndpoint
  generateCoverViaRouterAI: убран quality параметр (routerai игнорирует)
- postImages.js: убраны Nyxos/Aiguoguo, убраны isHD/imgQuality/tryNyxos
- aiUsage.js: реальные цены из статистики routerai.ru:
  gpt-5-image-mini ~₽2.72, всегда 4175 image tokens (high quality)
- index.js: лог показывает routerai вместо старого aiguoguo
This commit is contained in:
Ник (Claude)
2026-06-11 15:44:33 +03:00
parent 08086650fc
commit fe7af0b3b5
5 changed files with 56 additions and 97 deletions
+9 -12
View File
@@ -64,21 +64,18 @@ async function reloadAi() {
const pick = (dbKey, envOld, def) =>
(s[dbKey] && s[dbKey].trim()) || process.env[dbKey] || process.env[envOld] || def;
config.ai.baseUrl = pick('AI_TEXT_BASE_URL', 'AI_BASE_URL', 'https://aiprimetech.io/v1');
config.ai.apiKey = pick('AI_TEXT_API_KEY', 'AI_API_KEY', null);
config.ai.imageBaseUrl= pick('AI_IMAGE_BASE_URL', 'AI_IMAGE_BASE_URL', 'https://plus.nyxos.workers.dev/v1');
config.ai.imageApiKey = pick('AI_IMAGE_API_KEY', 'AI_IMAGE_API_KEY', config.ai.apiKey);
config.ai.imageFallbackBaseUrl = (s['AI_IMAGE_FALLBACK_BASE_URL'] && s['AI_IMAGE_FALLBACK_BASE_URL'].trim()) || 'https://api.aiguoguo199.com/v1';
config.ai.imageFallbackApiKey = (s['AI_IMAGE_FALLBACK_API_KEY'] && s['AI_IMAGE_FALLBACK_API_KEY'].trim()) || config.ai.imageApiKey;
config.ai.routeraiBaseUrl = (s['ROUTERAI_BASE_URL'] || 'https://routerai.ru/api/v1').trim();
config.ai.routeraiApiKey = (s['ROUTERAI_API_KEY'] || '').trim() || null;
config.ai.routeraiImageModel = (s['ROUTERAI_IMAGE_MODEL'] || 'openai/gpt-5-image-mini').trim();
config.ai.imageModel = pick('AI_IMAGE_MODEL', 'AI_MODEL_IMAGE', 'gpt-image-2');
config.ai.imageModelViaResponses = pick('AI_IMAGE_MODEL_VIA_RESPONSES', 'AI_MODEL_IMAGE_VIA_RESPONSES', 'gpt-5.5');
// Текст — aiprimetech.io
config.ai.baseUrl = pick('AI_TEXT_BASE_URL', 'AI_BASE_URL', 'https://aiprimetech.io/v1');
config.ai.apiKey = pick('AI_TEXT_API_KEY', 'AI_API_KEY', null);
config.ai.models.post = pick('AI_TEXT_MODEL_POST', 'AI_MODEL_POST', 'claude-haiku-4-5-20251001');
config.ai.models.article = pick('AI_TEXT_MODEL_ARTICLE', 'AI_MODEL_ARTICLE', 'claude-sonnet-4-6');
config.ai.models.topics = pick('AI_TEXT_MODEL_TOPICS', 'AI_MODEL_TOPICS', 'claude-haiku-4-5-20251001');
config.ai.models.image = pick('AI_IMAGE_MODEL', 'AI_MODEL_IMAGE', 'gpt-image-1-mini');
// Картинки — routerai.ru (только gpt-5-image-mini, /responses endpoint)
// Реальная цена: ₽2.72/картинка (4175 image tokens × ₽0.000747 + input - output discount)
config.ai.routeraiBaseUrl = (s['ROUTERAI_BASE_URL'] || 'https://routerai.ru/api/v1').trim();
config.ai.routeraiApiKey = (s['ROUTERAI_API_KEY'] || '').trim() || null;
config.ai.routeraiModel = 'openai/gpt-5-image-mini'; // единственная модель, quality всегда high
return config.ai;
}