Поля контента#

Классы полей#

  • Поля класса system управляются core и НЕ ДОЛЖНЫ редактироваться пользователем вручную.
  • Поля класса user_editable видимы и редактируемы пользователем.
  • Поля класса computed вычисляются core и ДОЛЖНЫ рассматриваться как read-only.

Базовый набор общих полей#

system#

  • id - неизменяемый идентификатор записи.
  • library_id - идентификатор библиотеки-владельца.
  • created_at - момент создания.
  • updated_at - момент последнего изменения.
  • status_changed_at - момент последней смены статуса.

user_editable#

  • content_type - обязательный ключ типа.
  • content_subtype - опциональный ключ подтипа.
  • title - заголовок записи.
  • status - inbox | todo | in_progress | skimmed | done | dropped.
  • priority - low | medium | high.
  • rating - опциональная целочисленная оценка в диапазоне 1..10.
  • recommendation - опциональный маркер рекомендации: recommended | neutral | not_recommended.
  • favorite - независимый флаг избранного.
  • archived - независимый флаг архивирования.
  • parent_content_id - опциональная родительская связь.
  • source_url - опциональная ссылка на источник.
  • summary - опциональное краткое описание.

computed#

  • search_text - нормализованный текстовый индекс для быстрого поиска.
  • last_activity_at - вычисляемое время последней активности.
  • is_completed - вычисляемый флаг завершенности по статусу.

Модель вложений#

  • Записи контента МОГУТ иметь несколько связанных вложений.
  • Связи вложений моделируются как связанные сущности, а не как единичные фиксированные поля.
  • Базовые поля вложения: id, content_id, uri, name (optional), mime (optional), size (optional), created_at.
  • Baseline файл датасета для export/import вложений: attachments.ndjson.

Правила#

  • Клиенты ДОЛЖНЫ запрещать редактирование полей классов system и computed.
  • Core ДОЛЖЕН поддерживать консистентность всех computed полей.
  • При создании записи status РЕКОМЕНДУЕТСЯ автоматически устанавливать в inbox.
  • При создании записи priority РЕКОМЕНДУЕТСЯ оставлять пустым по умолчанию, если значение явно не задано.
  • При смене статуса ДОЛЖЕН обновляться status_changed_at, при этом updated_at НЕ ДОЛЖЕН обновляться.
  • При изменении флага favorite поле updated_at НЕ ДОЛЖНО обновляться.
  • При изменении флага archived поле updated_at НЕ ДОЛЖНО обновляться.
  • Если rating задан, значение ДОЛЖНО находиться в диапазоне 1..10.
  • Пользовательские поля, кроме content_type и status, не обязательны в момент создания и могут заполняться позже.
  • Type-specific поля не являются обязательными в baseline и становятся обязательными только если пользовательская схема помечает их как required.
  • Реализация МОЖЕТ добавлять дополнительные поля любого класса как implementation-defined расширения.

Связанные разделы#