mirror of
https://gitverse.ru/kpa39l/md2vk.git
synced 2026-09-29 18:05:04 +00:00
4.4 KiB
4.4 KiB
md2vk — Статус (история изменений)
Актуальный статус работ — в
openspec/иtodo-файлах; здесь хроника и границы.
2026-09: Документация, деплой, git, openspec
Сделано:
- Аудит проекта (FastAPI ядро, Phase 1)
- Документация в
docs/(index, access, architecture, vk-api, security, deploy, status) +AGENTS.md - Аудит-лог авторизации (JSONL, ротация по дням) — см.
app/api/audit.py+ middleware - Docker: порт 8420 (8000 занят), bind
./data→/data,./logs→/logs, HEALTHCHECK через python (curl в slim-образе нет) - openspec инициализирован (specs/ baseline)
- git init, push на gitverse.ru (kpa39l/md2vk), pull mirror в gitea.nixg.ru (estorozhenko/md2vk)
- Caddy на vps02: md2vk.nixg.ru + basic_auth estorozhenko (bcrypt), reverse_proxy 10.8.0.2:8420
- fail2ban на vps02: jail md2vk, ban после 5 попыток, ручной unban
- Сквозная проверка: https + auth + блокировка + unban
Phase 1 — Ядро (DONE, из STATUS.md)
- Каркас проекта, структура директорий
- Config из env (pydantic-settings)
- Async SQLAlchemy + SQLite, инициализация БД
- ORM-модели (User, VkAccount, Publication)
- Fernet-шифрование/дешифрование токенов
- Генерация и верификация API-ключей
- Конвертер Markdown → VK format_data
- VK API клиент (wall.post, users.get, check_token)
- Pydantic-схемы запросов/ответов
- API: /health, /accounts (CRUD), /publish, /convert, /publications
- Аутентификация по API-ключу (заголовок + тело)
- Генерация ключа шифрования
- Проверка импортов и запуск
- Тест конвертации через API (curl)
Открытые задачи
- БЛОКЕР: VK API недоступен для физлиц. По состоянию на 2026-09-20 доступ к VK API (создание приложения, токены) — только для юрлиц, ИП и самозанятых (VK ID, «подтвердите профиль бизнеса»). У пользователя статуса нет → публикация/тест поста невозможны до изменения условий VK. Кабинет приложений: https://id.vk.ru/about/business/go/accounts/465683/apps (типы приложений: Web/Android/iOS; Standalone убран). Когда доступ откроют: см.
docs/vk-token-howto.md. - Планировщик отложенных постов (status=scheduled → wall.post). Модель готова, worker нет.
- OAuth-флоу VK ID (кнопка «Прикрепить аккаунт»); нужны client_id/secret VK-приложения
- Web UI (форма поста + превью)
- Unit-тесты конвертера (pytest)
- Integration-тесты API (pytest + httpx)
- Rate limiting (in-memory bucket, RATE_LIMIT_PER_MINUTE)
- Retry при сетевых ошибках VK API
- Graceful shutdown
- Read-only rootfs (уже
read_only: trueв compose, но /logs мешает; пересмотреть) - CORS (ограничение по origin)
- Обработка длинных постов (multipart: пост + комментарии)
- Hermes skill md2vk (проверка сервиса, публикация, добавление аккаунта)
Границы Phase 1
- Конвертация Markdown → VK format_data (жирный, курсив, код, ссылки, заголовки, цитаты, блоки кода)
- Публикация поста на стене VK
- Шифрование токенов (Fernet + Docker secret)
- Аутентификация по API-ключу
- Управление VK-аккаунтами (добавить, список, удалить)
- Архив публикаций с фильтрацией
- Конвертация без публикации (preview)
- Отложенные посты: только запись
scheduled(без планировщика)