# 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-... PORT=8080 ``` ### 2. Запуск через Docker ```bash docker compose up --build ``` - Backend API: http://localhost:8080 - Web UI: http://localhost:3000 - Healthcheck: http://localhost:8080/api/v1/health ### 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`.