mirror of
https://gitverse.ru/kpa39l/chronicle.nixg.ru.git
synced 2026-09-29 01:50:07 +00:00
5.3 KiB
5.3 KiB
Changelog
Все значимые изменения в проекте Telegram Archiver.
Формат ведётся в соответствии с Keep a Changelog, версии — по Semantic Versioning.
[Unreleased]
Planned
- CLI тестирование с реальным Telegram каналом
- Интеграция с Hugo (экспорт в content/posts/)
- Dockerfile и docker-compose для деплоя
- Поддержка нескольких каналов одновременно
- Прогресс-бар при скачивании (tqdm)
[1.0.0] — 2026-02-19
Добавлено
Core Functionality
- Архивация Telegram-каналов в локальную файловую систему
- Bundle-структура:
<channel>/<message_id>/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 /— информация об APIPOST /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 — улучшения безопасности