Initial commit: AI-фоторедактор (Codex-редактирование, ComfyUI upscale, HEIC, история версий, Docker, Gitea Actions)

This commit is contained in:
2026-08-25 21:28:55 +07:00
commit fc74c8f543
13 changed files with 4628 additions and 0 deletions

70
README.md Normal file
View File

@@ -0,0 +1,70 @@
# Кадр — локальный AI-фоторедактор
Веб-приложение редактирует фотографии по текстовому промпту (через локальный
Codex CLI) и увеличивает разрешение через домашний сервер ComfyUI.
Поддерживаются фотографии JPEG, PNG, WebP и HEIC/HEIF. Файлы HEIC/HEIF
преобразуются на сервере в JPEG с помощью `heic-convert` до передачи в ComfyUI
или Codex.
## Как это работает
- **История версий**: каждая загрузка и каждый результат (редактирование или
апскейл) сохраняется в папке `history/` как отдельная версия. Можно вернуться
к любой версии кликом по ней в ленте «История версий» и продолжить правки
именно с неё — например, отредактировать фото, а затем увеличить разрешение
уже отредактированного варианта. История переживает перезапуск сервера и
обновление страницы; хранится последние 50 версий.
- **Редактирование**: сервер передаёт выбранную версию и промпт агенту Codex
CLI (`codex exec`). Агент редактирует изображение и сохраняет результат.
Обработка обычно занимает 13 минуты.
- **Увеличение разрешения**: 4× upscale через ComfyUI моделью
`RealESRGAN_x4plus.safetensors` — применяется к выбранной (в том числе
отредактированной) версии.
## Требования
- Node.js 20 или новее
- Локальный Codex CLI (`codex`) с выполненным входом в аккаунт OpenAI
- Доступ к ComfyUI: `http://192.168.31.240:8188`
- Checkpoint: `sdxl_turbo.safetensors`
- Upscale-модель: `RealESRGAN_x4plus.safetensors`
- Установленные зависимости проекта, включая `heic-convert` (ставится
командой `npm install`)
## Запуск
```powershell
npm install
npm start
```
## Docker
Образ собирается на базе `node:22-bookworm-slim` (Debian, glibc) — Codex CLI
распространяется как бинарник под glibc и не работает на Alpine/musl.
```powershell
# сборка и запуск
docker compose up -d --build
# или вручную:
docker build -t kadr-photo-editor .
docker run -d --name kadr-photo-editor -p 3000:3000 ^
-v "$env:USERPROFILE\.codex:/root/.codex" ^
-v "${PWD}\history:/app/history" ^
-e COMFY_URL=http://192.168.31.240:8188 ^
kadr-photo-editor
```
Что важно знать:
- **Авторизация Codex**: контейнер монтирует `~/.codex` хоста в `/root/.codex`
(auth + config + навыки). Альтернатива — переменная окружения
`OPENAI_API_KEY`.
- **История версий**: каталог `history/` смонтирован томом, версии переживают
пересоздание контейнера.
- **ComfyUI**: задаётся через `COMFY_URL` (по умолчанию
`http://192.168.31.240:8188`); из контейнера адрес доступен как исходящий
адрес локальной сети.
- **Порт**: по умолчанию 3000, меняется через `PORT`.