feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile

- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
Сергей Антропов
2026-02-15 22:59:02 +03:00
parent 23e1a6037b
commit 1fbf9185a2
232 changed files with 38075 additions and 5 deletions

View File

@@ -0,0 +1,153 @@
# Быстрый старт веб-интерфейса DevOpsLab
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
## ✅ Что уже сделано
1. ✅ Создана git ветка `feature/web-interface`
2. ✅ Создана базовая структура проекта
3. ✅ Настроен FastAPI с базовыми шаблонами
4. ✅ Реализован MakeExecutor для выполнения команд
5. ✅ Создан Dashboard с базовой статистикой
6. ✅ Настроены HTMX шаблоны
## 🚀 Запуск
### 1. Установка зависимостей
```bash
cd app
pip install -r requirements.txt
```
### 2. Настройка окружения
```bash
# Скопируйте пример конфигурации
cp env.example .env
# Отредактируйте .env (особенно PROJECT_ROOT)
# PROJECT_ROOT должен указывать на корень проекта DevOpsLab
```
### 3. Запуск приложения
```bash
# Из директории app/
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# Или через Python
python main.py
```
### 4. Открыть в браузере
- Веб-интерфейс: http://localhost:8000
- API документация: http://localhost:8000/api/docs
## 📁 Структура проекта
```
app/
├── api/v1/endpoints/ # API endpoints
│ └── stats.py # ✅ Статистика (реализовано)
├── core/ # Ядро
│ ├── config.py # ✅ Конфигурация
│ └── make_executor.py # ✅ Выполнение Makefile команд
├── templates/ # HTMX шаблоны
│ ├── base.html # ✅ Базовый шаблон
│ ├── components/ # ✅ Компоненты (navbar, sidebar)
│ └── pages/ # Страницы
│ └── dashboard.html # ✅ Dashboard
├── static/ # Статические файлы
│ ├── css/main.css # ✅ Стили
│ └── js/app.js # ✅ JavaScript
└── main.py # ✅ Точка входа FastAPI
```
## 📋 Следующие шаги
### Приоритет 1: Базовый функционал
- [ ] Реализовать список ролей (`/roles`)
- [ ] Реализовать создание роли (`/roles/create`)
- [ ] Реализовать тестирование роли (`/roles/{name}/test`)
### Приоритет 2: Preset'ы и тестирование
- [ ] Управление preset'ами (`/presets`)
- [ ] WebSocket для live логов тестирования
- [ ] История тестов (`/tests`)
### Приоритет 3: Деплой и импорт/экспорт
- [ ] Деплой на живые серверы (`/roles/{name}/deploy`)
- [ ] Экспорт ролей (`/roles/{name}/export`)
- [ ] Импорт ролей (`/roles/import`)
### Приоритет 4: Дополнительно
- [ ] База данных для истории
- [ ] Celery для фоновых задач
- [ ] Аутентификация
## 🔧 Разработка
### Добавление нового endpoint
1. Создайте файл в `app/api/v1/endpoints/`
2. Создайте роутер:
```python
from fastapi import APIRouter
router = APIRouter()
@router.get("/example")
async def example():
return {"message": "Hello"}
```
3. Подключите в `app/api/v1/router.py`:
```python
from app.api.v1.endpoints import example
api_router.include_router(example.router, prefix="/example")
```
### Добавление новой страницы
1. Создайте шаблон в `app/templates/pages/`
2. Добавьте роут в `app/main.py`:
```python
@app.get("/example", response_class=HTMLResponse)
async def example_page(request: Request):
return templates.TemplateResponse("pages/example.html", {"request": request})
```
## 📚 Документация
- `docs/WEB_INTERFACE_PROPOSAL.md` - Полное предложение
- `docs/WEB_INTERFACE_DETAILS.md` - Детали работы
- `docs/WEB_INTERFACE_DEPLOY_IMPORT_EXPORT.md` - Деплой, импорт, экспорт
- `docs/WEB_INTERFACE_QUICKSTART.md` - Быстрый старт
## 🐛 Troubleshooting
### Ошибка: ModuleNotFoundError
Убедитесь, что вы установили зависимости:
```bash
pip install -r requirements.txt
```
### Ошибка: PROJECT_ROOT не найден
Проверьте `.env` файл и убедитесь, что `PROJECT_ROOT` указывает на правильный путь.
### Ошибка: Порт уже занят
Измените порт в `.env` или убейте процесс:
```bash
lsof -ti:8000 | xargs kill
```
## 📝 Примечания
- Проект находится в ветке `feature/web-interface`
- Все изменения должны быть в директории `app/`
- Не изменяйте существующий код проекта (roles/, molecule/, etc.)