Files
second-mind-aep/💡 Идеи/💡 Проекты/Obsidian телеграм бот/Telegram бот для Obsidian.md
Andrey Epifancev e96fec3709 Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками
- Добавлена система Inbox для быстрого захвата идей
- Созданы шаблоны для всех типов заметок с YAML метаданными
- Перенесен весь контент из старой структуры в новую
- Добавлен главный дашборд с динамическими запросами
- Создано подробное руководство по использованию системы
- Техническая документация реорганизована по типам

Основные улучшения:
 Inbox-first подход для новых заметок
 Тематическая организация по 8 областям знаний
 Шаблоны с метаданными для структурированности
 Система связей между заметками
 Динамические дашборды с аналитикой
 Централизованная техническая документация без дублирования
2025-08-09 22:11:50 +04:00

428 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 API
- `yandexcloud-sdk-go` - YandexGPT API интеграция
- `go-git/v5` - Git операции
- `viper` - конфигурация
- `logrus` - структурированное логирование
**Внешние сервисы:**
- YandexGPT API (YandexGPT Lite/Pro, SpeechKit для голоса)
- Telegram Bot API
- Векторная база данных (Qdrant/Chroma)
## 3. Архитектура системы
### 3.1 Общая диаграмма системы
```mermaid
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 Компонентная диаграмма
```mermaid
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 Диаграмма потоков данных
```mermaid
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
```