papayu/AUDIT.md
Yuriy e76236dc55 Initial commit: papa-yu v2.4.4
- Schema version (x_schema_version, schema_hash) в prompt/trace
- Кеш read/search/logs/env (ContextCache) в plan-цикле
- Контекст-диета: MAX_FILES=8, MAX_FILE_CHARS=20k, MAX_TOTAL_CHARS=120k
- Plan→Apply двухфазность, NO_CHANGES, path sanitization
- Protected paths, content validation, EOL normalization
- Trace (PAPAYU_TRACE), redaction (PAPAYU_TRACE_RAW)
- Preview diff, undo/redo, transactional apply

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 11:33:19 +03:00

7.7 KiB
Raw Blame History

Полный аудит приложения PAPA YU

Дата: 2026-01-28
Цель: проверка компонентов, связей UI ↔ backend, исправление отображения блока выбора пути к папкам и заключение.


1. Структура проекта

Путь Назначение
src/ React (Vite) — UI
src/pages/Tasks.tsx Страница «Задачи» — анализ проекта, выбор папок, preview/apply/undo/redo
src/pages/Dashboard.tsx Страница «Панель управления»
src/App.tsx Роутинг, Layout (header + main)
src-tauri/src/ Rust (Tauri) — команды, tx, types

2. Проверенные компоненты

2.1 UI

  • App.tsx — маршруты / (Tasks), /control-panel (Dashboard). Layout: header с навигацией, main с overflow: visible (исправлено).
  • Tasks.tsx — блок «Путь к папке проекта»:
    • Расположен первым под заголовком «Анализ проекта».
    • Секция с data-section="path-selection" и классом tasks-sources.
    • Две кнопки: «Выбрать папку» (основная синяя), «+ Добавить ещё папку».
    • Список выбранных папок или текст «Папки не выбраны. Нажмите кнопку «Выбрать папку» выше.».
    • Ниже: поле ввода пути и кнопка «Отправить».
  • index.css — правило для .tasks-sources[data-section="path-selection"]: display: block !important, visibility: visible !important, чтобы блок не скрывался.

2.2 Связи UI → Backend (invoke)

Действие в UI Команда Tauri Файл Rust
Загрузка списка папок при монтировании get_folder_links folder_links.rs
Сохранение списка папок set_folder_links (links: { paths }) folder_links.rs
Анализ + preview + apply (пакет) run_batch_cmd (payload: paths, confirm_apply, auto_check, selected_actions) run_batch.rs
Состояние undo/redo get_undo_redo_state_cmd undo_last.rs, tx/store.rs
Откат undo_last undo_last.rs
Повтор redo_last redo_last.rs
Генерация плана (v2.4) generate_actions generate_actions.rs

Выбор папки через диалог: open({ directory: true }) из @tauri-apps/plugin-dialog — плагин зарегистрирован в lib.rs (tauri_plugin_dialog::init()).


3. Backend (Rust)

3.1 Зарегистрированные команды (lib.rs)

  • analyze_project_cmd, preview_actions_cmd, apply_actions_cmd, run_batch_cmd
  • undo_last, undo_available, redo_last, get_undo_redo_state_cmd
  • generate_actions
  • get_folder_links, set_folder_links

3.2 Модули

  • commands/ — analyze_project, apply_actions, preview_actions, run_batch, undo_last, redo_last, generate_actions, folder_links, auto_check.
  • tx/ — limits (preflight), store (undo/redo stacks), mod (snapshot_before, rollback_tx, apply_actions_to_disk, collect_rel_paths, write_manifest, read_manifest, etc.).
  • types — ApplyPayload, ApplyResult, TxManifest, Action, ActionKind, AnalyzeReport, BatchPayload, BatchEvent, etc.
  • FolderLinks { paths: Vec<String> } — сериализуется в app_data_dir/folder_links.json.
  • load_folder_links, save_folder_links — используются в get_folder_links / set_folder_links.

Связь с UI: при загрузке Tasks вызывается get_folder_links и при необходимости обновляется folderLinks; при добавлении/удалении папки вызывается set_folder_links. Формат { links: { paths } } соответствует типу FolderLinks.


4. Внесённые исправления

  1. Блок выбора пути к папке (Tasks.tsx)

    • Секция «Путь к папке проекта» вынесена в начало страницы (сразу под заголовком).
    • Заголовок секции: «Путь к папке проекта», подпись с указанием нажать кнопку или ввести путь.
    • Кнопки «Выбрать папку» и «+ Добавить ещё папку» оформлены заметно (размер, контраст, тень у основной).
    • Добавлены className="tasks-sources" и data-section="path-selection" для стилей и отладки.
    • Секция с рамкой, фоном и minHeight: 140px, чтобы блок всегда занимал место и был виден.
    • В строке ввода оставлены только поле пути и «Отправить» (дублирующая кнопка «Выбрать папку» убрана, чтобы не путать с блоком выше).
  2. Layout (App.tsx)

    • Для main заданы overflow: visible и minHeight: 0, чтобы контент не обрезался.
  3. Глобальные стили (index.css)

    • Добавлено правило для .tasks-sources[data-section="path-selection"]: блок принудительно видим.

5. Рекомендации после обновления кода

  • Перезапустить приложение: cd papa-yu/src-tauri && cargo tauri dev.
  • В браузере/WebView сделать жёсткое обновление (Ctrl+Shift+R / Cmd+Shift+R), чтобы подтянуть новый UI без кэша.
  • Если используется только фронт (Vite): перезапустить npm run dev и обновить страницу.

После этого в начале страницы «Задачи» должен отображаться блок «Путь к папке проекта» с кнопками «Выбрать папку» и «+ Добавить ещё папку» и списком выбранных папок.


6. Заключение

  • Компоненты: App, Tasks, Dashboard, Layout и точки входа (main.tsx, index.html) проверены; маршруты и вложенность корректны.
  • Связи UI ↔ backend: вызовы get_folder_links, set_folder_links, run_batch_cmd, get_undo_redo_state_cmd, undo_last, redo_last соответствуют зарегистрированным командам и типам (FolderLinks, BatchPayload, ApplyPayload и т.д.).
  • Исправления: блок выбора пути к папкам сделан первым и визуально выделен; добавлены гарантии видимости через разметку и CSS; дублирование кнопки убрано.
  • Ошибки: явных ошибок в компонентах и связях не выявлено. Если на экране по-прежнему не видно кнопок и блока, наиболее вероятны кэш сборки или WebView — выполнить перезапуск и жёсткое обновление по п. 5.

Аудит выполнен. Состояние: исправления внесены, рекомендации по обновлению даны.