прямые импорты

This commit is contained in:
2025-10-14 13:44:18 +03:00
parent 7937be469b
commit 2b5e5564c8

View File

@@ -1,6 +1,4 @@
const router = require('express').Router(); const router = require('express').Router();
const fs = require('fs');
const path = require('path');
const timer = (time = 300) => (req, res, next) => setTimeout(next, time); const timer = (time = 300) => (req, res, next) => setTimeout(next, time);
@@ -15,44 +13,13 @@ router.use((req, res, next) => {
router.use(timer()); router.use(timer());
// Загружаем моки из JSON файлов // Загружаем моки через прямые импорты
const loadMockData = (filename) => { const userMocks = require('./mocks/user.json');
try { const companyMocks = require('./mocks/companies.json');
const filePath = path.join(__dirname, 'mocks', filename); const productMocks = require('./mocks/products.json');
const searchMocks = require('./mocks/search.json');
const authMocks = require('./mocks/auth.json');
// Проверяем существование файла
if (!fs.existsSync(filePath)) {
console.error(`Файл ${filename} не найден по пути: ${filePath}`);
return {};
}
const data = fs.readFileSync(filePath, 'utf8');
// Проверяем, что файл не пустой
if (!data || data.trim() === '') {
console.error(`Файл ${filename} пустой`);
return {};
}
const parsedData = JSON.parse(data);
console.log(`Успешно загружен файл ${filename}`);
return parsedData;
} catch (error) {
console.error(`Ошибка загрузки ${filename}:`, error.message);
return {};
}
};
// Загружаем все моки
const userMocks = loadMockData('user.json');
const companyMocks = loadMockData('companies.json');
const productMocks = loadMockData('products.json');
const searchMocks = loadMockData('search.json');
const authMocks = loadMockData('auth.json');
// Логируем загруженные данные для отладки
console.log('SearchMocks loaded:', searchMocks);
console.log('Suggestions:', searchMocks.suggestions);
// Вспомогательные функции для генерации динамических данных // Вспомогательные функции для генерации динамических данных
const generateTimestamp = () => Date.now(); const generateTimestamp = () => Date.now();
@@ -60,18 +27,14 @@ const generateDate = (daysAgo) => new Date(Date.now() - 86400000 * daysAgo).toIS
// Функция для замены плейсхолдеров в данных // Функция для замены плейсхолдеров в данных
const processMockData = (data) => { const processMockData = (data) => {
// Проверяем, что данные существуют
if (data === undefined || data === null) { if (data === undefined || data === null) {
console.warn('processMockData: получены undefined или null данные');
return data; return data;
} }
const timestamp = generateTimestamp(); const timestamp = generateTimestamp();
const jsonString = JSON.stringify(data); const jsonString = JSON.stringify(data);
// Проверяем, что JSON.stringify вернул валидную строку
if (jsonString === undefined || jsonString === null) { if (jsonString === undefined || jsonString === null) {
console.warn('processMockData: JSON.stringify вернул undefined или null');
return data; return data;
} }
@@ -100,8 +63,7 @@ const processMockData = (data) => {
try { try {
return JSON.parse(processedData); return JSON.parse(processedData);
} catch (error) { } catch (error) {
console.error('processMockData: ошибка при парсинге JSON:', error); return data;
return data; // Возвращаем исходные данные в случае ошибки
} }
}; };
@@ -124,12 +86,15 @@ router.post('/auth/login', (req, res) => {
}); });
} }
// Проверяем, что данные загружены
if (!authMocks?.mockAuthResponse) { if (!authMocks?.mockAuthResponse) {
console.error('authMocks.mockAuthResponse не загружен');
return res.status(500).json({ return res.status(500).json({
error: 'Internal Server Error', error: 'Internal Server Error',
message: 'Ошибка загрузки данных аутентификации' message: 'Ошибка загрузки данных аутентификации',
details: {
authMocksExists: !!authMocks,
authMocksType: typeof authMocks,
authMocksKeys: authMocks ? Object.keys(authMocks) : null
}
}); });
} }
@@ -405,19 +370,11 @@ router.get('/search', (req, res) => {
limit = 20 limit = 20
} = req.query; } = req.query;
console.log('Search query:', query);
console.log('Search params:', req.query);
const companies = processMockData(companyMocks.mockCompanies); const companies = processMockData(companyMocks.mockCompanies);
console.log('Companies loaded:', companies.length);
console.log('First company:', companies[0]);
let filtered = [...companies]; let filtered = [...companies];
// Поиск по тексту
if (query) { if (query) {
const q = query.toLowerCase().trim(); const q = query.toLowerCase().trim();
console.log('Searching for:', q);
filtered = filtered.filter(c => { filtered = filtered.filter(c => {
const fullName = (c.fullName || '').toLowerCase(); const fullName = (c.fullName || '').toLowerCase();
@@ -426,20 +383,12 @@ router.get('/search', (req, res) => {
const slogan = (c.slogan || '').toLowerCase(); const slogan = (c.slogan || '').toLowerCase();
const legalAddress = (c.legalAddress || '').toLowerCase(); const legalAddress = (c.legalAddress || '').toLowerCase();
const matches = fullName.includes(q) || return fullName.includes(q) ||
shortName.includes(q) || shortName.includes(q) ||
industry.includes(q) || industry.includes(q) ||
slogan.includes(q) || slogan.includes(q) ||
legalAddress.includes(q); legalAddress.includes(q);
if (matches) {
console.log('Found match:', c.shortName, 'in', { fullName, shortName, industry, slogan, legalAddress });
}
return matches;
}); });
console.log('Filtered results:', filtered.length);
} }
// Фильтр по отраслям // Фильтр по отраслям
@@ -545,14 +494,11 @@ router.get('/search/suggestions', (req, res) => {
const { q } = req.query; const { q } = req.query;
const suggestions = searchMocks.suggestions || []; const suggestions = searchMocks.suggestions || [];
console.log('Suggestions loaded:', suggestions);
console.log('Query:', q);
const filtered = q const filtered = q
? suggestions.filter(s => s.toLowerCase().includes(q.toLowerCase())) ? suggestions.filter(s => s.toLowerCase().includes(q.toLowerCase()))
: suggestions.slice(0, 10); // Показываем только первые 10 если нет запроса : suggestions.slice(0, 10);
console.log('Filtered suggestions:', filtered);
res.status(200).json(filtered); res.status(200).json(filtered);
}); });