Files

3.3 KiB
Raw Permalink Blame History

1. Модуль GoToSocial (services/publisher/app/gotosocial.py)

  • 1.1 Создать gotosocial.py: _client(), post_status(), upload_media(), verify_credentials(), delete_status(), GoToSocialError
  • 1.2 Проверка: python -c "from app.gotosocial import post_status, verify_credentials" (в venv) — импорт без ошибок

2. Конфиг

  • 2.1 config.py: поля gt_social_url, gt_social_token, gt_social_visibility, gt_social_channels + чтение из env
  • 2.2 .env (корень): добавить GT_SOCIAL_URL=https://social.dedinit.ru, GT_SOCIAL_ACCESS_TOKEN=<токен vesti>, GT_SOCIAL_VISIBILITY=public, VESTI_GTS_CHANNELS=@vesti@dedinit.ru
  • 2.3 .env.example актуализирован (те же имена, значения-заглушки)

3. Логика каналов (channels.py)

  • 3.1 Добавить is_gotosocial(ch) и чтение VESTI_GTS_CHANNELS (feediverse-каналы отдельно от Telegram)
  • 3.2 Проверка: функция отличает @dedinit_vesti (TG) от @vesti@dedinit.ru (GtS); gt:-префикс уходит ТОЛЬКО в fediverse

4. main.py

  • 4.1 _publish_gotosocial(card, ch): upload_media → post_status → ChannelResult (status_id)
  • 4.2 В publish(): после Telegram-каналов обработать fediverse-каналы (settings.gt_social_channels) в том же цикле; all_ok учитывает их
  • 4.3 dry_run: эмулирует fediverse-каналы (message_id=0), без реальных HTTP-запросов
  • 4.4 healthz: блок gotosocial (url, account, token_set, account_ok)
  • 4.5 Проверка: curl -s http://127.0.0.1:8410/healthz → json c gotosocial

5. Сборка и функциональный тест

  • 5.1 docker compose -f services/publisher/docker-compose.yml up -d --build — контейнер Up
  • 5.2 dry_run с fediverse-каналом: results содержит @vesti@dedinit.ru, message_id=0, HTTP 200
  • 5.3 healthz содержит gotosocial c token_set=true, account=vesti, account_ok=true
  • 5.4 Регресс: публикация чисто в Telegram (dry_run) работает как раньше

6. Токен + реальный тест

  • 6.1 Создать аккаунт vesti на GtS (admin account create, confirmed, approved) — 2026-09-13
  • 6.2 Создать OAuth-приложение vesti-publisher (POST /api/v1/apps, scope write write:media) — client_id=01B09QNDM9YQ2VQVSRXHCVAV6K
  • 6.3 Токен vesti: вставлен в БД tokens (user_id из users, scope read write, access 48 симв.), записан в .env → healthz account_ok=true
  • 6.4 Реальный тест: публикация текста, публикация с медиа (1 attachment), delete — всё HTTP 200, статусы проверены и удалены

7. Документация и git

  • 7.1 STATUS.md: раздел «Fediverse-публикация (GoToSocial)»
  • 7.2 WALKTHROUGH.md/PRD.md: фича отмечена
  • 7.3 git commit + push на gitverse
  • 7.4 openspec archive (после подтверждения пользователя)
  • 7.5 backup.sh (обязателен после изменений)