Initial commit: VoIdeaAI - voice-first AI idea assistant

This commit is contained in:
2026-05-13 12:51:42 +03:00
commit 688d043dad
421 changed files with 47915 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
# Runbook: Запуск проекта
---
## Первый запуск
```bash
# 1. Клонировать репозиторий
git clone <repo> && cd <repo>
# 2. Настроить окружение
cp .env.example .env
# Редактировать .env: JWT_SECRET_KEY, DATABASE_URL
# 3. Установить зависимости
pip install -r requirements.txt
# 4. Запустить
uvicorn app.main:app --reload --host 0.0.0.0 --port 8020
```
## Проверка
```bash
curl http://localhost:8020/health
# → {"status": "healthy"}
curl http://localhost:8020/docs
# → Swagger UI
```
## Остановка
```bash
Ctrl+C # или kill $(pgrep -f uvicorn)
```
+36
View File
@@ -0,0 +1,36 @@
# Runbook: Резервное копирование
---
## SQLite
```bash
# Ручной бэкап
cp app.db app.db.backup.$(date +%Y%m%d)
# Автоматический (cron)
0 3 * * * cp /path/to/app.db /path/to/backups/app.db.$(date +\%Y\%m\%d)
```
## PostgreSQL
```bash
# Ручной бэкап
pg_dump -U voidea -d voidea > backup.$(date +%Y%m%d).sql
# Восстановление
psql -U voidea -d voidea < backup.sql
# Автоматический (cron)
0 3 * * * pg_dump -U voidea -d voidea | gzip > /backups/db.$(date +\%Y\%m\%d).sql.gz
```
## Что бэкапить
- Базу данных (ежедневно)
- .env (секреты, отдельно, в Vault/1Password)
- User uploaded files (если есть)
## Хранение
- Последние 7 дней: локально
- Последние 30 дней: S3/облако
- Старше 30 дней: удалять
+53
View File
@@ -0,0 +1,53 @@
# Runbook: Инциденты
---
## Сервис недоступен
```bash
# 1. Проверить что процесс жив
ps aux | grep uvicorn
# 2. Проверить логи
journalctl -u voidea -n 50 --no-pager
# 3. Перезапустить
systemctl restart voidea
# 4. Проверить
curl http://localhost:8020/health
# 5. Если не помогло → rollback
git checkout <previous-stable-tag>
systemctl restart voidea
```
## База данных недоступна
```bash
# 1. Проверить PostgreSQL
systemctl status postgresql
# 2. Проверить логи
journalctl -u postgresql -n 50
# 3. Перезапустить
systemctl restart postgresql
# 4. Если повреждена → восстановить из backup
# psql -U voidea -d voidea < backup.sql
```
## Высокая загрузка CPU
```bash
# 1. Найти процесс
top -o %CPU
# 2. Найти endpoint
tail -n 100 /var/log/voidea/access.log
# 3. Временно отключить (если endpoint не критичен)
# 4. Разбираться после восстановления
```
+28
View File
@@ -0,0 +1,28 @@
# Runbook: Масштабирование
---
## Когда масштабироваться
| Метрика | Действие |
|---------|----------|
| CPU > 80% постоянно | Добавить ядер/воркеров |
| RAM > 80% | Увеличить RAM |
| DB > 10M записей | Индексы → шардинг |
| Response time p95 > 1s | Кэширование → реплики БД |
## Как масштабировать
### Vertical (проще)
```bash
# Увеличить ресурсы VPS
# Затем перезапустить
systemctl restart voidea
```
### Horizontal (сложнее)
```bash
# 1. Поставить load balancer (Nginx)
# 2. Запустить несколько инстансов
# 3. Настроить shared session/кэш (Redis)
```
+41
View File
@@ -0,0 +1,41 @@
# Runbook: Обновление
---
## Обновление с нулевым даунтаймом
```bash
# 1. Задеплоить новую версию на второй порт (8021)
# 2. Проверить health нового инстанса
curl http://localhost:8021/health
# 3. Переключить Nginx на новый порт
# 4. Остановить старый инстанс
```
## Обновление зависимостей
```bash
# 1. Обновить requirements.txt
pip install --upgrade -r requirements.txt
# 2. Проверить
ruff check .
pytest
# 3. Закоммитить
git add requirements.txt && git commit -m "chore: update dependencies"
```
## Откат
```bash
# 1. Откатить код
git revert HEAD
# 2. Откатить БД (если была миграция)
alembic downgrade -1
# 3. Перезапустить
systemctl restart voidea
```