Files
Home_assistant/README.md
T
2026-06-09 10:19:37 +03:00

109 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Home AI Assistant
Домашний ИИ-ассистент с REST API, веб-интерфейсом и помидоро-таймером. LLM — OpenRouter (по умолчанию DeepSeek).
## Возможности (MVP)
- Чат с потоковыми ответами (SSE)
- Управление помидоро из чата через tool calling
- REST API для внешних клиентов (Telegram-бот, мобильное приложение)
- Веб-морда: вкладки «Чат» и «Помидоро»
## Быстрый старт
### 1. Настройка окружения
```bash
cp .env.example .env
```
Заполните в `.env`:
```env
OPENROUTER_API_KEY=sk-or-v1-...
BACKEND_PORT=8080
FRONTEND_PORT=3080
```
Если порт занят (например, 3000 уже используется Gitea), смените `FRONTEND_PORT` на свободный.
### 2. Запуск через Docker
```bash
docker compose up --build
```
- Backend API: http://localhost:${BACKEND_PORT:-8080}
- Web UI: http://localhost:${FRONTEND_PORT:-3080}
- Healthcheck: http://localhost:8080/api/v1/health
Порты в `.env`:
| Переменная | По умолчанию | Назначение |
|------------|--------------|------------|
| `BACKEND_PORT` | 8080 | API с хоста |
| `FRONTEND_PORT` | 3080 | Веб-морда с хоста |
| `VITE_DEV_PORT` | 5173 | Frontend при `npm run dev` |
| `TAIGA_PORT` | 9000 | Taiga (фаза 2) |
| `GITEA_PORT` | 3000 | Gitea HTTP (фаза 2) |
| `GITEA_SSH_PORT` | 222 | Gitea SSH (фаза 2) |
| `QDRANT_PORT` | 6333 | Qdrant HTTP (фаза 3) |
### 3. Локальная разработка
**Backend:**
```bash
cd backend
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8080
```
**Frontend:**
```bash
cd frontend
npm install
npm run dev
```
Vite dev-server: http://localhost:5173 (проксирует `/api` на backend).
## REST API
| Method | Path | Описание |
|--------|------|----------|
| GET | `/api/v1/health` | Healthcheck |
| POST | `/api/v1/chat/sessions` | Создать чат-сессию |
| GET | `/api/v1/chat/sessions` | Список сессий |
| GET | `/api/v1/chat/sessions/{id}` | История сообщений |
| POST | `/api/v1/chat/sessions/{id}/messages` | Отправить сообщение (SSE) |
| DELETE | `/api/v1/chat/sessions/{id}` | Удалить сессию |
| GET | `/api/v1/pomodoro/status` | Статус таймера |
| POST | `/api/v1/pomodoro/start` | Старт `{duration_min, task_note}` |
| POST | `/api/v1/pomodoro/pause` | Пауза |
| POST | `/api/v1/pomodoro/resume` | Продолжить |
| POST | `/api/v1/pomodoro/stop` | Стоп `{result, completed}` |
| GET | `/api/v1/pomodoro/history` | История сессий |
## Структура проекта
```
backend/ FastAPI, OpenRouter, SQLite, помидоро
frontend/ React + Vite, чат и таймер
data/ SQLite БД (создаётся автоматически)
```
## Следующие фазы
- Интеграция Taiga + Gitea (project-agent внутри проекта)
- RAG с Qdrant для документов
- Проактивные чаты по расписанию
- Фитнес-трекер
## Модель
По умолчанию: `deepseek/deepseek-chat` через OpenRouter. Альтернатива для болтовни: `google/gemini-2.0-flash`.