mirror of
https://gitverse.ru/kpa39l/md2vk.git
synced 2026-09-29 09:55:04 +00:00
Baseline md2vk: docs, audit log, docker 8420, openspec, deploy
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# md2vk — Статус (история изменений)
|
||||
|
||||
> Актуальный статус работ — в `openspec/` и `todo`-файлах; здесь хроника и границы.
|
||||
|
||||
## 2026-09: Документация, деплой, git, openspec
|
||||
|
||||
**Сделано:**
|
||||
- [x] Аудит проекта (FastAPI ядро, Phase 1)
|
||||
- [x] Документация в `docs/` (index, access, architecture, vk-api, security, deploy, status) + `AGENTS.md`
|
||||
- [x] Аудит-лог авторизации (JSONL, ротация по дням) — см. `app/api/audit.py` + middleware
|
||||
- [x] Docker: порт 8420 (8000 занят), bind `./data`→`/data`, `./logs`→`/logs`, HEALTHCHECK через python (curl в slim-образе нет)
|
||||
- [x] openspec инициализирован (specs/ baseline)
|
||||
- [x] git init, push на gitverse.ru (kpa39l/md2vk), pull mirror в gitea.nixg.ru (estorozhenko/md2vk)
|
||||
- [x] Caddy на vps02: md2vk.nixg.ru + basic_auth estorozhenko (bcrypt), reverse_proxy 10.8.0.2:8420
|
||||
- [x] fail2ban на vps02: jail md2vk, ban после 5 попыток, ручной unban
|
||||
- [x] Сквозная проверка: 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` (без планировщика)
|
||||
Reference in New Issue
Block a user