Appearance
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_attimestamp) + 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-idheaders
Required Headers (все /api/v1 endpoints)
| Header | Описание |
|---|---|
app-user-id | UUID пользователя |
app-space-id | UUID пространства |
Authorization | Bearer <JWT token> |
Структура БД
Таблица documents
| Колонка | Описание |
|---|---|
id | UUID PK |
name | Название (varchar 255) |
body | Содержимое (text) |
type | Тип (wysiwyg/markdown/case-diagram/custom) |
space_id | UUID пространства (indexed) |
parent_id | UUID родителя (self-ref FK, CASCADE delete, indexed) |
deleted_at | Soft delete timestamp (indexed) |
Таблица favorites
| Колонка | Описание |
|---|---|
id | UUID PK |
user_id | UUID пользователя (indexed) |
document_id | UUID документа (FK, CASCADE delete, indexed) |
space_id | UUID пространства (indexed) |
| UNIQUE | (user_id, document_id) |