add readme

This commit is contained in:
2025-09-14 17:31:14 +00:00
parent cd32129535
commit 4b75ca00af

130
README.md Normal file
View File

@@ -0,0 +1,130 @@
# 🤖 ChatBot Platform (FastAPI + React + Docker)
Проект представляет собой веб‑приложение для общения с LLM‑моделью.
Архитектура объединяет **FastAPI (backend)**, **React (frontend SPA)**,
**Nginx (reverse proxy)** и **Certbot (SSL)** для развёртывания под HTTPS.
---
## 📂 Структура проекта
```
├── Dockerfile # Сборка backend
├── docker-compose.yml # Контейнеризация сервисов
├── requirements.txt # Python зависимости
├── README.md
├── app/ # Backend (FastAPI)
│   ├── api.py # Роуты (REST + Bot API)
│   ├── crud.py # CRUD операции
│   ├── database.py # Подключение к БД (SQLAlchemy Async)
│   ├── main.py # Точка входа FastAPI
│   ├── models.py # SQLAlchemy модели
│   ├── openrouter_client.py # LLM клиент к OpenRouter API
│   └── schemas.py # Pydantic схемы
├── bot.py # Telegram‑бот (взаимодействие с backend)
├── frontend/ # Frontend (React + Vite)
│   ├── index.html
│   ├── src/
│   │   ├── App.jsx
│   │   ├── api.js # Работа с backend API
│   │   ├── components/ # UI компоненты (ChatList, ChatWindow и т.п.)
│   │   ├── pages/ # Страницы (Home, ChatPage, UserProfile)
│   │   └── styles/ # CSS стили
│   ├── package.json
│   └── vite.config.js
├── nginx/
│   ├── nginx.conf # Конфигурация reverse proxy
│   └── certbot/ # Webroot для Let's Encrypt challenge
# Скрипты управления
├── getcert.sh # Получение SSL сертификата (init cert)
├── install.sh # Установка и первый запуск
├── run.sh # Запуск сервиса
└── stop.sh # Остановка сервисов
```
---
## ⚙️ Основные возможности
- 👤 Ведение профиля пользователя
- 💬 Поддержка чат‑диалогов ( CRUD для чатов и сообщений )
- 🧠 Генерация ответов через **OpenRouter API** (LLM)
- 🌐 Веб‑интерфейс (React SPA) для работы с чатами
- 🤖 Поддержка **Telegram‑бота** (через `bot.py`)
- 🔐 HTTPS через Let's Encrypt + Certbot
---
## 🛠 Установка и запуск
### 1. Клонировать проект
```bash
git clone http://185.160.137.213:3030/drholy/llm-chatbot
cd llm-chatbot
```
### 2. Установить зависимости (при локальной разработке backend)
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 3. Запустить сервисы в Docker
```bash
docker compose up -d --build
```
### 4. Получить первый SSL сертификат
```bash
./getcert.sh
```
---
## 📡 API endpoints (backend)
- `GET /history/{telegram_id}` — История переписки пользователя
- `POST /chat/{telegram_id}` — Отправка сообщения, получение ответа от LLM
- `GET /profile` — Профиль пользователя
- `GET /chats` — Список чатов
- `GET /chats/{chat_id}/messages` — Сообщения конкретного чата
- `POST /chats/{chat_id}/messages` — Добавить сообщение в чат
---
## 🧑‍💻 Режим разработки
### Backend (FastAPI)
```bash
uvicorn app.main:app --reload
```
По умолчанию поднимается на `http://localhost:8000`.
### Frontend (React)
```bash
cd frontend
npm install
npm run dev
```
Фронт доступен на `http://localhost:5173`.
---
## 🔐 SSL и Certbot
- `getcert.sh` — скрипт для получения первого сертификата.
- Certbot внутри контейнера автоматически продлевает сертификаты.
- Пути к действующим ключам:
- `/etc/letsencrypt/live/<your-domain>/fullchain.pem`
- `/etc/letsencrypt/live/<your-domain>/privkey.pem`
---
## 📜 Лицензия
MIT © 2025 DrHoly