english version and minio console access

This commit is contained in:
Georgiy Syralev
2025-12-13 12:53:28 +03:00
parent 753696cc93
commit b799f278a4
47 changed files with 4386 additions and 1264 deletions

View File

@@ -105,7 +105,17 @@ export class AdminController {
return res.status(404).json({ message: 'Пользователь не найден' });
}
res.json({ status: 'success', data: user });
const safeUser = {
...user,
balance: typeof user.balance === 'number' ? user.balance : Number(user.balance ?? 0),
buckets: user.buckets?.map((bucket: any) => ({
...bucket,
usedBytes: typeof bucket.usedBytes === 'bigint' ? Number(bucket.usedBytes) : Number(bucket.usedBytes ?? 0),
objectCount: typeof bucket.objectCount === 'number' ? bucket.objectCount : Number(bucket.objectCount ?? 0),
})) ?? [],
};
res.json({ status: 'success', data: safeUser });
} catch (error) {
console.error('Ошибка получения данных пользователя:', error);
res.status(500).json({ message: 'Ошибка получения данных' });
@@ -307,7 +317,7 @@ export class AdminController {
})
]);
const statusMap = bucketStatusCounts.reduce<Record<string, number>>((acc, item) => {
const statusMap = bucketStatusCounts.reduce<Record<string, number>>((acc: Record<string, number>, item: { status: string; _count: { _all: number } }) => {
acc[item.status] = item._count._all;
return acc;
}, {});
@@ -426,7 +436,6 @@ export class AdminController {
await tx.response.deleteMany({ where: { operatorId: userId } });
await tx.storageBucket.deleteMany({ where: { userId } });
await tx.plan.deleteMany({ where: { userId } });
await tx.ticket.deleteMany({ where: { userId } });
await tx.check.deleteMany({ where: { userId } });
@@ -467,16 +476,24 @@ export class AdminController {
return res.status(404).json({ error: 'Пользователь не найден' });
}
console.log(`[Admin] Тест push-уведомления инициирован администратором ${user.username}`);
const now = new Date().toISOString();
const logMsg = `[Admin] PUSH-TEST | userId=${user.id} | username=${user.username} | email=${user.email} | time=${now}`;
console.log(logMsg);
// Имитируем задержку отправки
// Здесь должна быть реальная отправка push (имитация)
await new Promise(resolve => setTimeout(resolve, 500));
return res.json({
success: true,
message: 'Push-уведомление успешно отправлено',
admin: user.username,
timestamp: new Date().toISOString()
message: 'Push-уведомление успешно отправлено (тест)',
details: {
userId: user.id,
username: user.username,
email: user.email,
type: 'push',
time: now,
status: 'sent (mock)'
}
});
} catch (error) {
console.error('[Admin] Ошибка при тестировании push-уведомления:', error);
@@ -497,18 +514,24 @@ export class AdminController {
return res.status(404).json({ error: 'Пользователь не найден' });
}
console.log(`[Admin] Тест email-уведомления инициирован администратором ${user.username}`);
console.log(`[Admin] Email для теста: ${user.email}`);
const now = new Date().toISOString();
const logMsg = `[Admin] EMAIL-TEST | userId=${user.id} | username=${user.username} | email=${user.email} | time=${now}`;
console.log(logMsg);
// Имитируем задержку отправки
// Здесь должна быть реальная отправка email (имитация)
await new Promise(resolve => setTimeout(resolve, 800));
return res.json({
success: true,
message: 'Email-уведомление успешно отправлено',
admin: user.username,
email: user.email,
timestamp: new Date().toISOString()
message: 'Email-уведомление успешно отправлено (тест)',
details: {
userId: user.id,
username: user.username,
email: user.email,
type: 'email',
time: now,
status: 'sent (mock)'
}
});
} catch (error) {
console.error('[Admin] Ошибка при тестировании email-уведомления:', error);