@AiHuskyAssist
Тестовый проект
Это демонстрационный README для показа новой функции отображения проектов в таск-менеджере.
Основные возможности
- 📁 Автоматическое обнаружение
readme.mdв корне каталога - 📖 Отображение содержимого README справа от списка файлов
- 🎨 Красивое форматирование Markdown
- 🔄 Автоматическое скрытие при отсутствии README
Преимущества
Эта функция позволяет:
- Выделить проекты среди обычных папок
- Быстро просмотреть описание проекта
- Не покидая основной интерфейс
Технические детали
const checkForReadme = async (dirPath: string) => {
const readmePath = `${dirPath}\\readme.md`;
// Проверка и загрузка содержимого
};
Форматирование
Поддерживаются все стандартные элементы Markdown:
- Жирный текст
- Курсив
Код- Ссылки
Блоки цитат тоже работают отлично!
Заключение
Используйте файл readme.md в корне ваших проектов для создания красивых презентаций! 🚀
ARCHITECTURE.md
Архитектура AiHuskyAssist
Обзор
AiHuskyAssist — это десктопное приложение на Electron с React интерфейсом, которое предоставляет продвинутое управление задачами с интеграцией AI для анализа.
Технологический стек
Frontend
- React 18 — UI библиотека
- TypeScript — типизация
- Vite — сборщик и dev server
- @dnd-kit — drag & drop для файлов
- CSS Modules — стилизация
Backend (Electron Main Process)
- Electron — десктопный фреймворк
- Node.js — серверная логика
- SQLite (sql.js) — локальная база данных (JavaScript реализация, без нативных модулей)
- Bothub.chat API — AI анализ задач (совместим с OpenAI API)
- pdf-parse — извлечение текста из PDF
- pdf-poppler — надежная конвертация PDF страниц в изображения (основной метод)
- pdfjs-dist — резервный метод конвертации PDF в изображения (fallback)
- canvas — рендеринг PDF страниц в изображения (для pdfjs-dist)
- mammoth — извлечение текста из DOCX файлов
- Poppler для Windows — внешняя утилита для конвертации PDF (требуется для pdf-poppler)
Структура проекта
├── src/
│ ├── main/ # Electron main process
│ │ ├── main.ts # Точка входа Electron
│ │ ├── preload.ts # Preload скрипт для IPC
│ │ ├── database.ts # Работа с SQLite
│ │ ├── ai-service.ts # Интеграция с OpenAI
│ │ └── file-service.ts # Управление файлами
│ ├── renderer/ # React приложение
│ │ ├── components/ # React компоненты
│ │ ├── App.tsx # Главный компонент
│ │ └── main.tsx # Точка входа React
│ └── shared/ # Общие типы (если нужно)
├── database/ # SQLite база данных (создается автоматически)
├── uploads/ # Загруженные файлы (создается автоматически)
└── dist/ # Собранные файлы
Архитектура данных
База данных (SQLite)
Расположение: База данных хранится локально в директории пользователя:
- Windows:
%APPDATA%\AiHuskyAssist\tasks.db - Путь определяется через
app.getPath('userData')в Electron
Технология: SQLite через sql.js — JavaScript реализация SQLite, работающая полностью в браузере/Electron без нативных модулей. База данных сохраняется как файл .db на диске.
Таблица tasks
id— уникальный идентификаторtitle— название задачиdescription— описаниеstatus— статус (todo, in-progress, done)priority— приоритет (low, medium, high)created_at,updated_at— временные меткиposition— позиция для сортировки
Таблица task_files
id— уникальный идентификатор файлаtask_id— связь с задачейfile_name— имя файлаfile_path— путь к файлуfile_type— MIME типfile_size— размер файлаuploaded_at— время загрузки
Таблица task_analysis
id— уникальный идентификатор анализаtask_id— связь с задачейsummary— краткое резюмеadvice— советы по выполнениюkey_points— ключевые моменты (JSON)ai_model— модель AIanalyzed_at— время анализа
Таблица reminders
id— уникальный идентификатор напоминанияtitle— заголовок напоминанияdatetime— дата и время события (ISO формат)repeat_type— тип повтора (hour, day, month, year, custom, null)repeat_interval— интервал для custom типа (количество дней)created_at— время созданияupdated_at— время последнего обновления
Таблица activity_log
id— уникальный идентификаторaction_type— тип действия (создание/удаление задач, папок)entity_type— тип сущности (task, folder)entity_id— ID сущностиdetails— дополнительные данные (JSON)created_at— дата и время действия
Таблица folder_metadata
id— уникальный идентификаторpath— полный путь к папкеtags— теги для группировки (JSON array)size— размер папкиcreated_at— дата создания в системеupdated_at— дата обновления
Поток данных
Создание задачи
- Пользователь заполняет форму в
TaskModal - Файлы сохраняются во временную директорию через IPC
- Задача создается в базе данных
- Файлы копируются в директорию задачи
- Информация о файлах сохраняется в БД
- Запускается AI анализ (асинхронно)
- Результаты анализа сохраняются в БД
AI Анализ
- Собирается контекст задачи (название, описание)
- Обрабатываются все вложенные файлы:
- Текстовые файлы читаются как текст
- Изображения конвертируются в base64
- PDF файлы:
- Сначала извлекается текст через
pdf-parse - Все страницы конвертируются в изображения через
pdf-poppler(основной метод) илиpdfjs-dist(fallback) - Каждая страница отправляется в vision API как отдельное изображение
- Сначала извлекается текст через
- DOCX файлы: извлекается текст с помощью
mammoth
- Определяется модель AI:
- Если есть изображения или PDF без текста — используется vision модель
- Иначе — используется стандартная текстовая модель
- Формируется запрос к Bothub.chat API (совместим с OpenAI API)
- Ответ парсится и структурируется
- Сохраняется в таблицу
task_analysis
Поиск
- Поиск по названию и описанию задачи
- Поиск по AI выводам (summary, advice)
- Результаты сортируются по дате обновления
IPC Communication
Tasks API
tasks:getAll— получить все задачиtasks:create— создать задачуtasks:update— обновить задачуtasks:delete— удалить задачуtasks:search— поиск задач
Files API
files:upload— загрузить файлfiles:getByTask— получить файлы задачиfiles:delete— удалить файлfiles:saveTemp— сохранить файл во временную директорию
AI API
ai:analyze— проанализировать задачуai:getConfig— получить настройки AIai:updateConfig— обновить настройки AIfiles:getAll— получить все файлы из всех задач (для Wiki)
Reminders API
reminders:getAll— получить все напоминанияreminders:create— создать напоминаниеreminders:update— обновить напоминаниеreminders:delete— удалить напоминание
Activity API
activity:log— залогировать действиеactivity:getToday— получить активность за сегодня
Files/Folders API
folders:getAll— получить все отслеживаемые папкиfolders:add— добавить папку для отслеживанияfolders:remove— удалить папку из отслеживанияfolders:updateTags— обновить теги папки
Безопасность
- Context Isolation — включен для безопасности
- Node Integration — отключен в renderer process
- Preload Script — безопасный мост между процессами
- Файлы хранятся локально в userData директории
Расширяемость
Добавление новых AI провайдеров
Создайте новый класс, реализующий интерфейс AIService:
- Метод
analyzeTask(task)должен возвращатьTaskAnalysis - Методы
loadConfig()иsaveConfig()для управления настройками
Добавление новых типов файлов
В FileService.getFileType() добавьте новые MIME типы.
В AIService.processFile() добавьте обработку новых форматов:
- Для текстовых файлов — извлечение текста
- Для изображений — конвертация в base64
- Для специальных форматов (PDF, DOCX) — использование соответствующих библиотек
Обработка PDF:
- Основной метод:
pdf-poppler(требует установленный Poppler) - Резервный метод:
pdfjs-dist(работает без внешних зависимостей, но может иметь ограничения в Electron) - Автоматический fallback между методами при ошибках
Кастомизация UI
Все компоненты находятся в src/renderer/components/ и могут быть легко изменены.
Производительность
- SQLite индексы для быстрого поиска
- Ленивая загрузка AI анализа
- Кэширование результатов анализа
- Оптимизированные SQL запросы
Компоненты
Основные компоненты
- App.tsx — главный компонент с навигацией (Tasks, Wiki, Files, Logs)
- TasksList.tsx — список всех задач с карточками и боковой панелью напоминаний
- TaskCard.tsx — карточка задачи с отображением AI резюме
- TaskModal.tsx — модальное окно для создания/редактирования задач
- ReminderModal.tsx — модальное окно для создания/редактирования напоминаний
- ReminderCard.tsx — карточка напоминания с визуальными индикаторами и вычислением следующего повтора
- RemindersList.tsx — список напоминаний с сортировкой и скроллбаром
- WikiView.tsx — структурированный просмотр всех задач с Rich Text Editor
- FilesView.tsx — отслеживание локальных папок с группировкой по тегам
- LogsView.tsx — история выполненных задач со статистикой
- AISummaryModal.tsx — модальное окно с AI саммари (просроченные задачи, события, активность, AI советы)
- NotificationBell.tsx — кнопка-колокольчик для вызова AI Summary
- SettingsModal.tsx — настройки AI параметров и Import/Export
- FileUpload.tsx — компонент для drag & drop загрузки файлов
Сервисы
- Database — работа с SQLite через sql.js
- AIService — интеграция с Bothub.chat API, обработка файлов, выбор моделей
- FileService — управление файлами, сохранение во временные директории
Будущие улучшения
- Поддержка локальных AI моделей (Ollama, LM Studio)
- Уведомления
- Синхронизация с облаком
- Подзадачи и зависимости
- Теги и категории
- Поддержка Excel файлов (.xlsx)
- Предпросмотр файлов в интерфейсе
BUILD.md
Сборка исполняемого файла
Обзор
Приложение можно собрать в один исполняемый файл для Windows с помощью electron-builder. Это создаст либо установщик (NSIS), либо portable версию (один .exe файл).
Важно: После компиляции программа запускается как обычное Windows приложение — просто двойной клик по .exe файлу, без необходимости открывать командную строку или терминал!
Предварительные требования
- Установлен Node.js 18+
- Установлены все зависимости:
npm install - Poppler должен быть в директории
poppler/(для работы с PDF)
Сборка
Portable версия (один .exe файл)
npm run dist:portable
Это создаст файл release/AiHuskyAssist-1.0.0-portable.exe — один исполняемый файл, который можно запускать без установки.
Установщик (NSIS)
npm run dist:win
Это создаст установщик release/AiHuskyAssist Setup 1.0.0.exe, который:
- Устанавливает приложение в Program Files
- Создает ярлыки на рабочем столе и в меню Пуск
- Добавляет запись в "Установка и удаление программ"
Универсальная сборка
npm run dist
Соберет все форматы для текущей платформы.
Результаты сборки
После сборки файлы будут находиться в директории release/:
release/
├── AiHuskyAssist-1.0.0-portable.exe # Portable версия
├── AiHuskyAssist Setup 1.0.0.exe # Установщик
└── win-unpacked/ # Распакованные файлы (для отладки)
Что включается в сборку
- Все исходные файлы из
dist/(скомпилированный код) - Node.js зависимости из
node_modules/ - Electron runtime (Chromium + Node.js)
- SQL.js WASM файл (
sql-wasm.wasm) - Poppler утилиты (если находятся в
poppler/) - Все ресурсы приложения
Размер сборки
Ожидаемый размер:
- Portable версия: ~150-200 МБ (включает Electron runtime)
- Установщик: ~150-200 МБ (сжатый)
Это нормально для Electron приложений, так как они включают полноценный браузер (Chromium).
Особенности
Portable версия
- ✅ Не требует установки
- ✅ Можно запускать с USB-накопителя
- ✅ Не оставляет следов в реестре
- ⚠️ Первый запуск может быть медленнее (распаковка)
Установщик
- ✅ Профессиональный вид
- ✅ Автоматическое создание ярлыков
- ✅ Интеграция с системой
- ✅ Легкое удаление через "Установка и удаление программ"
Настройка иконки
Для добавления иконки приложения:
- Создайте файл
assets/icon.ico(256×256 пикселей) - Или измените путь в
package.json→build.win.icon
Устранение проблем
Ошибка "electron-builder not found"
npm install --save-dev electron-builder
Ошибка при сборке Poppler
Убедитесь, что Poppler находится в poppler/ директории:
poppler/
└── poppler-XX.XX.X/
└── Library/
└── bin/
├── pdftoppm.exe
└── ...
Большой размер файла
Это нормально для Electron приложений. Для уменьшения размера можно:
- Использовать
electron-builderс настройками сжатия - Исключить неиспользуемые зависимости
- Использовать
asarархивацию (включена по умолчанию)
Распространение
Portable версия
Просто скопируйте .exe файл на любой компьютер с Windows и запустите двойным кликом.
Особенности:
- ✅ Запускается как обычная Windows программа (двойной клик)
- ✅ Не требует командной строки или терминала
- ✅ Не требует установки
- ✅ Можно запускать с USB-накопителя
- ✅ Все данные сохраняются в
%APPDATA%\AiHuskyAssist\ - ✅ Не оставляет следов в реестре Windows
Установщик
Распространяйте .exe установщик. Пользователи запускают его двойным кликом и следуют инструкциям установки.
После установки:
- ✅ Запускается из меню Пуск или ярлыка на рабочем столе
- ✅ Не требует командной строки
- ✅ Работает как обычная установленная программа Windows
- ✅ Можно удалить через "Установка и удаление программ"
Запуск без командной строки
Да, программа полностью работает без командной строки!
После компиляции в исполняемый файл:
- Portable версия: Просто двойной клик по
.exeфайлу - Установщик: Двойной клик для установки, затем запуск из меню Пуск или ярлыка
Никаких команд, терминалов или консолей не требуется. Программа работает как любое другое Windows приложение (например, Notepad, Calculator и т.д.).
Подпись кода (опционально)
Для подписи исполняемого файла (чтобы Windows не показывала предупреждение):
- Получите сертификат подписи кода
- Добавьте в
package.json:
"win": {
"certificateFile": "path/to/certificate.pfx",
"certificatePassword": "password"
}
Автоматическая сборка
Для CI/CD можно использовать:
npm run build && npm run dist:portable
Это создаст готовый к распространению файл.
CHANGELOG.md
Changelog
Все значимые изменения в проекте AiHuskyAssist будут документироваться в этом файле.
Формат основан на Keep a Changelog,
и этот проект придерживается Semantic Versioning.
[1.2.0] — 2025-12-26
Добавлено
Новые экраны и компоненты
-
AI Summary Bell (Колокольчик уведомлений) — умный помощник с автоматическим отображением
- Автоматически показывается при первом запуске каждый день
- Отображает просроченные и предстоящие задачи
- Показывает напоминания на ближайшее время
- Статистика активности за текущий день
- Персонализированный AI совет на основе данных пользователя
- Компоненты:
AISummaryModal.tsx,NotificationBell.tsx
-
Вкладка "Файлы" — система отслеживания локальных папок
- Добавление и отслеживание файловых папок на локальном ПК
- Группировка папок по пользовательским тегам
- Отображение метаданных: локальный адрес, размер, дата создания
- Редактирование тегов прямо в интерфейсе
- Поиск внутри папок (отображается при открытии папки)
- Компонент:
FilesView.tsx
-
Система активностей — автоматическое логирование действий пользователя
- Отслеживание создания/удаления задач
- Логирование операций с папками (добавление, удаление, изменение тегов)
- Отображение активности в AI Summary
- Хранение истории в базе данных (
activity_log)
Работа с данными
- Import/Export функционал — резервное копирование и восстановление данных
- Экспорт всех задач в JSON формат
- Экспорт напоминаний в JSON
- Экспорт Wiki данных
- Импорт данных из JSON файлов
- Интерфейс в модальном окне настроек
Улучшения Wiki
- Rich Text Editor — продвинутое форматирование текста в Wiki
- Форматирование: жирный, курсив, код, цитаты
- Упорядоченные и неупорядоченные списки
- Чекбоксы для списков задач
- Блоки кода с автоматической нумерацией строк
- Кнопки форматирования в панели инструментов
Исправлено
- Исправлена нумерация строк в блоках кода Wiki — теперь корректно инкрементируется при нажатии Enter
- Исправлено логирование активностей для операций с папками (создание, удаление, редактирование тегов)
- Улучшена производительность FilesView при работе с большим количеством папок
Изменено
- Обновлен дизайн верхней панели с добавлением кнопки AI Summary Bell
- Улучшена навигация — добавлена вкладка "Файлы" между Wiki и Логами
[1.1.0] — 2024-12-XX
Добавлено
- Темная тема с синими акцентами — полностью обновленный дизайн интерфейса
- Темный фон (
#0f172a) для комфортной работы - Синие акценты (
#3b82f6) для интерактивных элементов - Градиентный заголовок с синими оттенками
- Плавные переходы и тени для глубины
- Темный фон (
- Отображение всех файлов в Wiki — новая секция на вкладке Wiki
- Список всех загруженных файлов из всех задач
- Кликабельные ссылки на задачи, содержащие файлы
- Информация о размере и дате загрузки файлов
- Иконки для разных типов файлов (изображения, PDF, документы)
- Автоматическое удаление файлов — при удалении задачи все её файлы удаляются с диска
- Документация по хранению файлов — новый файл
FILE_STORAGE.mdс подробным описанием
Исправлено
- Исправлено удаление файлов при удалении задачи — теперь файлы удаляются физически с диска
- Улучшена навигация в Wiki — добавлена возможность перехода к задаче по клику на файл
[1.0.0] — 2024-12-XX
Добавлено
Основной функционал
- Список задач — переход от Kanban доски к списку карточек с отображением всех статусов
- Экран Wiki — структурированный просмотр всех задач и их AI-выводов для быстрого доступа к информации
- Экран Логи — история выполненных задач со статистикой и возможностью окончательного удаления
- Статистика — отображение количества задач по дням, неделям и месяцам
Работа с файлами
- Поддержка Microsoft Word (.docx) — автоматическое извлечение текста из DOCX файлов с помощью библиотеки
mammoth - Надежное распознавание PDF — автоматическая конвертация всех страниц PDF в изображения для анализа через vision API
- Основной метод:
pdf-poppler(использует Poppler для Windows) — надежная конвертация без проблем с Electron - Резервный метод:
pdfjs-dist(fallback) — используется если poppler недоступен
- Основной метод:
- Поддержка многостраничных PDF — каждая страница PDF конвертируется в отдельное изображение для полного анализа документа
- Отображение существующих вложений — при редактировании задачи показываются все текущие файлы с возможностью удаления
- Улучшенная обработка PDF — добавлена очистка текста, извлечение метаинформации (заголовок, автор, тема), конвертация страниц в изображения с высоким разрешением
- Автоматическое определение пути к Poppler — приложение автоматически находит установленный Poppler в нескольких возможных местах
AI анализ
- Настройки AI через интерфейс — полная настройка параметров AI без редактирования конфигурационных файлов:
- API ключ и базовый URL
- Модель для текстового анализа
- Модель для распознавания изображений (vision API)
- Температура
- Максимальное количество токенов
- Максимальная длина текста для анализа
- Длина резюме для отображения в карточках
- Повторный AI анализ — кнопка для запуска анализа заново при редактировании задачи
- Автоматический анализ после изменений — анализ запускается автоматически при удалении файлов
- Мультимодальный анализ — автоматический выбор между текстовой и vision моделью в зависимости от типа файлов
Удобство использования
- Ярлык на рабочем столе — скрипт для создания ярлыка для быстрого запуска приложения
- Индикаторы статуса задач — визуальные метки для задач (К выполнению, В работе, Выполнено)
- Улучшенный UI — обновленный дизайн карточек задач с отображением AI резюме
Изменено
Технические изменения
- Миграция базы данных — переход с
better-sqlite3наsql.jsдля избежания проблем с компиляцией нативных модулей - Миграция AI провайдера — переход с OpenAI API на Bothub.chat API (совместим с OpenAI API)
- Удаление Kanban — убрана Kanban доска в пользу плоского списка карточек
- Улучшена обработка ошибок — добавлены try-catch блоки для всех IPC handlers
UI/UX улучшения
- Отображение AI анализа в карточках — резюме AI анализа теперь показывается прямо на карточке задачи (с настраиваемой обрезкой)
- Улучшенная навигация — добавлены кнопки для переключения между экранами (Задачи, Wiki, Логи)
- Улучшенная обработка drag & drop — исправлены проблемы с неактивными текстовыми полями
Исправлено
- Исправлена проблема с неактивными текстовыми полями при drag & drop
- Исправлена проблема с компиляцией нативных модулей (
better-sqlite3) - Исправлена проблема с пустым окном Electron при запуске
- Исправлена проблема с путями к WASM файлам
sql.jsв production сборке - Исправлена проблема с дублированием задач при создании
- Улучшена обработка ошибок при анализе файлов
- Решена проблема с конвертацией PDF в изображения — переход на
pdf-popplerдля надежной работы в Electron- Добавлены polyfill для DOMMatrix, DOMPoint, Path2D, ImageData (для pdfjs-dist fallback)
- Добавлен polyfill для process.getBuiltinModule
- Реализован автоматический fallback между pdf-poppler и pdfjs-dist
- Автоматическое определение пути к Poppler
Технические детали
Новые зависимости
sql.js— JavaScript реализация SQLite (заменаbetter-sqlite3)mammoth— библиотека для извлечения текста из DOCX файловpdf-poppler— надежная конвертация PDF страниц в изображения (основной метод)pdfjs-dist— библиотека для работы с PDF (резервный метод конвертации страниц в изображения)canvas— рендеринг PDF страниц в изображения (для pdfjs-dist)dommatrix— polyfill для DOMMatrix и DOMPoint (требуется для pdfjs-dist)
Внешние зависимости
- Poppler для Windows — требуется для конвертации PDF в изображения
- Скачивается автоматически при первом запуске или устанавливается вручную
- Расположение:
poppler/poppler-25.12.0/Library/bin/ - Ссылка: https://github.com/oschwartz10612/poppler-windows/releases/
uuid— генерация уникальных идентификаторов
Удаленные зависимости
better-sqlite3— заменен наsql.jsreact-beautiful-dnd— больше не используется (удалена Kanban доска)
Обновленные компоненты
TaskModal.tsx— добавлено отображение существующих файлов и кнопка повторного анализаTaskCard.tsx— добавлено отображение AI резюме и статусов задачApp.tsx— добавлена навигация между экранами (Tasks, Wiki, Logs)SettingsModal.tsx— полная настройка параметров AIAIService.ts— улучшенная обработка файлов (PDF, DOCX, изображения)Database.ts— миграция наsql.jsс асинхронной инициализацией
[0.1.0] — 2024-XX-XX
Добавлено
- Базовая структура проекта
- Kanban доска с карточками задач
- Drag & Drop загрузка файлов
- AI анализ задач через OpenAI API
- База данных SQLite для хранения задач
- Поиск по задачам
- Управление приоритетами задач
FILE_STORAGE.md
Хранение и управление файлами
Обзор
Все загруженные файлы сохраняются локально на компьютере пользователя. В приложении есть возможность просмотреть все файлы на вкладке Wiki, где они отображаются со ссылками на задачи, которые их содержат.
Расположение файлов
Все загруженные файлы сохраняются локально на компьютере пользователя в специальной директории приложения.
Путь к файлам
Windows:
%APPDATA%\AiHuskyAssist\uploads\{taskId}\{fileId}{extension}
Пример:
C:\Users\Username\AppData\Roaming\AiHuskyAssist\uploads\task_1234567890_abc123\550e8400-e29b-41d4-a716-446655440000.pdf
Структура директорий
uploads/
├── task_1234567890_abc123/ # Директория задачи
│ ├── 550e8400-...-0000.pdf # Файл с UUID в имени
│ ├── 660e8400-...-1111.docx
│ └── 770e8400-...-2222.png
├── task_1234567891_def456/
│ └── 880e8400-...-3333.txt
└── ...
Процесс сохранения файлов
-
Загрузка файла:
- Пользователь перетаскивает файл в задачу или выбирает через диалог
- Файл временно сохраняется в системную временную директорию
-
Создание задачи:
- При создании задачи создается уникальный ID задачи (например,
task_1234567890_abc123) - Создается директория для задачи:
uploads/{taskId}/
- При создании задачи создается уникальный ID задачи (например,
-
Сохранение файла:
- Генерируется уникальный UUID для файла
- Файл копируется из временной директории в
uploads/{taskId}/{fileId}{extension} - Информация о файле сохраняется в базу данных SQLite:
id— UUID файлаtask_id— ID задачиfile_name— оригинальное имя файлаfile_path— полный путь к файлуfile_type— MIME типfile_size— размер в байтахuploaded_at— дата загрузки
Удаление файлов
При удалении отдельного файла
- Пользователь удаляет файл из задачи через интерфейс
- Вызывается
FileService.deleteFile(fileId) - Система находит файл по всем задачам и удаляет его физически
- Запись о файле удаляется из базы данных
При удалении задачи
- Пользователь удаляет задачу
- Вызывается
FileService.deleteTaskFiles(taskId) - Все файлы задачи удаляются физически:
- Удаляются все файлы в директории
uploads/{taskId}/ - Удаляется сама директория задачи
- Удаляются все файлы в директории
- Задача и связанные записи удаляются из базы данных:
- Задача из таблицы
tasks(CASCADE удаляет связанные записи) - Файлы из таблицы
task_files(автоматически через FOREIGN KEY CASCADE) - AI анализ из таблицы
task_analysis(автоматически через FOREIGN KEY CASCADE)
- Задача из таблицы
Важные моменты
- Физическое удаление: При удалении задачи все её файлы удаляются с диска без возможности восстановления
- CASCADE в БД: SQLite автоматически удаляет связанные записи благодаря
ON DELETE CASCADEв FOREIGN KEY - Безопасность: Файлы хранятся локально и не передаются на внешние серверы (кроме отправки в AI API для анализа)
- Очистка: При удалении задачи директория с файлами удаляется полностью, освобождая место на диске
Размер хранилища
- Файлы хранятся локально и могут занимать значительное место на диске
- Рекомендуется периодически проверять размер директории
uploads/ - При удалении задач освобождается место автоматически
Резервное копирование
Для сохранения важных файлов рекомендуется:
- Регулярно делать резервные копии директории
uploads/ - Экспортировать важные задачи перед удалением
- Хранить критически важные файлы отдельно от приложения
Технические детали
Класс FileService
saveFile(sourcePath, taskId)— сохраняет файл в директорию задачиgetFilesByTask(taskId)— получает список файлов задачиdeleteFile(fileId)— удаляет конкретный файлdeleteTaskFiles(taskId)— удаляет все файлы задачи
База данных
Таблица task_files:
CREATE TABLE task_files (
id TEXT PRIMARY KEY,
task_id TEXT NOT NULL,
file_name TEXT NOT NULL,
file_path TEXT NOT NULL,
file_type TEXT,
file_size INTEGER,
uploaded_at TEXT DEFAULT (datetime('now')),
FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
);
Связь ON DELETE CASCADE гарантирует, что при удалении задачи все связанные файлы автоматически удаляются из базы данных.
Класс Database
getAllFiles()— получает все файлы из всех задач с информацией о задачах (для отображения в Wiki)
Просмотр всех файлов
На вкладке Wiki доступна секция "📁 Все загруженные файлы", которая отображает:
- Все файлы из всех задач в едином списке
- Название файла с иконкой типа файла
- Размер файла
- Дату загрузки
- Кликабельную ссылку на задачу, содержащую файл
При клике на ссылку задачи происходит переход на вкладку "Задачи" с открытием модального окна выбранной задачи.
MIGRATION.md
Перенос приложения AiHuskyAssist на другой ПК
Обзор
При переносе приложения на другой компьютер необходимо скопировать:
- Базу данных — все задачи, напоминания и AI анализы
- Загруженные файлы — все вложения к задачам
- Настройки — конфигурация AI и пользовательские предпочтения
Расположение данных
Windows
Все данные находятся в директории:
%APPDATA%\AiHuskyAssist\
Полный путь обычно:
C:\Users\{ИмяПользователя}\AppData\Roaming\AiHuskyAssist\
Структура директории
AiHuskyAssist/
├── tasks.db # База данных SQLite (все задачи, напоминания, анализы)
├── config.json # Настройки AI (если есть)
├── uploads/ # Загруженные файлы
│ ├── {taskId1}/
│ │ ├── file1.pdf
│ │ └── file2.jpg
│ ├── {taskId2}/
│ │ └── document.docx
│ └── ...
└── ...
Инструкция по переносу
Вариант 1: Полный перенос (рекомендуется)
Шаг 1: На старом компьютере
-
Закройте приложение AiHuskyAssist (если оно запущено)
-
Найдите директорию с данными:
- Нажмите
Win + R - Введите:
%APPDATA%\AiHuskyAssist - Нажмите Enter
- Или перейдите вручную:
C:\Users\{ВашеИмя}\AppData\Roaming\AiHuskyAssist
- Нажмите
-
Скопируйте всю директорию:
- Выделите всю папку
AiHuskyAssist - Скопируйте (Ctrl+C)
- Вставьте на внешний носитель (USB, облако и т.д.)
- Выделите всю папку
Шаг 2: На новом компьютере
-
Установите приложение AiHuskyAssist (если еще не установлено)
-
Найдите директорию для данных:
- Нажмите
Win + R - Введите:
%APPDATA%\AiHuskyAssist - Нажмите Enter
- Нажмите
-
Если директория уже существует:
- ВАЖНО: Сделайте резервную копию существующих данных (если они есть)
- Удалите или переименуйте существующую папку
AiHuskyAssist
-
Вставьте скопированную директорию:
- Вставьте папку
AiHuskyAssistв%APPDATA%\Roaming\ - Убедитесь, что путь:
%APPDATA%\AiHuskyAssist\
- Вставьте папку
-
Запустите приложение — все данные должны быть на месте!
Вариант 2: Выборочный перенос
Если нужно перенести только часть данных:
Перенос только базы данных (задачи и напоминания, без файлов)
- Скопируйте только файл
tasks.dbиз старой директории - Вставьте в новую директорию
%APPDATA%\AiHuskyAssist\ - Примечание: Файлы задач не будут доступны, но все задачи и напоминания сохранятся
Перенос только файлов (без задач)
- Скопируйте только папку
uploads\из старой директории - Вставьте в новую директорию
%APPDATA%\AiHuskyAssist\ - Примечание: Файлы будут на месте, но связи с задачами могут быть потеряны
Перенос только настроек
- Скопируйте файл
config.json(если есть) - Вставьте в новую директорию
%APPDATA%\AiHuskyAssist\
Проверка после переноса
После переноса проверьте:
- ✅ Задачи — все задачи отображаются в списке
- ✅ Напоминания — все напоминания на месте
- ✅ Файлы — файлы открываются при редактировании задач
- ✅ AI анализы — резюме и советы отображаются в карточках
- ✅ Настройки — настройки AI сохранены (если переносили config.json)
Резервное копирование
Рекомендуется регулярно делать резервные копии:
-
Автоматическое резервное копирование:
- Используйте облачные сервисы (OneDrive, Google Drive, Dropbox)
- Настройте синхронизацию папки
%APPDATA%\AiHuskyAssist\
-
Ручное резервное копирование:
- Периодически копируйте всю папку
AiHuskyAssistна внешний носитель - Рекомендуется делать копию перед обновлением приложения
- Периодически копируйте всю папку
Скрипт для автоматического резервного копирования (PowerShell)
Создайте файл backup.ps1:
$source = "$env:APPDATA\AiHuskyAssist"
$backup = "D:\Backups\AiHuskyAssist_$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss')"
if (Test-Path $source) {
Copy-Item -Path $source -Destination $backup -Recurse
Write-Host "Резервная копия создана: $backup"
} else {
Write-Host "Директория не найдена: $source"
}
Запускайте периодически для создания резервных копий.
Перенос между пользователями на одном ПК
Если нужно перенести данные между разными пользователями Windows на одном компьютере:
- Скопируйте
C:\Users\{СтарыйПользователь}\AppData\Roaming\AiHuskyAssist\ - Вставьте в
C:\Users\{НовыйПользователь}\AppData\Roaming\AiHuskyAssist\
Устранение проблем
Проблема: Приложение не видит данные после переноса
Решение:
- Убедитесь, что путь правильный:
%APPDATA%\AiHuskyAssist\ - Проверьте права доступа к файлам
- Убедитесь, что файл
tasks.dbне поврежден - Попробуйте запустить приложение от имени администратора
Проблема: Файлы не открываются
Решение:
- Проверьте, что папка
uploads\скопирована полностью - Убедитесь, что структура папок сохранена:
uploads\{taskId}\{files} - Проверьте права доступа к файлам
Проблема: Настройки не сохранились
Решение:
- Убедитесь, что файл
config.jsonскопирован - Если файла нет — настройки можно восстановить вручную через интерфейс приложения
Важные замечания
⚠️ Всегда делайте резервную копию перед переносом!
⚠️ Закрывайте приложение перед копированием данных — иначе база данных может быть заблокирована
⚠️ Не редактируйте файл tasks.db вручную — это может привести к повреждению базы данных
⚠️ Сохраняйте структуру директорий — не перемещайте файлы между папками вручную
Альтернативные методы
Использование символических ссылок (для продвинутых пользователей)
Можно создать символическую ссылку на другую директорию (например, на облачный диск):
# Удалите существующую директорию (после резервного копирования!)
Remove-Item "$env:APPDATA\AiHuskyAssist" -Recurse
# Создайте символическую ссылку
New-Item -ItemType SymbolicLink -Path "$env:APPDATA\AiHuskyAssist" -Target "D:\Cloud\AiHuskyAssist"
Теперь все данные будут автоматически синхронизироваться с облаком.
SETUP.md
Инструкция по установке и запуску
Для конечных пользователей
Если у вас есть готовый исполняемый файл (.exe):
Portable версия
- Запустите
AiHuskyAssist-1.0.0-portable.exeдвойным кликом - Программа откроется как обычное Windows приложение
- Не требуется командная строка или терминал!
Установщик
- Запустите
AiHuskyAssist Setup 1.0.0.exeдвойным кликом - Следуйте инструкциям установки
- После установки запустите из меню Пуск или ярлыка на рабочем столе
- Не требуется командная строка или терминал!
Важно: После компиляции программа работает как обычное Windows приложение — просто двойной клик, без необходимости открывать командную строку!
Для разработчиков
Предварительные требования
- Node.js версии 18 или выше
- npm или yarn
- Poppler для Windows (для конвертации PDF в изображения)
- Скачайте последнюю версию с GitHub releases
- Распакуйте в директорию
poppler/в корне проекта - Приложение автоматически найдет poppler в стандартных местах
- Bothub.chat API ключ (опционально, для AI функций)
Установка
- Клонируйте репозиторий или перейдите в директорию проекта:
cd @AiHuskyAssist
- Установите зависимости:
npm install
Установка Poppler (для PDF конвертации)
Poppler требуется для надежной конвертации PDF страниц в изображения. Приложение автоматически найдет poppler, если он установлен в одном из следующих мест:
-
Автоматическая установка (рекомендуется):
- Poppler уже должен быть скачан и распакован в
poppler/директории проекта - Приложение автоматически найдет его при запуске
- Poppler уже должен быть скачан и распакован в
-
Ручная установка:
- Скачайте последнюю версию с GitHub releases
- Распакуйте архив в директорию
poppler/в корне проекта - Структура должна быть:
poppler/poppler-XX.XX.X/Library/bin/
-
Глобальная установка:
- Установите poppler глобально и добавьте в PATH
- Приложение попытается использовать системный poppler
Примечание: Если poppler не найден, приложение будет использовать резервный метод (pdfjs-dist), который может иметь ограничения в Electron.
Настройка AI (опционально)
Настройка AI выполняется через интерфейс приложения:
- Запустите приложение
- Нажмите кнопку "Настройки" в правом верхнем углу
- Заполните параметры:
- Bothub.chat API Key — ваш API ключ от Bothub.chat
- Bothub.chat API Base URL —
https://bothub.chat/api/v2/openai/v1 - Имя модели AI — например,
gemini-2.0-flash-001 - Модель для распознавания изображений — например,
gpt-4.1 - Температура — от 0 до 1 (рекомендуется 0.7)
- Макс. токенов — максимальное количество токенов в ответе (рекомендуется 1200)
- Длина текста для анализа — максимальная длина текста из файлов для анализа (рекомендуется 5000)
- Длина резюме — количество символов для обрезки AI резюме в карточках (рекомендуется 500)
Примечание: Если API ключ не указан, приложение будет работать, но AI анализ будет отключен.
Запуск в режиме разработки
npm run dev
Это запустит:
- Vite dev server на
http://localhost:5173 - Electron приложение, которое подключится к dev server
Сборка для production
npm run build
Собранные файлы будут в директории dist/.
Запуск собранного приложения
npm start
Структура данных
База данных SQLite создается автоматически в:
- Windows:
%APPDATA%/ai-husky-assist/tasks.db - macOS:
~/Library/Application Support/ai-husky-assist/tasks.db - Linux:
~/.config/ai-husky-assist/tasks.db
Загруженные файлы сохраняются в:
%APPDATA%/ai-husky-assist/uploads/(Windows)
Использование
Создание задачи
- Нажмите кнопку "+ Новая задача"
- Заполните название и описание
- Перетащите файлы в область загрузки или выберите их (поддерживаются: изображения, PDF, DOCX, текстовые файлы)
- Нажмите "Сохранить"
- AI автоматически проанализирует задачу и все вложенные файлы (если настроен API ключ)
Управление задачами
- Клик по карточке — открывает модальное окно для редактирования
- Изменение статуса — выберите статус в модальном окне (К выполнению, В работе, Выполнено)
- Поиск — используйте поисковую строку для поиска по задачам и AI выводам
- Управление файлами — при редактировании задачи вы можете просмотреть и удалить существующие вложения
Дополнительные экраны
- Wiki — структурированный просмотр всех задач и их AI-выводов
- Логи — история выполненных задач со статистикой и возможностью окончательного удаления
AI Анализ
После создания задачи с описанием или файлами:
- AI анализирует содержимое задачи и все вложенные файлы
- Автоматически выбирает подходящую модель (текстовую или vision для изображений/PDF)
- Генерирует краткое резюме
- Предлагает советы по выполнению
- Выделяет ключевые моменты
Повторный анализ:
- При редактировании задачи нажмите кнопку "🔄 Повторить AI анализ"
- Анализ автоматически запустится после удаления файлов из задачи
Решение проблем
Ошибка "AI API key not found"
- Откройте настройки приложения (кнопка "Настройки")
- Убедитесь, что Bothub.chat API Key указан правильно
- Проверьте, что API Base URL указан корректно
- Приложение будет работать без AI функций
Ошибки при установке зависимостей
- Убедитесь, что Node.js версии 18+
- Попробуйте удалить
node_modulesиpackage-lock.json, затемnpm install
Проблемы с базой данных
- База данных создается автоматически при первом запуске
- Если возникли проблемы, удалите файл базы данных и перезапустите приложение
Разработка
Структура проекта
src/main/— Electron main processsrc/renderer/— React приложениеsrc/shared/— общие типы и утилиты
Добавление новых функций
См. ARCHITECTURE.md для подробной информации об архитектуре.
Лицензия
MIT
SUMMARY.md
Краткое резюме системы AiHuskyAssist
Язык и технологии
Языки программирования
- TypeScript — основной язык разработки
- JavaScript — для некоторых зависимостей
Технологический стек
Frontend
- React 18 — UI библиотека для создания интерфейса
- TypeScript — типизация для надежности кода
- Vite — современный сборщик и dev server
- CSS Modules — модульная стилизация
- @dnd-kit — библиотека для drag & drop файлов
Desktop Framework
- Electron 28 — десктопный фреймворк для создания нативных приложений Windows
Backend (Electron Main Process)
- Node.js — серверная логика и работа с файловой системой
- SQLite (sql.js) — база данных (JavaScript реализация, без нативных модулей)
- Bothub.chat API — AI анализ задач (совместим с OpenAI API)
- pdf-parse, pdf-poppler, pdfjs-dist — обработка PDF документов
- mammoth — обработка Microsoft Word документов (.docx)
- canvas — рендеринг изображений
Хранение данных
База данных
Технология: SQLite через sql.js — JavaScript реализация SQLite, работающая полностью в браузере/Electron без нативных модулей.
Расположение:
- Windows:
%APPDATA%\AiHuskyAssist\tasks.db - Полный путь обычно:
C:\Users\{ИмяПользователя}\AppData\Roaming\AiHuskyAssist\tasks.db - Путь определяется автоматически через
app.getPath('userData')в Electron
Структура базы данных:
- Таблица
tasks— задачи с полями: id, title, description, status, priority, execution_time, has_reminder и др. - Таблица
task_files— информация о файлах, прикрепленных к задачам - Таблица
task_analysis— результаты AI анализа задач - Таблица
reminders— напоминания с поддержкой повторяющихся событий
Особенности:
- База данных сохраняется как единый файл
.dbна диске - Автоматическое создание при первом запуске
- Миграции схемы БД выполняются автоматически при обновлении
Файлы
Расположение: %APPDATA%\AiHuskyAssist\uploads\{taskId}\{files}
Структура:
- Каждая задача имеет свою директорию с уникальным ID
- Файлы сохраняются с оригинальными именами
- Поддерживаются: изображения, PDF, DOCX, текстовые файлы
Настройки
Расположение: %APPDATA%\AiHuskyAssist\ (JSON файлы конфигурации)
Содержимое:
- Настройки AI (API ключи, модели, параметры)
- Пользовательские предпочтения
Особенности архитектуры
- Локальное хранение: Все данные хранятся локально на компьютере пользователя
- Офлайн работа: Приложение работает без интернета (кроме AI анализа)
- Портативность: База данных и файлы находятся в пользовательской директории
- Автоматическое создание: Структура директорий создается автоматически при первом запуске
- Без нативных модулей: Использование sql.js позволяет работать без компиляции нативных модулей
Основной функционал
- Управление задачами с AI анализом
- AI Summary Bell — автоматическое саммари при первом запуске дня
- Просроченные и предстоящие задачи
- Напоминания на ближайшее время
- Статистика активности за день
- Персонализированный AI совет
- Система напоминаний с поддержкой повторяющихся событий
- Загрузка и анализ файлов (PDF, DOCX, изображения)
- База знаний (Wiki) со всеми задачами и Rich Text Editor
- Файловая система — отслеживание локальных папок с группировкой по тегам
- Система активностей — логирование действий пользователя
- История выполненных задач (Логи)
- Умный поиск по задачам и AI выводам
- Import/Export данных — резервное копирование задач, напоминаний, wiki в JSON
webassist/README.md
webassist
Папка для web-версии и утилит синхронизации/обмена данными.
Быстрый старт (Web UI)
- Dev (web):
npm run dev:web
- Build (web):
npm run build:web
Результат сборки: dist/web/.
Независимость Windows и Web
- Windows (Electron) продолжает работать со своей локальной БД
tasks.dbв%APPDATA%. - Web использует отдельное локальное хранилище браузера (свой “профиль данных”).
- Для “копирования базы (изменений)” используется журнал операций (export/import changes) или полный export/import.
MySQL + PHP синхронизация (надёжно, ручной/авто)
В webassist/php/ лежат скрипты:
config.sample.php→ скопировать вconfig.phpи заполнить доступ к MySQL + токенdb_init.php— создаёт таблицы (запускать из CLI)sync_push.php— принимает изменения (push)sync_pull.php— отдаёт изменения (pull)
Минимально:
- Загрузите папку
webassist/php/на хостинг (например в/webassist/api/). - Создайте
config.phpрядом с_lib.php. - Запустите
db_init.phpиз CLI на сервере (если CLI недоступен — запустите локально на сервере, либо временно через браузер и потом удалите доступ).