Файлы и офлайн-чек-лист
Вложения
К задаче можно прикрепить:
- JPEG;
- PNG;
- WebP;
- GIF;
- PDF.
Ограничения:
- размер одного файла — до 15 МБ;
- не больше 20 вложений на задачу;
- пустой файл отклоняется;
- тип определяется по
Content-Type, а не только по расширению.
Фото отображаются превью, PDF — карточкой с именем файла. Файл открывается в новой вкладке через защищённый endpoint хранилища.
Загрузка и удаление
- Откройте карточку задачи.
- Нажмите «Добавить фото или PDF».
- Выберите файл.
Загрузка доступна создателю, ответственному, пользователю с edit_all и
company-account. Файл привязывается к компании и задаче.
При удалении вложения удаляется и запись в задаче, и объект в хранилище. Восстановить удалённый файл через интерфейс нельзя.
Безопасность
- файлы не отдаются публично;
- доступ проверяется по авторизации и компании;
- ключ хранилища содержит компанию и задачу;
- файл другой компании недоступен;
- удаление задачи мягкое и не удаляет файлы автоматически.
Офлайн-чек-лист
Офлайн-режим поддерживает только отметки пунктов чек-листа.
Как это работает:
- Карточка задачи уже открыта, и интернет пропал.
- Отметка пункта сразу меняется в интерфейсе.
- Изменение сохраняется в
localStorageбраузера. - Баннер показывает количество неотправленных изменений.
- При восстановлении сети очередь автоматически отправляется на сервер.
- После успешной отправки отметка удаляется из очереди.
Очередь хранится отдельно для каждой задачи.
Ограничения офлайн-режима
- Нужна уже открытая карточка задачи.
- После перезагрузки страницы без сети карточка не загрузится.
- Список задач не кэшируется service worker: данные всегда запрашиваются с сервера.
- Комментарии, вложения, создание и завершение задачи офлайн не поддерживаются.
- Фоновая синхронизация после закрытия вкладки не гарантируется.
- Если задачу успел изменить другой сотрудник, отправка получит
409; очередь останется, пока карточка не будет обновлена. - Очередь хранится в браузере. На общем терминале очищайте данные сайта после смены сотрудника.
Почему задачи не кэшируются PWA
Task API намеренно исключён из service worker cache. Кэш браузера не разделяет данные по пользователю, поэтому на общем терминале после смены сотрудника можно было бы увидеть чужие задачи, комментарии и связи с гостями.
Офлайн-очередь чек-листа реализована отдельно и не требует кэша API.