ваше сообщение коммита

This commit is contained in:
2025-09-24 13:05:20 +03:00
parent de0f8aecf2
commit 76cde4b53d
45 changed files with 2167 additions and 2854 deletions

View File

@@ -21,20 +21,28 @@ const { requireAuth } = require('../middleware/auth');
// Проверка статуса подключения к Ollama
router.get('/status', requireAuth, async (req, res) => {
try {
// Проверяем, что контейнер Ollama запущен
const { stdout } = await execAsync('docker ps --filter "name=dapp-ollama" --format "{{.Names}}"');
const isContainerRunning = stdout.trim() === 'dapp-ollama';
const axios = require('axios');
const ollamaUrl = process.env.OLLAMA_BASE_URL || 'http://ollama:11434';
if (!isContainerRunning) {
return res.json({ connected: false, error: 'Ollama container not running' });
}
// Проверяем API Ollama
// Проверяем API Ollama через HTTP запрос
try {
const { stdout: apiResponse } = await execAsync('docker exec dapp-ollama ollama list');
return res.json({ connected: true, message: 'Ollama is running' });
const response = await axios.get(`${ollamaUrl}/api/tags`, {
timeout: 5000 // 5 секунд таймаут
});
const models = response.data.models || [];
return res.json({
connected: true,
message: 'Ollama is running',
models: models.length,
availableModels: models.map(m => m.name)
});
} catch (apiError) {
return res.json({ connected: false, error: 'Ollama API not responding' });
logger.error('Ollama API error:', apiError.message);
return res.json({
connected: false,
error: `Ollama API not responding: ${apiError.message}`
});
}
} catch (error) {
logger.error('Error checking Ollama status:', error);
@@ -45,21 +53,19 @@ router.get('/status', requireAuth, async (req, res) => {
// Получение списка установленных моделей
router.get('/models', requireAuth, async (req, res) => {
try {
const { stdout } = await execAsync('docker exec dapp-ollama ollama list');
const lines = stdout.trim().split('\n').slice(1); // Пропускаем заголовок
const axios = require('axios');
const ollamaUrl = process.env.OLLAMA_BASE_URL || 'http://ollama:11434';
const models = lines.map(line => {
const parts = line.trim().split(/\s+/);
if (parts.length >= 4) {
return {
name: parts[0],
id: parts[1],
size: parseInt(parts[2]) || 0,
modified: parts.slice(3).join(' ')
};
}
return null;
}).filter(model => model !== null);
const response = await axios.get(`${ollamaUrl}/api/tags`, {
timeout: 5000
});
const models = (response.data.models || []).map(model => ({
name: model.name,
id: model.model || model.name,
size: model.size || 0,
modified: model.modified_at || 'Unknown'
}));
res.json({ models });
} catch (error) {