68 lines
2.8 KiB
Markdown
68 lines
2.8 KiB
Markdown
# 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
|
||
|
||
```bash
|
||
cd "/Users/alex/Dev_projects_v2/ai driven app process/v2/web_app"
|
||
docker compose up --build
|
||
```
|
||
|
||
Открыть: `http://localhost:8080`
|
||
|
||
## Локальный запуск без Docker
|
||
|
||
```bash
|
||
cd "/Users/alex/Dev_projects_v2/ai driven app process/v2/web_app"
|
||
python3 -m http.server 8080
|
||
```
|
||
|
||
Открыть: `http://localhost:8080`
|
||
|
||
## Пример changeset
|
||
|
||
```json
|
||
{
|
||
"changeset": [
|
||
{
|
||
"op": "create",
|
||
"path": "notes/new_doc.md",
|
||
"proposed_content": "# New doc\\nhello",
|
||
"reason": "demo"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
В чат отправить:
|
||
|
||
```text
|
||
/changeset {"changeset":[{"op":"create","path":"notes/new_doc.md","proposed_content":"# New doc\\nhello","reason":"demo"}]}
|
||
```
|