Files
vesti/openspec/changes/candidates-mail-ui/proposal.md
T

3.8 KiB

Why

Пользователю неудобно работать с карточками кандидатов в текущем виде. Сейчас:

  • Страница кандидатов — это лента карточек (каждая с апрув-кнопкой), нет списка слева, нет меню действий справа, нет группировки, нет bulk-операций.
  • Пользователь описал целевой интерфейс: «схожий с почтовыми клиентами» — общий список сообщений в левой панели, конкретное сообщение справа.
  • Отклонять/одобрять по группам (например, «все старые посты отклонить») сейчас нельзя: только по одному.

What Changes

Страница кандидатов candidates перерабатывается в двухпанельный интерфейс:

  • Левая панель — список кандидатов (сообщений):
    • элемент списка: аватар/иконка источника, заголовок (направление + краткий текст), мета (источник, дата поступления, views/reactions, статус).
    • активный/выбранный элемент подсвечивается.
    • группировка (сворачиваемые группы): по источнику, по дате поступления, по статусу (новые / одобренные / отклонённые).
    • выбор нескольких элементов (чекбоксы) + bulk-действия над группой: «отклонить все выбранные», «одобрить все выбранные».
  • Правая панель — детальный просмотр выбранного кандидата:
    • меню действий: Опубликовать (approve), Отклонить (reject), Переклассифицировать, Переписать новость под себя (LLM-пересказ, ввод текста).
    • блок «Мой комментарий» (textarea, сохраняется).
    • оригинальный пост со всеми медиа (текст, картинки/видео, ссылки, мета источника).
  • Хранение комментария — новое поле/таблица (comment в posts или отдельная post_comments), связь с пользователем.
  • Статусы: у поста уже есть status (new/rejected/published?) — использовать его для группировки; добавить, если нет.

Why Not

  • Не делаем drag&drop, не делаем виртуальную бесконечную прокрутку — достаточно пейджинга/группировки (минимум JS, стабильно).
  • Не меняем существующие роуты approve/reject — только дополняем новыми (bulk, переклассификация, коммент).

Open Questions

  • Комментарий: отдельная таблица или поле в posts? (предлагаю поле posts.comment TEXT)
  • Переписывание: LLM (qwen) генерирует черновик, пользователь редактирует и публикует?
  • «Переклассифицировать» — повторный запуск классификатора на посте?
  • Группировка: одновременно несколько группировок или одна выбранная?