Команды бота

Редактирование файла

Создать автоматизацию

Создать правило автоотправки

@AiHuskyAssist

Тестовый проект

Это демонстрационный README для показа новой функции отображения проектов в таск-менеджере.

Основные возможности

  • 📁 Автоматическое обнаружение readme.md в корне каталога
  • 📖 Отображение содержимого README справа от списка файлов
  • 🎨 Красивое форматирование Markdown
  • 🔄 Автоматическое скрытие при отсутствии README

Преимущества

Эта функция позволяет:

  1. Выделить проекты среди обычных папок
  2. Быстро просмотреть описание проекта
  3. Не покидая основной интерфейс

Технические детали

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 — модель AI
  • analyzed_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 — дата обновления

Поток данных

Создание задачи

  1. Пользователь заполняет форму в TaskModal
  2. Файлы сохраняются во временную директорию через IPC
  3. Задача создается в базе данных
  4. Файлы копируются в директорию задачи
  5. Информация о файлах сохраняется в БД
  6. Запускается AI анализ (асинхронно)
  7. Результаты анализа сохраняются в БД

AI Анализ

  1. Собирается контекст задачи (название, описание)
  2. Обрабатываются все вложенные файлы:
    • Текстовые файлы читаются как текст
    • Изображения конвертируются в base64
    • PDF файлы:
      • Сначала извлекается текст через pdf-parse
      • Все страницы конвертируются в изображения через pdf-poppler (основной метод) или pdfjs-dist (fallback)
      • Каждая страница отправляется в vision API как отдельное изображение
    • DOCX файлы: извлекается текст с помощью mammoth
  3. Определяется модель AI:
    • Если есть изображения или PDF без текста — используется vision модель
    • Иначе — используется стандартная текстовая модель
  4. Формируется запрос к Bothub.chat API (совместим с OpenAI API)
  5. Ответ парсится и структурируется
  6. Сохраняется в таблицу task_analysis

Поиск

  1. Поиск по названию и описанию задачи
  2. Поиск по AI выводам (summary, advice)
  3. Результаты сортируются по дате обновления

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 — получить настройки AI
  • ai:updateConfig — обновить настройки AI
  • files: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 файлу, без необходимости открывать командную строку или терминал!

Предварительные требования

  1. Установлен Node.js 18+
  2. Установлены все зависимости: npm install
  3. 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-накопителя
  • ✅ Не оставляет следов в реестре
  • ⚠️ Первый запуск может быть медленнее (распаковка)

Установщик

  • ✅ Профессиональный вид
  • ✅ Автоматическое создание ярлыков
  • ✅ Интеграция с системой
  • ✅ Легкое удаление через "Установка и удаление программ"

Настройка иконки

Для добавления иконки приложения:

  1. Создайте файл assets/icon.ico (256×256 пикселей)
  2. Или измените путь в package.jsonbuild.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 не показывала предупреждение):

  1. Получите сертификат подписи кода
  2. Добавьте в 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 в изображения
  • uuid — генерация уникальных идентификаторов

Удаленные зависимости

  • better-sqlite3 — заменен на sql.js
  • react-beautiful-dnd — больше не используется (удалена Kanban доска)

Обновленные компоненты

  • TaskModal.tsx — добавлено отображение существующих файлов и кнопка повторного анализа
  • TaskCard.tsx — добавлено отображение AI резюме и статусов задач
  • App.tsx — добавлена навигация между экранами (Tasks, Wiki, Logs)
  • SettingsModal.tsx — полная настройка параметров AI
  • AIService.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
└── ...

Процесс сохранения файлов

  1. Загрузка файла:

    • Пользователь перетаскивает файл в задачу или выбирает через диалог
    • Файл временно сохраняется в системную временную директорию
  2. Создание задачи:

    • При создании задачи создается уникальный ID задачи (например, task_1234567890_abc123)
    • Создается директория для задачи: uploads/{taskId}/
  3. Сохранение файла:

    • Генерируется уникальный UUID для файла
    • Файл копируется из временной директории в uploads/{taskId}/{fileId}{extension}
    • Информация о файле сохраняется в базу данных SQLite:
      • id — UUID файла
      • task_id — ID задачи
      • file_name — оригинальное имя файла
      • file_path — полный путь к файлу
      • file_type — MIME тип
      • file_size — размер в байтах
      • uploaded_at — дата загрузки

Удаление файлов

При удалении отдельного файла

  1. Пользователь удаляет файл из задачи через интерфейс
  2. Вызывается FileService.deleteFile(fileId)
  3. Система находит файл по всем задачам и удаляет его физически
  4. Запись о файле удаляется из базы данных

