Skip to content

Documents

Назначение

Сервис управления документами в мультитенантных пространствах (spaces). Обеспечивает полный жизненный цикл документов: создание, иерархическая деревевидная организация, избранное, soft/hard удаление, дублирование, перемещение, автоматическое создание при создании пространства.

Порты

  • HTTP: 8093
  • БД: documents_db

Ключевые возможности

  • CRUD документов с иерархической деревевидной структурой (parent_id — self-referential FK)
  • Типы документов: wysiwyg (по умолчанию), markdown, case-diagram, custom
  • Tree endpoint: вложенная JSON-структура всех документов
  • Breadcrumb path при получении одного документа (путь от корня)
  • Soft delete (с deleted_at timestamp) + hard delete (каскадно с дочерними)
  • Восстановление soft-deleted документов
  • Дублирование с автогенерацией имён: "Name (1)", "Name (2)"
  • Перемещение между родителями (или в корень)
  • Избранное: per-user, per-space, уникальный constraint (user_id, document_id)
  • Event-driven: подписка на spaces.created-with-user-creation → автосоздание дефолтного документа
  • HTTP event endpoint: POST /api/v1/events для внешних событий
  • Аутентификация: JWT Bearer + app-user-id + app-space-id headers

Required Headers (все /api/v1 endpoints)

HeaderОписание
app-user-idUUID пользователя
app-space-idUUID пространства
AuthorizationBearer <JWT token>

Структура БД

Таблица documents

КолонкаОписание
idUUID PK
nameНазвание (varchar 255)
bodyСодержимое (text)
typeТип (wysiwyg/markdown/case-diagram/custom)
space_idUUID пространства (indexed)
parent_idUUID родителя (self-ref FK, CASCADE delete, indexed)
deleted_atSoft delete timestamp (indexed)

Таблица favorites

КолонкаОписание
idUUID PK
user_idUUID пользователя (indexed)
document_idUUID документа (FK, CASCADE delete, indexed)
space_idUUID пространства (indexed)
UNIQUE(user_id, document_id)