ssh! и документы

This commit is contained in:
Georgiy Syralev
2025-10-12 15:20:39 +03:00
parent 141955dd46
commit 4211692312
50 changed files with 920 additions and 1333 deletions

View File

@@ -1,27 +1,31 @@
# Copilot Instructions for Ospabhost 8.1
## Архитектура проекта
- **Монорепозиторий**: две основные части — `backend` (Express, TypeScript, Prisma) и `frontend` (React, Vite, TypeScript).
## Архитектура и основные компоненты
- **Монорепозиторий**: две части — `backend` (Express, TypeScript, Prisma) и `frontend` (React, Vite, TypeScript).
- **Backend**:
- Основной сервер: `backend/src/index.ts` — точка входа, маршрутизация, CORS, логирование.
- Модули: `backend/src/modules/*` бизнес-логика по доменам (auth, ticket, check, os, server, tariff).
- Интеграция с Proxmox: через API, см. `backend/src/modules/server/proxmoxApi.ts`.
- ORM: Prisma, схема — `backend/prisma/schema.prisma`.
- Статические файлы чеков: `backend/uploads/checks`.
- Точка входа: `backend/src/index.ts` (Express, маршруты `/api/*`, CORS, логирование).
- Модули: `backend/src/modules/*` — домены (auth, ticket, check, os, server, tariff), каждый экспортирует маршруты и сервисы.
- Интеграция с Proxmox: через API, см. `backend/src/modules/server/proxmoxApi.ts` (создание/управление контейнерами, смена пароля root, статистика).
- ORM: Prisma, схема — `backend/prisma/schema.prisma`, миграции и seed-скрипты — в `backend/prisma/`.
- Статические файлы чеков: `backend/uploads/checks` (доступны по `/uploads/checks`).
- **Frontend**:
- SPA на React + Vite, точка входа: `frontend/src/main.tsx`.
- Страницы: `frontend/src/pages/*`, компоненты: `frontend/src/components/*`.
- Контекст авторизации: `frontend/src/context/authcontext.tsx`, `useAuth.ts`.
- Авторизация: `frontend/src/context/authcontext.tsx`, `useAuth.ts` (контекст, хуки).
- Дашборд: `frontend/src/pages/dashboard/mainpage.tsx` — реализует сайдбар, вкладки, загрузку данных пользователя, обработку токена, обновление данных через кастомное событие `userDataUpdate`.
## Важные паттерны и конвенции
- **Маршруты API**: начинаются с `/api/`, см. `backend/src/index.ts`.
- **Модули backend**: каждый домен — отдельная папка, экспортирует маршруты и сервисы.
- **Работа с Proxmox**: все операции (создание контейнера, управление, статистика) через функции из `proxmoxApi.ts`.
- **Статусные поля**: для сущностей (Server, Check, Ticket) используются строковые статусы (`creating`, `running`, `pending`, `open` и т.д.).
## Ключевые паттерны и конвенции
- **API**: все маршруты backend — с префиксом `/api/`.
- **Модули backend**: каждый домен — отдельная папка, экспортирует маршруты и сервисы (см. пример: `server/proxmoxApi.ts`).
- **Работа с Proxmox**: все операции через функции из `proxmoxApi.ts`, параметры берутся из `.env`.
- **Статусные поля**: для Server, Check, Ticket строковые статусы (`creating`, `running`, `pending`, `open` и др.).
- **Пароли**: генерируются через `generateSecurePassword` (см. `proxmoxApi.ts`).
- **Описание тарифа**: парсится для выделения ресурсов (ядра, RAM, SSD) при создании контейнера.
- **Frontend**: авторизация через контекст, проверка токена, автоматический logout при ошибке 401.
- **Дашборд**: вкладки и права оператора определяются по полю `operator` в userData, обновление данных через событие `userDataUpdate`.
## Сборка и запуск
## Сборка, запуск и workflow
- **Backend**:
- `npm run dev` — запуск с hot-reload (ts-node-dev).
- `npm run build` — компиляция TypeScript.
@@ -32,9 +36,9 @@
- `npm run preview` — предпросмотр production-сборки.
- `npm run lint` — проверка ESLint.
## Взаимодействие компонентов
- **Frontend ↔ Backend**: через REST API, адреса `/api/*`.
- **Backend ↔ Proxmox**: через HTTP API, параметры берутся из `.env`.
## Интеграции и взаимодействие
- **Frontend ↔ Backend**: через REST API (`/api/*`), авторизация через JWT-токен в localStorage.
- **Backend ↔ Proxmox**: через HTTP API, параметры из `.env`.
- **Prisma**: миграции и seed-скрипты — в `backend/prisma/`.
## Внешние зависимости
@@ -45,15 +49,16 @@
- `backend/src/index.ts` — точка входа, маршрутизация.
- `backend/src/modules/server/proxmoxApi.ts` — интеграция с Proxmox.
- `backend/prisma/schema.prisma` — схема данных.
- `frontend/src/pages/*` — страницы SPA.
- `frontend/src/pages/dashboard/mainpage.tsx` — дашборд, обработка токена, сайдбар, вкладки.
- `frontend/src/context/authcontext.tsx` — авторизация.
## Особенности
## Особенности и conventions
- **CORS**: разрешены только локальные адреса для разработки.
- **Логирование**: каждый запрос логируется с датой и методом.
- **Статические файлы**: чеки доступны по `/uploads/checks`.
- **Пароли root**: генерируются и меняются через API Proxmox.
- **Frontend**: сайдбар и вкладки строятся динамически, права оператора определяются по userData.
---
_Обновите этот файл при изменении архитектуры или ключевых паттернов. Для уточнения разделов — дайте обратную связь!_
_Обновляйте этот файл при изменении архитектуры, workflow или паттернов. Для уточнения разделов — дайте обратную связь!_