Initial content-pipeline: pipeline orchestrator + CMS layer, unified Article model
This commit is contained in:
commit
9ff486c19a
6 files changed
+431
No files matched your search
@@ -0,0 +1,76 @@
|
||||
# content-pipeline
|
||||
|
||||
Оркестратор контентного конвейера + CMS-слой для управления публикациями.
|
||||
|
||||
**Не CMS как таковая, а развитие editor-pro + GEO через более глубкую интеграцию.**
|
||||
|
||||
## Что это
|
||||
|
||||
Гибрид двух слоёв в едином UI:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ UI-панель (один экран) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ 1. Pipeline-оркестратор │ ← управление конвейером
|
||||
│ (editor-pro → GEO → публикация) │ запуск, статус, ретрай
|
||||
│ │
|
||||
│ 2. CMS-слой │ ← удобная правка
|
||||
│ (список статей / редактор / │ BlockNote + превью
|
||||
│ превью / публикации) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ FastAPI-оркестратор на 9876 │
|
||||
│ (уже есть для SEO-проектов) │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Архитектура
|
||||
|
||||
### Единая модель данных (`src/types.ts`)
|
||||
|
||||
Один объект «статья» используют оба слоя:
|
||||
|
||||
- `slug`, `title`, `body` — базовые поля
|
||||
- `utm` — UTM-теги для персонализации hero
|
||||
- `geo` — GEO-мета (сущности, ключевые запросы)
|
||||
- `status` — draft / in-review / published / archived
|
||||
- `editorProTaskId` — связь с editor-pro
|
||||
|
||||
Валидация и slugify — единые для обоих слоёв (никакого дублирования).
|
||||
|
||||
### Pipeline-оркестратор (`src/pipeline.ts`)
|
||||
|
||||
Шаги: `generate` (editor-pro) → `optimize` (GEO) → `publish`.
|
||||
|
||||
- Запуск конвейера для списка статей
|
||||
- Статусы шагов (pending/running/success/failed)
|
||||
- Ретрай до 3 раз при ошибке (экспоненциальный backoff)
|
||||
- Делегирует тяжёлую работу шагам (не выполняет сам)
|
||||
|
||||
### Хранилище (`src/store.ts`)
|
||||
|
||||
Единый источник данных для обоих слоёв:
|
||||
|
||||
- CRUD статей
|
||||
- Фильтрация по статусу (для CMS)
|
||||
- Поиск по заголовку/тексту
|
||||
- В MVP — in-memory Map; в прода — SQLite/Postgres (тот же интерфейс)
|
||||
|
||||
## Почему не форк CMS
|
||||
|
||||
Готовые CMS (AstroAdmin, astro-cms, EmDash) — CRUD для контента, не pipeline-оркестратор.
|
||||
Они не знают про editor-pro, GEO, UTM-теги. Им пришлось бы писать слой адаптации —
|
||||
свой слой проще и точнее.
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [ ] FastAPI-оркестратор (9876) — запуск pipeline
|
||||
- [ ] SQLite-репозиторий вместо in-memory
|
||||
- [ ] Блок-редактор (BlockNote/TipTap) для CMS-слоя
|
||||
- [ ] Превью через iframe dev-сервера
|
||||
- [ ] Привязка к deploy-пайплайну (rsync на хостинг)
|
||||
- [ ] Статусы pipeline в UI (отслеживание задач)
|
||||
|
||||
## License
|
||||
|
||||
Приватный. Концепт: развитие editor-pro + GEO.
|
||||
Reference in new issue
Block a user