Управление документами: загрузка файлов через веб-интерфейс
#разработка

Как читать
100 %
Что реализовано
Страница /about/documents переведена с ручного управления через Markdown-файл на полноценную базу данных с веб-интерфейсом.
База данных (Supabase)
Добавлены две новые таблицы:
page_document_sections— разделы (например: «Планы», «Отчёты о работе»)page_documents— документы с полями: название, дата документа, файл, MIME-тип, размер, порядок
Таблицы подключены к Supabase Storage (бакет content-files, папка docs/). Настроен RLS — публичное чтение, запись только через сервер.
API (7 эндпоинтов)
Все операции записи доступны только для ролей editor и admin.
Компонент управления (DocumentsManager.vue)
Панель отображается на /about/documents только авторизованным редакторам и администраторам.
Загрузка документа:
- Выбор раздела из существующих
- Название документа (заполняется автоматически из имени файла, можно изменить)
- Дата документа (в произвольном формате, например
01.02.2025) - Выбор файла — тип и размер определяются автоматически
Управление разделами:
- Создать новый раздел
- Удалить раздел (все файлы раздела удаляются из Storage вместе с ним)
Список документов:
- Отображается по разделам
- Для каждого документа: иконка типа, название, дата, размер, кнопки скачать и удалить
Скачивание с русским именем файла
Файлы в Storage хранятся с транслитерированными именами (требование URL). При скачивании используется серверный прокси /api/page-documents/[id], который:
- Загружает файл из Supabase Storage
- Выставляет заголовок
Content-Disposition: attachment; filename*=UTF-8''...по стандарту RFC 5987 - Браузер сохраняет файл под правильным русским именем, например:
Устав Библиотеки (новая редакция).pdf
Отображение на публичной части
- Если в БД есть документы — отображаются они через компонент
CompactDocumentList - Если БД пуста — fallback на статические данные из MD-файла (обратная совместимость)
Миграция
Перед использованием необходимо применить SQL-миграцию в Supabase Dashboard → SQL Editor:
supabase/migrations/20260512000001_page_documents.sql