- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
14 KiB
14 KiB
1. Обзор системы
1.1 Назначение
Система представляет собой Telegram бота для автоматизации создания и управления заметками в Obsidian с интеграцией в существующий Git + Quartz workflow.
1.2 Ключевые функции
- Создание заметок из текстовых и голосовых сообщений
- Семантический поиск по базе знаний
- Дополнение существующих заметок
- Автоматическое форматирование через YandexGPT
- Интеграция с Git для версионирования
- Автоматическая публикация через Quartz
1.3 Ограничения и допущения
- Один пользователь (личное использование)
- Развертывание на VPS с ограниченными ресурсами
- Интеграция с существующей инфраструктурой Git + Quartz
- Приоритет простоты разработки над масштабируемостью
2. Архитектурные решения
2.1 Выбор архитектурного стиля: Модульный монолит
Обоснование:
- Простота разработки и развертывания
- Оптимальное использование ресурсов VPS
- Быстрая итерация для единственного пользователя
- Легкость отладки и мониторинга
Альтернативы рассмотренные:
- Микросервисная архитектура (отклонена из-за избыточной сложности)
- Serverless функции (отклонена из-за холодного старта и ограничений по времени)
2.2 Технологический стек
Основной язык: Go 1.21+
- Высокая производительность
- Простое развертывание (единый бинарник)
- Отличная поддержка конкурентности
- Богатая экосистема для Telegram ботов
Ключевые зависимости:
telegram-bot-api/v5- Telegram Bot APIyandexcloud-sdk-go- YandexGPT API интеграцияgo-git/v5- Git операцииviper- конфигурацияlogrus- структурированное логирование
Внешние сервисы:
- YandexGPT API (YandexGPT Lite/Pro, SpeechKit для голоса)
- Telegram Bot API
- Векторная база данных (Qdrant/Chroma)
3. Архитектура системы
3.1 Общая диаграмма системы
graph TB
A[Telegram User] --> B[Monolithic Bot App]
B --> A
B --> C[External Services]
C --> B
subgraph "External Services"
D[YandexGPT API]
E[Vector DB]
F[Telegram API]
end
B --> G[File System]
subgraph "File System"
H[Obsidian Vault]
I[Git Repository]
J[Vector Index]
end
G --> K[Git Hooks]
K --> L[Quartz Rebuild]
C --> D
C --> E
C --> F
3.2 Компонентная диаграмма
graph TB
subgraph "Monolithic Application"
A[Bot Handler]
B[HTTP Server]
C[CLI Tools]
subgraph "Business Logic Layer"
D[Note Service]
E[Search Service]
F[Voice Service]
G[LLM Service]
H[File Service]
I[Git Service]
end
subgraph "Infrastructure Layer"
J[Config Manager]
K[Logger]
L[Cache]
end
end
A --> D
A --> E
A --> F
B --> D
B --> E
B --> F
C --> D
C --> E
C --> F
D --> G
D --> H
D --> I
E --> G
E --> H
F --> G
F --> H
G --> J
H --> J
I --> J
G --> K
H --> K
I --> K
3.3 Диаграмма потоков данных
graph TB
A[Telegram Message] --> B[Bot Handler]
B --> C[Router]
C --> D[Create Note]
C --> E[Search Notes]
C --> F[Append Note]
D --> G[Format with YandexGPT]
F --> H[Find & Update]
G --> I[Save File]
E --> J[Vector Search]
H --> I
I --> K[Git Commit]
J --> K
K --> L[Quartz Rebuild]
subgraph "Message Processing"
A
B
C
end
subgraph "Note Operations"
D
E
F
end
subgraph "Processing"
G
H
J
end
subgraph "Storage"
I
K
L
end
4. Детальное описание компонентов
4.1 Presentation Layer
Bot Handler
- Ответственность: Обработка Telegram API, маршрутизация команд
- Интерфейсы: Telegram Bot API
- Зависимости: Router, Context Manager
HTTP Server (опциональный)
- Ответственность: Health checks, метрики, webhook endpoint
- Интерфейсы: HTTP REST API
- Зависимости: Monitoring tools
4.2 Business Logic Layer
Note Service
- Ответственность: Создание, обновление заметок, управление жизненным циклом
- Интерфейсы: Note CRUD операции
- Зависимости: LLM Service, File Service, Git Service
Search Service
- Ответственность: Векторный поиск, индексация, семантический анализ
- Интерфейсы: Search API, Indexing API
- Зависимости: Vector Database, Embedding Service
Voice Service
- Ответственность: Обработка голосовых сообщений, транскрипция
- Интерфейсы: Audio processing API
- Зависимости: Yandex SpeechKit API, File Service
LLM Service
- Ответственность: Интеграция с YandexGPT, форматирование, генерация контента
- Интерфейсы: Text processing API
- Зависимости: YandexGPT API
4.3 Infrastructure Layer
File Service
- Ответственность: Файловые операции, управление Obsidian vault
- Интерфейсы: File system operations
- Зависимости: OS file system
Git Service
- Ответственность: Version control, автоматические коммиты
- Интерфейсы: Git operations API
- Зависимости: Git repository
5. Интеграционная архитектура
5.1 Внешние интеграции
YandexGPT API
- Назначение: YandexGPT Lite/Pro для форматирования, SpeechKit для транскрипции
- Протокол: HTTPS REST API
- Аутентификация: API Key (IAM токен)
- Обработка ошибок: Retry with exponential backoff
- Модели: yandexgpt-lite, yandexgpt-pro
Telegram Bot API
- Назначение: Получение сообщений, отправка ответов
- Протокол: HTTPS REST API / WebHooks
- Аутентификация: Bot Token
- Режим работы: Long polling (рекомендуется для VPS)
Vector Database
- Назначение: Семантический поиск по заметкам
- Варианты: Qdrant (HTTP API) или Chroma (HTTP API)
- Протокол: HTTPS REST API
- Данные: Embeddings + метаданные заметок
5.2 Файловая система
Obsidian Vault Structure
vault/
├── notes/ # Основные заметки
├── daily/ # Ежедневные заметки
├── templates/ # Шаблоны
├── attachments/ # Медиа файлы
└── .obsidian/ # Конфигурация Obsidian
Git Integration
- Автоматические коммиты после каждого изменения
- Meaningful commit messages
- Direct push в main branch
- Git hooks для триггера Quartz rebuild
6. Данные и хранение
6.1 Модель данных
Note Entity
Note {
ID: UUID
Title: string
Content: string (Markdown)
Filename: string
Created: timestamp
Updated: timestamp
Tags: []string
Links: []string
Embedding: []float32
}
User Context
UserContext {
UserID: int64
State: enum (idle, creating_note, appending, searching)
Data: map[string]interface{}
LastActivity: timestamp
}
6.2 Хранение данных
Файловая система
- Obsidian заметки: Markdown файлы в vault directory
- Конфигурация: .env файл или environment variables
- Логи: Rotated log files или stdout для containerized deployment
Временное хранение
- User contexts: In-memory map (single user)
- Cache: In-memory или embedded BoltDB
- Vector embeddings: External vector database
7. Развертывание и операционные аспекты
7.1 Архитектура развертывания
VPS Server
├── Application Binary
├── Configuration Files
├── Obsidian Vault (Git Repository)
├── Vector Database (если локальная)
└── Monitoring & Logs
7.2 Масштабирование
Текущие ограничения:
- Один пользователь
- Один экземпляр приложения
- Локальные файловые операции
Возможности роста:
- Horizontal scaling: добавление Redis для shared state
- Vertical scaling: увеличение ресурсов VPS
- Service extraction: выделение vector search в отдельный сервис
7.3 Мониторинг и наблюдаемость
Логирование:
- Structured logging (JSON format)
- Log levels: ERROR, WARN, INFO, DEBUG
- Log rotation для экономии места
Метрики:
- Application health status
- Message processing time
- YandexGPT API response times
- Git operation success/failure rates
Алерты:
- Application down
- High error rate
- YandexGPT API quota exceeded
- Git push failures
8. Безопасность
8.1 Аутентификация и авторизация
- Telegram User ID whitelist (только владелец)
- API keys в environment variables
- No public endpoints кроме Telegram webhook
8.2 Защита данных
- API keys не в коде
- Логи не содержат sensitive данные
- HTTPS для всех внешних API calls
- Git repository может быть private
9. Качественные атрибуты
9.1 Производительность
- Время отклика бота: < 2 секунды для текстовых сообщений
- Время создания заметки: < 5 секунд включая YandexGPT обработку
- Голосовые сообщения: < 10 секунд для транскрипции и создания заметки
9.2 Надежность
- Graceful degradation при недоступности YandexGPT API
- Retry mechanisms для внешних API
- Data consistency через atomic git operations
9.3 Maintainability
- Четкое разделение ответственности между слоями
- Интерфейсы для всех основных компонентов
- Comprehensive logging для отладки
- Configuration management через environment variables
10. Риски и ограничения
10.1 Технические риски
- YandexGPT API limits: Rate limiting может замедлить обработку
- Vector DB performance: Поиск может замедляться с ростом количества заметок
- VPS resources: Ограниченная память и CPU для vector operations
10.2 Операционные риски
- Single point of failure: Монолитная архитектура
- Manual deployment: Отсутствие автоматизированного CI/CD
- Backup dependency: Зависимость от Git для backup заметок
10.3 Митигация рисков
- Monitoring и alerting для раннего обнаружения проблем
- Регулярные backups Git repository
- Graceful fallbacks при недоступности внешних сервисов
- Resource monitoring для предотвращения исчерпания ресурсов VPS
11. Конфигурация YandexGPT
11.1 API Ключи и аутентификация
- IAM Token: Основной способ аутентификации для YandexGPT API
- API Key: Альтернативный способ для некоторых сервисов
- Folder ID: Идентификатор каталога в Yandex Cloud
11.2 Модели YandexGPT
- yandexgpt-lite: Быстрая модель для базового форматирования
- yandexgpt-pro: Продвинутая модель для сложных задач
- speechkit: Для обработки голосовых сообщений
11.3 Переменные окружения
YANDEX_API_KEY=your_api_key
YANDEX_FOLDER_ID=your_folder_id
YANDEX_IAM_TOKEN=your_iam_token
TELEGRAM_BOT_TOKEN=your_bot_token
VAULT_PATH=/path/to/obsidian/vault