Диск: бизнес-логика¶
Обзор¶
disk — пользовательский контур файлового хранилища: папки, файлы, права, журнал действий и связь с задачами.
Важно: домен disk описывает пользовательские сценарии и права. Низкоуровневое хранение/провайдеры детально лежат в домене files.
Предметная модель¶
1. Раздел диска¶
Система показывает пользователю системные разделы:
| Раздел | Описание |
|---|---|
| Мои файлы | Личные файлы пользователя. Не видны другим, кроме прямых руководителей |
| Общие файлы | Совместное использование. По умолчанию все сотрудники компании могут создавать папки и файлы (признак «Сотрудник компании» — в настройках профиля). Не отображается для не-сотрудников. Подпапки наследуют права родительской по умолчанию |
| Обмен файлами (с 2.263) | Раздел доступен всем зарегистрированным пользователям, но доступ к файлам и папкам — только у владельца и администраторов. Владелец может предоставить доступ как сотрудникам, так и внешним пользователям. Используется для передачи файлов внешним |
| Файлы автоматизации | Папки, привязанные к задачам через смарт-автоматизацию. Видны только сотрудникам компании с правами администратора. Содержит системную подпапку Export configurations для выгрузок конфигурации площадки |
| Файлы замещаемых | Содержимое «Моих файлов» замещаемых сотрудников в подпапках. Отображается при наличии замещения |
| Файлы подчинённых | Содержимое «Моих файлов» подчинённых в подпапках. Отображается у руководителей |
2. Папка¶
Папка — базовый контейнер структуры диска.
- хранится в
FileStorageFolders - имеет владельца и иерархию
- доступ к папке определяется правами пользователя/группы
3. Файл и версия¶
- файл:
FileStorageFiles - версии:
FileStorageFileVersions
Пользователь работает с «файлом», но в модели всегда есть версия.
4. Связь с задачей и ДП¶
- файл в задаче:
FileStorageFileToTaskLinks - файл в ДП:
FileStorageFileToExtParamLinks - связанная папка задачи:
FileStorageFolderToTaskLinks
Ключевые бизнес-правила¶
1. Квота личного раздела¶
- контролируется
Settings.FileStorageUserPartitionQuota - при
0/nullраздел «Мои файлы» скрывается
2. Привязка папки к задаче¶
- выполняется смарт-действием
- связанная папка формирует единое место хранения файлов задачи и файловых ДП
3. Наследование доступа¶
- права к связанной папке формируются из прав к задаче
- учитываются роли, группы, подписки, замещение
4. Логирование операций¶
Операции чтения/изменения файлов могут попадать в журнал FileActionsLog.
Границы домена¶
Что относится к disk¶
- пользовательская навигация по папкам
- действия с файлами/папками
- доступность и права на уровне пользовательского UX
- журнал действий с диском
Что относится к files¶
- физическое хранение контента
- провайдеры (MSSQL/S3)
- форматы, конвертация, сжатие, внешние редакторы
Ссылки на Диск в комментариях задач¶
Ссылки на файлы и папки Диска могут содержаться в комментариях к задачам. Такие ссылки отображаются как обычный кликабельный текст.
- Нажатие на ссылку, ведущую на папку, открывает эту папку в разделе Диск.
- Нажатие на ссылку, ведущую на файл, открывает боковую панель предварительного просмотра (если текущий контекст это поддерживает — например, в ленте или в карточке задачи).
Ссылки формируются автоматически, в том числе в ответах AI-ассистента Анфисы при упоминании документов и файлов из Диска.
Интерфейс Диска¶
Открытие¶
- Из карточки задачи: тулбар → «Файлы» → «Диск» (открывается раздел, связанный с задачей).
- Из меню сервисов в панели навигации (общий Диск).
Виды отображения¶
В правом верхнем углу — переключатель: Таблица / Список. Выбор сохраняется per-пользователь.
Список: компактный формат с цветными иконками (зелёные — Excel, синие — Word, красные — изображения и PDF, серые — текстовые/архивы/неизвестные, оранжевые — папки), превью-аватарки изображений вместо иконки, имя в одну строку с обрезкой. v2.268+: дата и время отображаются в двух отдельных колонках — «Дата» и «Время» (формат HH:mm). Полное название и дата — в подсказке при наведении. Размеры: иконка 24px, превью 20px, высота строки 40px.
Таблица: расширенный вид с колонками имени, размера, даты и других атрибутов. v2.268+: в колонке даты дополнительно отображается время, если файл загружен или изменён сегодня (через стандартный humanDate pipe); для более ранних дат — только дата.
Сортировка¶
Сначала папки, затем файлы. Можно отсортировать по алфавиту или по типу — клик по заголовку столбца меняет направление.
Поиск¶
Поиск по всему доступному дисковому пространству (Мои файлы, Общие, Файлы автоматизации, Файлы подчинённых, Файлы замещаемых). Ищет по названию папок/файлов и по содержимому файлов. Результаты — на отдельном экране «Результат поиска»; выбор вида («Список» / «Таблица») сохраняется.
В результатах общего поиска у каждого объекта Диска отображается путь от корня — последовательность папок. Переход из результата открывает папку напрямую без ручной навигации.
Просмотр файлов¶
Поведение зависит от размера экрана:
- LG / XL (большие) — клик по файлу открывает просмотрщик справа. Список сжимается, между ним и просмотрщиком — перетаскиваемый разделитель. По умолчанию ширина просмотрщика — 40% контейнера. До открытия файла панель скрыта. Закрытие: клик на другой элемент / снять выделение /
Ctrl+E/Cmd+E. - XS / SM / MD (малые) — файл открывается во весь экран в модальном окне (как в задачах и чатах).
Дерево папок и навигация¶
Разделы «Мои файлы», «Общие файлы», «Обмен файлами» можно раскрыть как дерево папок прямо в навигационной панели (шеврон слева от названия). В дереве — только папки, отсортированы по алфавиту; шеврон скрыт у папок без подпапок. Остальные системные разделы (Файлы автоматизации, замещаемых, подчинённых) — отдельной группой ниже без раскрытия.
Ширина навигационной панели — 336px.
Адрес папки в URL — формируется из имён папок (/disk/PublicFolder/Документы/Проекты), а не из числовых ID. Преимущества: понятная навигация, копирование читаемых ссылок. Кириллица, пробелы и спецсимволы обрабатываются корректно. Старые ID-ссылки автоматически перенаправляются на новый формат.
Не рекомендуется называть папки в корне раздела только цифрами — может конфликтовать со служебными ID. Если такая папка открывается некорректно — переименовать.
Лимит хранилища¶
По умолчанию объём хранилища одного пользователя — 5 ГБ (настройка Settings.FileStorageUserPartitionQuota). Если значение 0/null, раздел «Мои файлы» скрывается.
Что учитывается в лимите: только файлы в папках, где пользователь является владельцем. Файлы из задач, чатов и папок, к которым пользователь имеет доступ без права владения, — не учитываются.
Индикатор использования (v2.268+): в нижней части левой навигационной панели Диска отображается прогресс-бар с текущим объёмом занятого места. При наведении на блок — тултип: «Хранение учитывает все папки, где вы владелец папки». Данные берутся из GET /app/v1.2/api/filestorage/quota-usage (поля used / allowedTotal, значения в байтах).
| Заполненность | Цвет полоски | Значение |
|---|---|---|
| до 80% | Нейтральный | Норма |
| 80–95% | Оранжевый (warning) | Приближение к лимиту |
| выше 95% | Красный (danger) | Критический уровень |
При превышении лимита попытка загрузить файл в папку Диска блокируется с ошибкой в UI.
Контекстное меню (ПКМ)¶
Аналогично доступно через кнопку «...» рядом с папкой/файлом в навигации.
Действия с папкой:
| Пункт | Описание |
|---|---|
| Открыть | Перейти в папку |
| Создать папку | Модальное окно с именем |
| Создать документ → Текстовый документ / Таблица | Новый файл .docx / .xlsx с автоименем «Новый документ»/«Новая таблица» (с цифрой при дубликате) |
| Вложить файл | Загрузка с компьютера |
| Скачать все файлы и папки | Архив с содержимым |
| Права доступа | Модальное окно прав (см. ниже). Недоступно в «Мои файлы» |
| Переименовать | Модальное окно нового имени |
| Поделиться | Копирует ссылку формата https://{адрес}/spa/disk/PublicFolder/{FolderID} |
| Удалить | Недоступно в основных разделах |
Действия с файлом:
| Пункт | Описание |
|---|---|
| Открыть / Редактировать | Открыть файл / перейти в редактор |
| Скачать | Сохранить локально |
| Права доступа | Модальное окно прав. Недоступно в «Мои файлы». Не-администраторам доступен только пункт «Поделиться» |
| Зашифровать | Шифрует файл. Расшифровать обратно невозможно |
| История версий | Окно версий |
| Прикрепить в текущую задачу | Вкладывает файл в ленту задачи; помечается специальной иконкой |
| Прикрепить в ДП | Доступно только при переходе на Диск из ДП «Файл» |
| Поделиться | Копирует ссылку на файл |
| Удалить | Удалить файл |
Права доступа в «Общие файлы» и «Обмен файлами»¶
По умолчанию права в «Общих файлах» имеют группа Administrators, владелец папки и группа «Все пользователи». В группу «Все пользователи» входят только сотрудники компании; владелец и Administrators всегда сохраняют полные права. В разделе «Общие файлы» права можно выдавать только сотрудникам компании; для не-сотрудников — раздел «Обмен файлами».
Иконки прав на папку:
| Иконка | Право |
|---|---|
| Просмотр | Видеть содержимое папки |
| Добавление | Создавать файлы и подпапки |
| Редактирование | Изменять папку |
| Удаление | Удалять папку |
| История | Видеть историю |
Иконки прав на файл: Просмотр / Замена и редактирование (через Р7) / Удаление / История / Подписи ЭЦП / Создание задачи.
Правила выдачи прав:
- Пользователь не может сам себе выдать или забрать право — только владелец или администратор.
- Пользователь может выдавать другим только те права, которыми обладает сам (включая права через группы).
- Подпапка наследует права родителя при создании, но дальше не синхронизируется автоматически. Опция «Применить для всех вложенных папок» применяет права рекурсивно.
- Право «Чтение» на родительской папке расширяется на файлы внутри даже без явного указания.
Представление категории «Диск»¶
В представлении категории Диск задачи отображаются в виде папок, название папки соответствует тексту задачи. При открытии папки показываются вложения задачи.
В папке «Дополнительные параметры» создаются подпапки по названиям ДП; в них файлы сгруппированы по задачам, включая файлы из колонок ДП «Таблица».
Административные настройки файлового хранилища — см. admin.md.
Пользовательские сценарии¶
- Открыть диск и перейти в нужный раздел.
- Создать папку, загрузить файл, выдать доступ.
- Вставить файл из диска в файловый ДП задачи.
- Работать с файлами через связанную папку задачи.
- Проверять аудит действий в журнале диска.
- Поделиться ссылкой на папку или файл Диска в комментарии к задаче.
Поиск по диску¶
Поиск по Диску осуществляется через хранимую процедуру SearchDisk, которая поддерживает:
- Полнотекстовый поиск по названиям папок/файлов и содержимому файлов.
- Многотерминовый поиск — поиск по нескольким словам с разделителем
|(логическое ИЛИ). - Фильтрацию результатов по расширению файлов, владельцу и дате изменения.
Поиск выполняется по всему доступному дисковому пространству: «Мои файлы», «Общие файлы», «Файлы автоматизации», «Файлы подчинённых», «Файлы замещаемых».
Результаты отображаются на отдельном экране «Результат поиска» с указанием пути от корня для каждого объекта. Переход из результата открывает папку напрямую без ручной навигации.
Перекрестные зависимости¶
| Домен | Зависимость |
|---|---|
files |
базовые file API и провайдеры хранения |
tasks |
права и связка папок с задачами |
ext-params |
сценарии вставки из диска в ДП |
smart-actions |
автоматическое создание/привязка папок |
users-and-groups |
видимость функций диска и ограничения |
Связанные документы¶
docs/domains/disk/backend.mddocs/domains/disk/database.mddocs/domains/disk/data-flow.mddocs/domains/files/business.md