mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
openspec: архивирован change gotosocial-publisher (2026-09-13), delta влита в specs/gotosocial-publisher
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
## 1. Модуль GoToSocial (services/publisher/app/gotosocial.py)
|
||||
|
||||
- [x] 1.1 Создать `gotosocial.py`: `_client()`, `post_status()`, `upload_media()`, `verify_credentials()`, `delete_status()`, `GoToSocialError`
|
||||
- [x] 1.2 Проверка: `python -c "from app.gotosocial import post_status, verify_credentials"` (в venv) — импорт без ошибок
|
||||
|
||||
## 2. Конфиг
|
||||
|
||||
- [x] 2.1 `config.py`: поля `gt_social_url`, `gt_social_token`, `gt_social_visibility`, `gt_social_channels` + чтение из env
|
||||
- [x] 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`
|
||||
- [x] 2.3 `.env.example` актуализирован (те же имена, значения-заглушки)
|
||||
|
||||
## 3. Логика каналов (channels.py)
|
||||
|
||||
- [x] 3.1 Добавить `is_gotosocial(ch)` и чтение `VESTI_GTS_CHANNELS` (feediverse-каналы отдельно от Telegram)
|
||||
- [x] 3.2 Проверка: функция отличает `@dedinit_vesti` (TG) от `@vesti@dedinit.ru` (GtS); `gt:`-префикс уходит ТОЛЬКО в fediverse
|
||||
|
||||
## 4. main.py
|
||||
|
||||
- [x] 4.1 `_publish_gotosocial(card, ch)`: upload_media → post_status → ChannelResult (status_id)
|
||||
- [x] 4.2 В `publish()`: после Telegram-каналов обработать fediverse-каналы (settings.gt_social_channels) в том же цикле; `all_ok` учитывает их
|
||||
- [x] 4.3 dry_run: эмулирует fediverse-каналы (message_id=0), без реальных HTTP-запросов
|
||||
- [x] 4.4 healthz: блок `gotosocial` (url, account, token_set, account_ok)
|
||||
- [x] 4.5 Проверка: `curl -s http://127.0.0.1:8410/healthz` → json c gotosocial
|
||||
|
||||
## 5. Сборка и функциональный тест
|
||||
|
||||
- [x] 5.1 `docker compose -f services/publisher/docker-compose.yml up -d --build` — контейнер Up
|
||||
- [x] 5.2 dry_run с fediverse-каналом: results содержит `@vesti@dedinit.ru`, message_id=0, HTTP 200
|
||||
- [x] 5.3 healthz содержит gotosocial c `token_set=true`, account=vesti, account_ok=true
|
||||
- [x] 5.4 Регресс: публикация чисто в Telegram (dry_run) работает как раньше
|
||||
|
||||
## 6. Токен + реальный тест
|
||||
|
||||
- [x] 6.1 Создать аккаунт **vesti** на GtS (admin account create, confirmed, approved) — 2026-09-13
|
||||
- [x] 6.2 Создать OAuth-приложение `vesti-publisher` (POST /api/v1/apps, scope `write write:media`) — client_id=01B09QNDM9YQ2VQVSRXHCVAV6K
|
||||
- [x] 6.3 Токен vesti: вставлен в БД `tokens` (user_id из `users`, scope `read write`, access 48 симв.), записан в .env → healthz `account_ok=true`
|
||||
- [x] 6.4 Реальный тест: публикация текста, публикация с медиа (1 attachment), delete — всё HTTP 200, статусы проверены и удалены
|
||||
|
||||
## 7. Документация и git
|
||||
|
||||
- [x] 7.1 STATUS.md: раздел «Fediverse-публикация (GoToSocial)»
|
||||
- [x] 7.2 WALKTHROUGH.md/PRD.md: фича отмечена
|
||||
- [x] 7.3 git commit + push на gitverse
|
||||
- [x] 7.4 openspec archive (после подтверждения пользователя)
|
||||
- [x] 7.5 backup.sh (обязателен после изменений)
|
||||
Reference in New Issue
Block a user