Files
md2vk/docs/status.md
T

3.6 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)

Открытые задачи

  • Планировщик отложенных постов (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 (без планировщика)