Files
web_app/README.md
2026-02-23 09:08:15 +03:00

2.8 KiB
Raw Blame History

Web MVP: AI Project Editor (Frontend-only)

Локальный frontend MVP без backend API.

Что реализовано

  • Выбор папки проекта:
    • showDirectoryPicker в secure context (http://localhost, https://).
    • fallback через input[webkitdirectory] в file:// (read-only режим).
  • Папка .git скрывается и исключается из загрузки/подсчета.
  • Ограничения загрузки директории:
    • >1000 файлов: предупреждение, можно продолжить.
    • >10000 файлов: предупреждение и запрет загрузки.
    • общий размер >1MB: предупреждение, можно продолжить.
    • общий размер >10MB: предупреждение и запрет загрузки.
  • Рекурсивное дерево файлов и read-only просмотр содержимого.
  • Центральная панель: только вкладки открытых файлов и просмотр содержимого.
  • Правая панель: чат + ревью изменений (diff, accept/reject/apply).
  • Ресайз 3 колонок с дефолтными ширинами 15% / 65% / 20%.
  • Темная тема по умолчанию (темно-синий акцент).
  • Mock индексация: snapshot/changes статусы в UI.
  • Mock чат-агент:
    • /demo-update <path> генерирует update для файла.
    • /changeset { ... } принимает raw JSON и строит review.
  • Валидация changeset по обязательным полям (create/update/delete).
  • Статусы review: pending, accepted_partial, accepted_full, rejected, conflict, applied.
  • Apply accepted с повторной hash-проверкой до записи и подтверждением удаления.
  • Без git-операций и без автоприменения правок.

Запуск через Docker Compose

cd "/Users/alex/Dev_projects_v2/ai driven app process/v2/web_app"
docker compose up --build

Открыть: http://localhost:8080

Локальный запуск без Docker

cd "/Users/alex/Dev_projects_v2/ai driven app process/v2/web_app"
python3 -m http.server 8080

Открыть: http://localhost:8080

Пример changeset

{
  "changeset": [
    {
      "op": "create",
      "path": "notes/new_doc.md",
      "proposed_content": "# New doc\\nhello",
      "reason": "demo"
    }
  ]
}

В чат отправить:

/changeset {"changeset":[{"op":"create","path":"notes/new_doc.md","proposed_content":"# New doc\\nhello","reason":"demo"}]}