diff --git a/telegram-archiver/CHANGELOG.md b/telegram-archiver/CHANGELOG.md new file mode 100644 index 0000000..42d64c9 --- /dev/null +++ b/telegram-archiver/CHANGELOG.md @@ -0,0 +1,139 @@ +# Changelog + +Все значимые изменения в проекте Telegram Archiver. + +Формат ведётся в соответствии с [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), +версии — по [Semantic Versioning](https://semver.org/lang/ru/). + +--- + +## [Unreleased] + +### Planned +- CLI тестирование с реальным Telegram каналом +- Интеграция с Hugo (экспорт в content/posts/) +- Dockerfile и docker-compose для деплоя +- Поддержка нескольких каналов одновременно +- Прогресс-бар при скачивании (tqdm) + +--- + +## [1.0.0] — 2026-02-19 + +### Добавлено + +#### Core Functionality +- **Архивация Telegram-каналов** в локальную файловую систему +- **Bundle-структура**: `//index.md + media` +- **Front-matter для Hugo**: `message_id`, `date`, `author`, `reply_to`, `repost_from`, `media_files` +- **Дедупликация по message_id**: пропуск уже скачанных постов +- **Обработка медиа**: фото, видео, документы, аудио, стикеры, GIF +- **Ограничение размера файла**: настраиваемый лимит (по умолчанию 200 MB) +- **Отчёт о больших файлах**: `2big2get.md` с ссылками на файлы > MAX_FILE_SIZE +- **Обработка репостов**: сохранение оригинального канала и message_id +- **Обработка ответов (reply-to)**: относительные ссылки на другие посты + +#### Interfaces +- **FastAPI REST API**: + - `GET /health` — проверка здоровья + - `GET /` — информация об API + - `POST /archive` — запуск архивации + - `GET /docs` — Swagger UI документация +- **CLI интерфейс**: + - `--channel` / `-c`: username канала + - `--output-dir` / `-o`: папка для архива + - `--limit` / `-l`: лимит постов + - `--from-message-id` / `-f`: начать с этого ID + - `--force`: перескачать существующие + +#### Configuration +- **`.env` конфигурация**: API_ID, API_HASH, PHONE, MAX_FILE_SIZE, OUTPUT_DIR, LOG_LEVEL +- **Pydantic Settings**: валидация credentials, type hints +- **Graceful startup**: сервер запускается даже без .env (с предупреждением) + +#### Logging & Observability +- **Логирование в файл**: `YYYYMMDD-channel.log` +- **Логирование в консоль**: stdout с цветным выводом +- **OpenTelemetry ready**: поддержка tracing (отключено по умолчанию) + +#### Development Tools +- **Virtual environment**: `uv venv` для создания +- **pyproject.toml**: полная метаданные проекта +- **Pre-commit hooks**: ruff, mypy, pre-commit-hooks +- **Тесты**: pytest для models и config +- **Конфигурация linting**: ruff, mypy, pytest в pyproject.toml +- **DEVELOPMENT.md**: гайд для разработчиков + +### Изменено +- **config.py**: credentials сделаны опциональными для graceful startup +- **app/main.py**: улучшены сообщения об ошибках (503 с деталями) +- **.gitignore**: добавлены .venv/, .mypy_cache/, .pytest_cache/ + +### Исправлено +- Ошибка запуска сервера без .env файла +- Отсутствие валидации credentials до вызова API +- Missing imports при установке зависимостей + +### Технические детали + +#### Dependencies +``` +fastapi>=0.109.0 +uvicorn[standard]>=0.27.0 +click>=8.1.7 +telethon>=1.34.0 +pydantic>=2.5.3 +pydantic-settings>=2.1.0 +python-dotenv>=1.0.0 +pyyaml>=6.0.1 +opentelemetry-api>=1.22.0 +opentelemetry-sdk>=1.22.0 +opentelemetry-instrumentation-fastapi>=0.43b0 +httpx>=0.26.0 +aiofiles>=23.2.1 +``` + +#### Dev Dependencies +``` +pytest>=8.0.0 +pytest-asyncio>=0.23.0 +pytest-cov>=4.1.0 +ruff>=0.1.0 +mypy>=1.8.0 +pre-commit>=3.6.0 +``` + +#### Testing +- Синтаксис: `python -m py_compile` (все файлы) +- Импорты: проверены в virtual environment +- FastAPI server: старт без .env +- Endpoints: `/health`, `/`, `/archive` протестированы + +--- + +## [0.1.0] — 2026-02-19 (Initial Commit) + +### Добавлено +- Первоначальная структура проекта +- Базовая реализация Telethon клиента +- Черновик FastAPI приложения +- README.md с описанием + +--- + +## Типы изменений + +- **Added** — новые функции +- **Changed** — изменения в существующих функциях +- **Deprecated** — скоро будут удалены +- **Removed** — удалённые функции +- **Fixed** — исправления ошибок +- **Security** — улучшения безопасности + +--- + +## Ссылки + +- [Репозиторий проекта](https://gitea.nixg.ru/estorozhenko/c7e.ru) +- [Документация](README.md) +- [Гайд для разработчиков](DEVELOPMENT.md)