При удалении задачи

  1. Пользователь удаляет задачу
  2. Вызывается FileService.deleteTaskFiles(taskId)
  3. Все файлы задачи удаляются физически:
    • Удаляются все файлы в директории uploads/{taskId}/
    • Удаляется сама директория задачи
  4. Задача и связанные записи удаляются из базы данных:
    • Задача из таблицы tasks (CASCADE удаляет связанные записи)
    • Файлы из таблицы task_files (автоматически через FOREIGN KEY CASCADE)
    • AI анализ из таблицы task_analysis (автоматически через FOREIGN KEY CASCADE)

Важные моменты

  • Физическое удаление: При удалении задачи все её файлы удаляются с диска без возможности восстановления
  • CASCADE в БД: SQLite автоматически удаляет связанные записи благодаря ON DELETE CASCADE в FOREIGN KEY
  • Безопасность: Файлы хранятся локально и не передаются на внешние серверы (кроме отправки в AI API для анализа)
  • Очистка: При удалении задачи директория с файлами удаляется полностью, освобождая место на диске

Размер хранилища

  • Файлы хранятся локально и могут занимать значительное место на диске
  • Рекомендуется периодически проверять размер директории uploads/
  • При удалении задач освобождается место автоматически

Резервное копирование

Для сохранения важных файлов рекомендуется:

  1. Регулярно делать резервные копии директории uploads/
  2. Экспортировать важные задачи перед удалением
  3. Хранить критически важные файлы отдельно от приложения

Технические детали

Класс 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 на другой ПК

Обзор

При переносе приложения на другой компьютер необходимо скопировать:

  1. Базу данных — все задачи, напоминания и AI анализы
  2. Загруженные файлы — все вложения к задачам
  3. Настройки — конфигурация 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: На старом компьютере

  1. Закройте приложение AiHuskyAssist (если оно запущено)

  2. Найдите директорию с данными:

    • Нажмите Win + R
    • Введите: %APPDATA%\AiHuskyAssist
    • Нажмите Enter
    • Или перейдите вручную: C:\Users\{ВашеИмя}\AppData\Roaming\AiHuskyAssist
  3. Скопируйте всю директорию:

    • Выделите всю папку AiHuskyAssist
    • Скопируйте (Ctrl+C)
    • Вставьте на внешний носитель (USB, облако и т.д.)

Шаг 2: На новом компьютере

  1. Установите приложение AiHuskyAssist (если еще не установлено)

  2. Найдите директорию для данных:

    • Нажмите Win + R
    • Введите: %APPDATA%\AiHuskyAssist
    • Нажмите Enter
  3. Если директория уже существует:

    • ВАЖНО: Сделайте резервную копию существующих данных (если они есть)
    • Удалите или переименуйте существующую папку AiHuskyAssist
  4. Вставьте скопированную директорию:

    • Вставьте папку AiHuskyAssist в %APPDATA%\Roaming\
    • Убедитесь, что путь: %APPDATA%\AiHuskyAssist\
  5. Запустите приложение — все данные должны быть на месте!

Вариант 2: Выборочный перенос

Если нужно перенести только часть данных:

Перенос только базы данных (задачи и напоминания, без файлов)

  1. Скопируйте только файл tasks.db из старой директории
  2. Вставьте в новую директорию %APPDATA%\AiHuskyAssist\
  3. Примечание: Файлы задач не будут доступны, но все задачи и напоминания сохранятся

Перенос только файлов (без задач)

  1. Скопируйте только папку uploads\ из старой директории
  2. Вставьте в новую директорию %APPDATA%\AiHuskyAssist\
  3. Примечание: Файлы будут на месте, но связи с задачами могут быть потеряны

Перенос только настроек

  1. Скопируйте файл config.json (если есть)
  2. Вставьте в новую директорию %APPDATA%\AiHuskyAssist\

Проверка после переноса

После переноса проверьте:

  1. Задачи — все задачи отображаются в списке
  2. Напоминания — все напоминания на месте
  3. Файлы — файлы открываются при редактировании задач
  4. AI анализы — резюме и советы отображаются в карточках
  5. Настройки — настройки AI сохранены (если переносили config.json)

Резервное копирование

Рекомендуется регулярно делать резервные копии:

  1. Автоматическое резервное копирование:

    • Используйте облачные сервисы (OneDrive, Google Drive, Dropbox)
    • Настройте синхронизацию папки %APPDATA%\AiHuskyAssist\
  2. Ручное резервное копирование:

    • Периодически копируйте всю папку 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 на одном компьютере:

  1. Скопируйте C:\Users\{СтарыйПользователь}\AppData\Roaming\AiHuskyAssist\
  2. Вставьте в C:\Users\{НовыйПользователь}\AppData\Roaming\AiHuskyAssist\

Устранение проблем

Проблема: Приложение не видит данные после переноса

