tz-documents.md 11 KB

ТЗ: Модуль Документация

Связанные документы:

1. Назначение

Модуль Документация предназначен для централизованного хранения общих документов платформы Manager 2.0.

Типовые документы:

  • инструкции;
  • прайсы;
  • регламенты;
  • шаблоны;
  • технические файлы;
  • прочая документация.

2. Статус

Статус модуля: нужно реализовать.

Модуль должен быть доступен из верхнего меню Документация.

3. Место в меню

Целевое меню:

Документация

Требования:

  • добавить верхний пункт Документация;
  • пункт меню доступен всем авторизованным пользователям;
  • выбранный год в CRM не влияет на отображение и документы модуля;
  • внутри раздела отображается дерево папок и список документов выбранной папки.

4. Структура папок

Папки должны отображаться деревом.

Требования:

  • поддерживается вложенность папок;
  • корневые папки может создавать только администратор;
  • подпапки может создавать пользователь, у которого есть право записи на родительскую папку;
  • при создании подпапки права доступа наследуются от родительской папки;
  • права подпапки можно изменить отдельно, если у пользователя есть право управления/записи для этой папки;
  • папку можно переименовать при наличии права записи;
  • папку можно удалить при наличии права записи;
  • удаление папки должно учитывать вложенные папки, документы и версии документов.

5. Документы

Документ хранится внутри папки.

Функционал:

  • загрузка документа;
  • скачивание документа;
  • переименование документа;
  • удаление документа;
  • загрузка новой версии документа;
  • просмотр списка версий;
  • скачивание любой доступной версии;
  • полное удаление отдельной версии;
  • полное удаление всех версий при удалении документа;
  • отображение даты загрузки;
  • отображение автора загрузки;
  • поиск по названию документа.

Пользователь может создавать документы в папке, если у него есть право записи на эту папку.

6. Версионность

Для документов должна быть предусмотрена версионность.

Требования:

  • первая загрузка файла создает версию 1;
  • загрузка новой версии увеличивает номер версии;
  • у документа есть текущая активная версия;
  • пользователь может скачать текущую версию;
  • пользователь может открыть список предыдущих версий;
  • пользователь с правом записи может загрузить новую версию;
  • пользователь с правом записи может полностью удалить отдельную версию;
  • при полном удалении версии удаляются и метаданные версии, и физический файл;
  • если удаляется текущая версия, система должна назначить текущей последнюю оставшуюся версию;
  • если удалены все версии документа, документ считается удаленным;
  • при удалении документа удаляются все его версии.

7. Права доступа

Читать общедоступную документацию могут все авторизованные пользователи.

Управление доступом задается на уровне папки. Документы внутри папки наследуют права папки, если для документа не задано отдельное правило.

7.1 Администратор

Администратор:

  • создает корневые папки;
  • видит все папки и документы;
  • может назначать права чтения и записи;
  • может создавать, редактировать и удалять папки и документы;
  • может удалять версии документов.

7.2 Права на папку

На папку назначаются права:

  • чтение;
  • запись.

Право чтения дает возможность:

  • видеть папку в дереве;
  • видеть документы внутри папки;
  • скачивать доступные документы и версии.

Право записи дает возможность:

  • создавать подпапки;
  • создавать документы;
  • загружать новые версии документов;
  • переименовывать папки и документы;
  • удалять папки, документы и версии;
  • изменять права дочерних объектов, если это разрешено общей моделью управления.

7.3 Субъекты доступа

Права чтения и записи могут назначаться:

Субъект Описание
Все Все авторизованные пользователи.
Роль Все пользователи выбранной роли.
Пользователь Конкретный пользователь.

Пример: папку могут читать роль Администратор и пользователь Иванов.

7.4 Наследование

Требования:

  • подпапка при создании наследует права родительской папки;
  • документ при создании наследует права папки;
  • если права на дочерний объект не переопределены, используются права родителя;
  • если права переопределены, дочерний объект использует собственные настройки;
  • пользователь с правом записи на папку может создавать подпапки и документы в этой папке.

8. Permission-модель

Целевые системные права:

  • documents.view — вход в раздел документации;
  • documents.update — административное управление документацией, включая создание корневых папок и настройку прав.

Администратор имеет все права по умолчанию.

Права чтения/записи на конкретные папки и документы хранятся отдельно от системных permissions.

9. Хранение

Требования:

  • использовать текущий файловый механизм проекта;
  • физические файлы хранить в стандартном storage проекта;
  • хранить метаданные папок, документов, версий и правил доступа в БД;
  • для версии хранить номер версии, имя файла, путь, размер, автора загрузки и дату загрузки;
  • при полном удалении версии удалять физический файл и запись версии;
  • при полном удалении документа удалять все версии и физические файлы.

10. Поиск и отображение

Функционал:

  • дерево папок;
  • список документов выбранной папки;
  • поиск по названию документа;
  • отображение текущей версии;
  • отображение даты последнего обновления;
  • отображение автора последнего обновления;
  • отображение доступных действий согласно правам пользователя.

11. Критерии приемки

  • Пункт Документация есть в верхнем меню.
  • Раздел доступен всем авторизованным пользователям.
  • Папки отображаются деревом.
  • Корневые папки может создавать только администратор.
  • Пользователь с правом записи на папку может создавать в ней подпапки и документы.
  • Подпапки наследуют права родительской папки.
  • Документы наследуют права папки.
  • На папку можно назначить права чтения и записи для всех, ролей и отдельных пользователей.
  • Документы поддерживают версии.
  • Можно загрузить новую версию документа.
  • Можно скачать предыдущую версию документа.
  • Можно полностью удалить отдельную версию документа.
  • При удалении документа удаляются все его версии.
  • Файлы хранятся в текущем файловом механизме проекта.