From b883ab46d8370e2a4aba908cc394df951a4ca897 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 22:06:43 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #12 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/deep-assistant/GPTutor/issues/12 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..84aec7a4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/deep-assistant/GPTutor/issues/12 +Your prepared branch: issue-12-b27d1cc7 +Your prepared working directory: /tmp/gh-issue-solver-1757531186412 + +Proceed. \ No newline at end of file From 774fb9b92da811395b0032ba3f8d9ae654c6ba09 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 22:06:59 +0300 Subject: [PATCH 2/3] Remove CLAUDE.md - PR created successfully --- CLAUDE.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 84aec7a4..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/deep-assistant/GPTutor/issues/12 -Your prepared branch: issue-12-b27d1cc7 -Your prepared working directory: /tmp/gh-issue-solver-1757531186412 - -Proceed. \ No newline at end of file From 6f1bd85e57fd4304b9067e3e51c7e631c0d741a9 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 22:08:55 +0300 Subject: [PATCH 3/3] Add comprehensive README.md with full process descriptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Document project architecture and technology stack - Add detailed deployment processes for local, staging, and production - Include configuration examples and environment setup - Document supported platforms (VK, Telegram) and applications - Add security, monitoring, and database information - Provide quick start guide and system requirements Resolves #12 πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..89e4cdcd --- /dev/null +++ b/README.md @@ -0,0 +1,191 @@ +# GPTutor + +GPTutor β€” это ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания AI-ассистСнтов ΠΈ Ρ‡Π°Ρ‚-Π±ΠΎΡ‚ΠΎΠ² с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ (VK, Telegram) ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (GPTutor, Stable Art, AiHumor). + +## АрхитСктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° + +ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: + +- **GPTutor-Frontend** β€” React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π²Π΅Π±-интСрфСйса +- **GPTutor-Backend** β€” Spring Boot бэкСнд с REST API ΠΈ WebSocket ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ +- **GPTutor-Models** β€” сСрвис машинного обучСния для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов +- **GPTutor-Rag** β€” систСма поиска ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² + +## ВСхнологичСский стСк + +### Frontend +- React 18.2.0 с TypeScript +- VK UI Kit для интСрфСйса VK Mini Apps +- Telegram SDK для Telegram Bot Platform +- Monaco Editor для рСдактирования ΠΊΠΎΠ΄Π° +- Markdown-it для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ + +### Backend +- Spring Boot 3.0.5 (Java 17) +- Spring WebSocket для real-time ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ +- PostgreSQL для хранСния Π΄Π°Π½Π½Ρ‹Ρ… +- AWS S3 для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° + +### Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° +- Docker ΠΈ Docker Compose для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ +- Nginx для проксирования запросов +- Traefik для автоматичСского SSL +- Let's Encrypt (certbot) для SSL сСртификатов + +## ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ развСртывания + +### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° + +#### Запуск для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ +```bash +./local-run.sh +``` + +Π­Ρ‚ΠΎΡ‚ скрипт: +1. ЗапускаСт PostgreSQL ΠΈ backend Π² Docker +2. ЗапускаСт models сСрвис +3. УстанавливаСт зависимости frontend Ρ‡Π΅Ρ€Π΅Π· npm +4. ЗапускаСт frontend Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 10888 + +#### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ сборка с Nginx +```bash +./build-local-frontend-nginx.sh +``` + +Π­Ρ‚ΠΎΡ‚ процСсс: +1. Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния +2. УдаляСт старыС volumes +3. ΠŸΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΈ запускаСт frontend ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ +4. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚ Nginx для обновлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ + +#### Полная локальная сборка +```bash +./deploy-local-all.sh +``` + +ВыполняСт: +1. Установку frontend зависимостСй ΠΈ запуск Π² dev Ρ€Π΅ΠΆΠΈΠΌΠ΅ +2. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ PostgreSQL с Π½ΠΎΠ²ΠΎΠΉ сборкой +3. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ backend с Π½ΠΎΠ²ΠΎΠΉ сборкой + +### ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ + +#### ПолноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ +```bash +./deploy-all.sh +``` + +ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: + +**Production ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:** +1. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· `.env.sh` +2. Checkout ΠΈ pull основной Π²Π΅Ρ‚ΠΊΠΈ +3. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΈ пСрСсборка frontend +4. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Docker volumes +5. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ запуск всСх сСрвисов: + - frontend (основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) + - nginx (прокси-сСрвСр) + - postgresql (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…) + - backend (API сСрвСр) + - certbot (SSL сСртификаты) + +**Stage ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:** +1. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· `.env-stage.sh` +2. Checkout Π²Π΅Ρ‚ΠΊΠΈ develop +3. Аналогичный процСсс для stage вСрсий сСрвисов + +#### ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы развСртывания + +**Frontend:** +```bash +./deploy-frontend.sh # Production +./deploy-frontend-stage.sh # Staging +``` + +**Backend:** +```bash +./deploy-backend.sh +``` + +**Stage ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:** +```bash +./deploy-stage.sh +``` + +### ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ + +#### ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния + +- `.env.example` β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ +- `.env-prod.example` β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ production ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ +- `.env-stage.example` β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ staging ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ +- `.env-frontend.example` β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ frontend ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ + +Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: +```bash +EMAIL=your-email@domain.com # Для SSL сСртификатов +HOST=your-domain.com # Основной Π΄ΠΎΠΌΠ΅Π½ +``` + +#### Docker Compose Ρ„Π°ΠΉΠ»Ρ‹ + +- `docker-compose-dev.yaml` β€” локальная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° +- `docker-compose-prod.yaml` β€” производствСнноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ +- `docker-compose-stage.yaml` β€” staging ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ +- `docker-compose-infra.yaml` β€” инфраструктурныС сСрвисы +- `docker-compose-gpt.yaml` β€” спСцифичныС GPT сСрвисы + +### ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ прилоТСния + +БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…: + +#### ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: +- **GPTutor** β€” основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для обучСния +- **Stable Art** β€” гСнСрация ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ +- **AiHumor** β€” гСнСрация ΡŽΠΌΠΎΡ€ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° + +#### ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: +- **VK Mini Apps** β€” интСграция с Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ +- **Telegram Bot Platform** β€” Telegram Π±ΠΎΡ‚Ρ‹ + +#### Production Π΄ΠΎΠΌΠ΅Π½Ρ‹: +- `gptutor.prod.${HOST}` β€” основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GPTutor +- `deep-gpt.prod.${HOST}` β€” Telegram вСрсия GPTutor +- `stable-art.prod.${HOST}` β€” Stable Art ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ +- `ai-humor.prod.${HOST}` β€” AiHumor ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ + +### ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ + +- ВсС сСрвисы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… с автоматичСским пСрСзапуском +- Nginx Π»ΠΎΠ³ΠΈ доступны Ρ‡Π΅Ρ€Π΅Π· Docker logs +- Backend Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Spring Boot +- АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ SSL сСртификатов Ρ‡Π΅Ρ€Π΅Π· certbot + +### Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… + +- PostgreSQL 13.1-alpine для production +- ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ инстансы для prod ΠΈ stage ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ +- Persistent volumes для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… +- АвтоматичСскиС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Spring Boot + +### Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ + +- АвтоматичСскиС SSL сСртификаты Ρ‡Π΅Ρ€Π΅Π· Let's Encrypt +- Traefik reverse proxy с автоматичСским TLS +- Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ сСрвисов Ρ‡Π΅Ρ€Π΅Π· Docker networks +- ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния для sensitive Π΄Π°Π½Π½Ρ‹Ρ… + +## Быстрый старт + +1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ +2. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ `.env.example` Π² `.env` ΠΈ настройтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ +3. Для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: `./local-run.sh` +4. Для production: `./deploy-all.sh` + +## ВрСбования ΠΊ систСмС + +- Docker ΠΈ Docker Compose +- Node.js 12+ для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ frontend +- Java 17 для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ backend +- 2GB+ RAM для всСх сСрвисов +- SSL Π΄ΠΎΠΌΠ΅Π½ для production развСртывания \ No newline at end of file