🏛️ Архитектура проекта

Версия: 1.2 | Обновлено: 2026-03-25

📊 Схема 1: Общая архитектура проекта

graph TB subgraph Sources[Источники] TG[Telegram-чат] MANUAL[Ручной ввод] end subgraph Processing[Обработка] NATIVE[telegram-webhook.php] MTPROTO[mtproto-webhook.php] PIPELINE[Единый PHP-пайплайн] AI[OpenRouter] end subgraph Storage[Хранение] DB[(MySQL)] CACHE[Image Cache] end subgraph Frontend[Представление] SITE[Сайт
index.php, news.php] PODCAST[Подкаст-режим
podcast.php] ADMIN[Админ-панель
manager/] QUEUE[Очередь подкаста
podcast-queue.php] KANBAN[Канбан-доска
docs/pages/tasks.php] end TG --> NATIVE TG --> MTPROTO MANUAL --> ADMIN NATIVE --> PIPELINE MTPROTO --> PIPELINE PIPELINE --> DB PIPELINE --> AI AI --> PIPELINE DB --> SITE DB --> PODCAST DB --> ADMIN DB --> QUEUE DB --> KANBAN QUEUE --> PODCAST CACHE --> SITE CACHE --> PODCAST

🔄 Схема 2: Жизненный цикл новости

stateDiagram-v2 [*] --> raw: Импорт / создание raw --> processing: PHP-пайплайн запускает обработку processing --> enriched: OpenRouter завершил обогащение enriched --> published: Модератор публикует published --> podcast_queue: Добавление в очередь подкаста podcast_queue --> aired: Выпуск вышел (статус published) published --> updated: AI периодическое обновление updated --> published: Обновлённая версия published --> [*]: Удаление raw --> [*]: Удаление

👥 Схема 3: Роли и их действия

🛡️ Модератор

  • Просмотр enriched новостей
  • Подтверждение и правка рубрик
  • Установка importance
  • Публикация → published

🎙️ Подкастер

  • Добавление новостей в очередь подкаста
  • Сортировка очереди (drag-and-drop)
  • Управление статусами выпусков
  • Удаление из очереди
  • Формирование выпуска

✍️ Редактор

  • Правка опубликованных новостей
  • Управление рубриками
  • Управление пользователями

🤖 AI-система

  • Обогащение raw → enriched
  • Заполнение description
  • Предложение важности
  • Предложение рубрик и тегов
  • Логирование в ai_log

📚 Документатор

  • Ведение канбан-доски задач
  • Актуализация документации
  • Формирование changelog
  • Фиксация архитектурных решений
Модератор → Подкастер → Редактор ← AI-система ← Документатор

📦 Схема 4: Поток данных AI-обогащения

sequenceDiagram participant PIPELINE as PHP-пайплайн participant DB participant AI as OpenRouter PIPELINE->>DB: Получить новость со статусом raw DB-->>PIPELINE: Исходный текст и настройки loop Для каждого настроенного поля PIPELINE->>AI: Прямой запрос на обогащение AI-->>PIPELINE: Структурированный результат PIPELINE->>DB: Сохранить результат и журнал обработки end

📋 Схема 5: Работа с канбан-доской задач

sequenceDiagram participant User as Пользователь participant UI as tasks.php (UI) participant JS as kanban.js participant API as api/tasks.php participant JSON as tasks.json User->>UI: Открывает страницу задач UI->>JS: Загружает скрипт JS->>API: GET запрос API->>JSON: Чтение файла JSON-->>API: Данные задач API-->>JS: JSON с задачами JS-->>UI: Рендер канбан-доски User->>UI: Двойной клик по задаче UI->>JS: Открыть модальное окно JS->>API: GET запрос (данные задачи) API-->>JS: JSON задачи JS-->>UI: Отобразить Markdown-описание User->>UI: Редактирование + Сохранить UI->>JS: Собрать данные JS->>API: POST запрос (обновлённые задачи) API->>JSON: Сохранить файл JSON-->>API: Подтверждение API-->>JS: success JS-->>UI: Обновить доску

📁 Структура проекта

/
├── index.php                 # Лента новостей
├── news.php                  # Страница новости + рубрики
├── podcast.php               # Подкаст-режим
├── sitemap.php               # Sitemap.xml
├── config.php                # Конфигурация
├── Database.php              # PDO singleton
├── functions.php             # Общие функции
├── image-manager.php         # Кэширование изображений
├── comments.php              # API комментариев
├── 404.php                   # Страница 404
├── /templates/               # Шаблоны страниц
├── /manager/                 # Админ-панель
│   ├── podcast-queue.php     # Управление очередью подкаста
│   └── ...
├── /api/                     # Webhook-и и внутренние API сайта
├── /uploads/                 # Загруженные файлы
├── /cache/                   # Кэш изображений
└── /docs/                    # Документация
    ├── data/
    │   └── tasks.json        # Хранилище задач
    ├── js/
    │   └── kanban.js         # Логика канбан-доски
    ├── api/
    │   └── tasks.php         # API для работы с задачами
    └── pages/
        └── tasks.php         # Страница канбан-доски