Решение:

  1. Убедитесь, что путь правильный: %APPDATA%\AiHuskyAssist\
  2. Проверьте права доступа к файлам
  3. Убедитесь, что файл tasks.db не поврежден
  4. Попробуйте запустить приложение от имени администратора

Проблема: Файлы не открываются

Решение:

  1. Проверьте, что папка uploads\ скопирована полностью
  2. Убедитесь, что структура папок сохранена: uploads\{taskId}\{files}
  3. Проверьте права доступа к файлам

Проблема: Настройки не сохранились

Решение:

  1. Убедитесь, что файл config.json скопирован
  2. Если файла нет — настройки можно восстановить вручную через интерфейс приложения

Важные замечания

⚠️ Всегда делайте резервную копию перед переносом!

⚠️ Закрывайте приложение перед копированием данных — иначе база данных может быть заблокирована

⚠️ Не редактируйте файл tasks.db вручную — это может привести к повреждению базы данных

⚠️ Сохраняйте структуру директорий — не перемещайте файлы между папками вручную

Альтернативные методы

Использование символических ссылок (для продвинутых пользователей)

Можно создать символическую ссылку на другую директорию (например, на облачный диск):

# Удалите существующую директорию (после резервного копирования!)
Remove-Item "$env:APPDATA\AiHuskyAssist" -Recurse

# Создайте символическую ссылку
New-Item -ItemType SymbolicLink -Path "$env:APPDATA\AiHuskyAssist" -Target "D:\Cloud\AiHuskyAssist"

Теперь все данные будут автоматически синхронизироваться с облаком.

SETUP.md

Инструкция по установке и запуску

Для конечных пользователей

Если у вас есть готовый исполняемый файл (.exe):

Portable версия

  1. Запустите AiHuskyAssist-1.0.0-portable.exe двойным кликом
  2. Программа откроется как обычное Windows приложение
  3. Не требуется командная строка или терминал!

Установщик

  1. Запустите AiHuskyAssist Setup 1.0.0.exe двойным кликом
  2. Следуйте инструкциям установки
  3. После установки запустите из меню Пуск или ярлыка на рабочем столе
  4. Не требуется командная строка или терминал!

Важно: После компиляции программа работает как обычное Windows приложение — просто двойной клик, без необходимости открывать командную строку!


Для разработчиков

Предварительные требования

  • Node.js версии 18 или выше
  • npm или yarn
  • Poppler для Windows (для конвертации PDF в изображения)
    • Скачайте последнюю версию с GitHub releases
    • Распакуйте в директорию poppler/ в корне проекта
    • Приложение автоматически найдет poppler в стандартных местах
  • Bothub.chat API ключ (опционально, для AI функций)

Установка

  1. Клонируйте репозиторий или перейдите в директорию проекта:
cd @AiHuskyAssist
  1. Установите зависимости:
npm install

Установка Poppler (для PDF конвертации)

Poppler требуется для надежной конвертации PDF страниц в изображения. Приложение автоматически найдет poppler, если он установлен в одном из следующих мест:

  1. Автоматическая установка (рекомендуется):

    • Poppler уже должен быть скачан и распакован в poppler/ директории проекта
    • Приложение автоматически найдет его при запуске
  2. Ручная установка:

    • Скачайте последнюю версию с GitHub releases
    • Распакуйте архив в директорию poppler/ в корне проекта
    • Структура должна быть: poppler/poppler-XX.XX.X/Library/bin/
  3. Глобальная установка:

    • Установите poppler глобально и добавьте в PATH
    • Приложение попытается использовать системный poppler

Примечание: Если poppler не найден, приложение будет использовать резервный метод (pdfjs-dist), который может иметь ограничения в Electron.

Настройка AI (опционально)

Настройка AI выполняется через интерфейс приложения:

  1. Запустите приложение
  2. Нажмите кнопку "Настройки" в правом верхнем углу
  3. Заполните параметры:
    • Bothub.chat API Key — ваш API ключ от Bothub.chat
    • Bothub.chat API Base URLhttps://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)

Использование

Создание задачи

  1. Нажмите кнопку "+ Новая задача"
  2. Заполните название и описание
  3. Перетащите файлы в область загрузки или выберите их (поддерживаются: изображения, PDF, DOCX, текстовые файлы)
  4. Нажмите "Сохранить"
  5. 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 process
  • src/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)

Минимально:

  1. Загрузите папку webassist/php/ на хостинг (например в /webassist/api/).
  2. Создайте config.php рядом с _lib.php.
  3. Запустите db_init.php из CLI на сервере (если CLI недоступен — запустите локально на сервере, либо временно через браузер и потом удалите доступ).

Edit Message

Attachments:

AI Assistant

Enter your instruction to edit the text: