Технічне завдання VDoc K2 ERP: відмінності між версіями

Створена сторінка: = Технічне завдання на модуль VDoc для K2 ERP = == 1. Загальна інформація == Модуль '''VDoc''' у складі '''K2 ERP''' призначений для централізованого зберігання файлів, керування каталогами, контролю версій, ведення історії змін, налаштування прав доступу, перегляду фа...
 
Немає опису редагування
 
Рядок 3: Рядок 3:
== 1. Загальна інформація ==
== 1. Загальна інформація ==


Модуль '''VDoc''' у складі '''K2 ERP''' призначений для централізованого зберігання файлів, керування каталогами, контролю версій, ведення історії змін, налаштування прав доступу, перегляду файлів, поширення файлів та захисту документів від безповоротного видалення.
Модуль '''VDoc''' у складі '''K2 ERP''' призначений для централізованого зберігання файлів, керування каталогами, контролю версій, ведення історії змін, налаштування прав доступу, перегляду файлів, поширення файлів та захисту корпоративних даних від випадкової втрати.


VDoc має працювати як корпоративне файлове сховище з контролем доступу, історією змін і можливістю зберігати важливі документи, відео, презентації, інструкції, технічні завдання, шаблони, договори, матеріали для клієнтів, навчальні файли та інші дані компанії.
VDoc має працювати як корпоративне файлове сховище з контролем доступу, історією змін, версіями файлів і можливістю зберігати важливі документи, відео, презентації, інструкції, технічні завдання, шаблони, договори, матеріали для клієнтів, навчальні файли та інші дані компанії.


{| class="wikitable" style="width:100%; background:#e8f5e9; border-left:6px solid #2e7d32;"
{| class="wikitable" style="width:100%; background:#e8f5e9; border-left:6px solid #2e7d32;"
|-
|-
| '''Головна ідея VDoc:''' файл після потрапляння в систему не повинен зникати безслідно. Він може бути замінений новою версією, прихований, позначений на видалення або обмежений правами доступу, але історія його існування повинна залишатися в системі.
| '''Головна ідея VDoc:''' файл після потрапляння в систему не повинен зникати безслідно. Він може бути замінений новою версією, прихований через '''Active = false''', обмежений правами доступу або поширений за правилами, але історія його існування повинна залишатися в системі.
|}
|}


Рядок 21: Рядок 21:
* зберігати історію зміни файлів;
* зберігати історію зміни файлів;
* вести версії файлів;
* вести версії файлів;
* фіксувати всі дії користувачів;
* фіксувати всі важливі дії користувачів;
* дозволяти перегляд файлів у браузері;
* дозволяти перегляд файлів у браузері;
* дозволяти завантаження файлів;
* дозволяти завантаження файлів;
* дозволяти поширення файлів через посилання або спеціальну дію;
* дозволяти поширення файлів через посилання або внутрішні права доступу;
* заборонити фізичне видалення файлів звичайними користувачами;
* заборонити фізичне видалення файлів звичайними користувачами;
* дозволити тільки позначку файлу на видалення;
* використовувати деактивацію файлу через '''Active = false''';
* вести довідники типів файлів, розширень, заборонених файлів і статусів документів;
* вести довідники типів файлів, розширень, заборонених файлів і статусів документів;
* надати адміністраторам інструменти керування структурою сховища.
* надати адміністраторам інструменти керування структурою сховища.
Рядок 40: Рядок 40:
|-
|-
| '''VDoc'''
| '''VDoc'''
| Основний файловий менеджер: каталоги, файли, перегляд, завантаження, поширення, права.
| Основний файловий менеджер: каталоги, файли, перегляд, завантаження, поширення, права доступу.
|-
|-
| '''Категорії типів файлів'''
| '''Категорії типів файлів'''
Рядок 99: Рядок 99:
* дочірні каталоги;
* дочірні каталоги;
* коментар;
* коментар;
* ознаку закритого доступу;
* ознаку активності;
* права доступу;
* права доступу;
* історію змін;
* історію змін;
Рядок 125: Рядок 125:
| Встановлення прав доступу для ролей або користувачів.
| Встановлення прав доступу для ролей або користувачів.
|-
|-
| '''Позначити на видалення'''
| '''Деактивувати каталог'''
| Каталог не видаляється фізично, а отримує службову ознаку видалення.
| Каталог не видаляється фізично, а отримує значення '''Active = false'''.
|-
| '''Відновити каталог'''
| Повернення каталогу до активного стану через '''Active = true'''.
|-
|-
| '''Переглянути історію'''
| '''Переглянути історію'''
Рядок 182: Рядок 185:
|-
|-
| '''Actions'''
| '''Actions'''
| Додаткові дії: редагування, історія, права, позначка на видалення.
| Додаткові дії: редагування, історія, права, деактивація, відновлення.
|}
|}


Рядок 218: Рядок 221:
| Встановити доступ для користувачів або ролей.
| Встановити доступ для користувачів або ролей.
|-
|-
| '''Позначити на видалення'''
| '''Деактивувати'''
| Поставити службову ознаку видалення без фізичного видалення файлу.
| Встановити для файлу '''Active = false''' без фізичного видалення.
|-
| '''Відновити'''
| Встановити для файлу '''Active = true'''.
|-
|-
| '''Переглянути історію'''
| '''Переглянути історію'''
Рядок 229: Рядок 235:
Файл у VDoc не повинен фізично видалятися звичайним користувачем.
Файл у VDoc не повинен фізично видалятися звичайним користувачем.


Замість видалення використовується механізм '''позначки на видалення'''.
Замість фізичного видалення використовується механізм деактивації запису:
 
'''Active = false'''
 
При цьому сам файл, його версії, історія змін, права доступу та службова інформація залишаються в системі.


{| class="wikitable" style="width:100%; background:#ffebee; border-left:6px solid #c62828;"
{| class="wikitable" style="width:100%; background:#ffebee; border-left:6px solid #c62828;"
|-
|-
| '''Заборонено:''' звичайний користувач не може безповоротно видалити файл із системи. Видалення має бути замінене на службову ознаку «позначено на видалення».
| '''Заборонено:''' звичайний користувач не може безповоротно видалити файл із системи. При видаленні файл повинен отримувати ознаку '''Active = false''', але фізично залишатися у сховищі.
|}
|}


=== 8.1. Що відбувається при позначці на видалення ===
=== 8.1. Що відбувається при деактивації файлу ===


При натисканні дії '''Позначити на видалення''' система повинна:
При натисканні дії '''Видалити''' або '''Деактивувати''' система повинна:


# Перевірити права користувача.
# Перевірити права користувача.
# Запитати підтвердження дії.
# Запитати підтвердження дії.
# Поставити файлу службову ознаку '''deleted_mark = true''' або аналогічну.
# Встановити для запису файлу значення '''Active = false'''.
# Зафіксувати дату і час дії.
# Зафіксувати дату і час дії.
# Зафіксувати користувача, який виконав дію.
# Зафіксувати користувача, який виконав дію.
# Записати дію в історію.
# Записати дію в історію.
# Приховати файл зі звичайного списку, якщо включений фільтр активних файлів.
# Приховати файл зі звичайного списку активних файлів.
# Залишити файл доступним адміністратору або користувачу з правом перегляду видалених.
# Залишити файл доступним адміністратору або користувачу з правом перегляду неактивних записів.
 
Фізичний файл, усі його версії та історія змін при цьому не видаляються.


=== 8.2. Відновлення файлу ===
=== 8.2. Відновлення файлу ===


Адміністратор або користувач з відповідним правом повинен мати можливість зняти позначку видалення.
Адміністратор або користувач з відповідним правом повинен мати можливість відновити файл.


Після відновлення:
При відновленні система повинна:


* файл повертається в список активних файлів;
# Перевірити право користувача на відновлення.
* у історію записується дія відновлення;
# Встановити для запису файлу значення '''Active = true'''.
* попередні версії та права не повинні втрачатися.
# Повернути файл у список активних файлів.
# Записати дію відновлення в історію.
# Зберегти всі попередні версії, права доступу та службові дані.
 
Після відновлення файл повинен працювати так само, як і до деактивації.


== 9. Версії файлів ==
== 9. Версії файлів ==
Рядок 353: Рядок 369:
* хто змінив права;
* хто змінив права;
* хто взяв файл у роботу;
* хто взяв файл у роботу;
* хто позначив файл на видалення;
* хто встановив '''Active = false''';
* хто відновив файл;
* хто відновив файл через '''Active = true''';
* коли і що саме відбулося.
* коли і що саме відбулося.


Рядок 400: Рядок 416:
| Змінено права
| Змінено права
| Додано доступ ролі «Бізнес-аналітик».
| Додано доступ ролі «Бізнес-аналітик».
|-
| 24.06.2026 10:30
| Користувач 5
| Деактивовано файл
| Встановлено Active = false.
|-
| 24.06.2026 11:00
| Адміністратор
| Відновлено файл
| Встановлено Active = true.
|}
|}


Рядок 580: Рядок 606:
| Користувач може створювати посилання або надавати доступ.
| Користувач може створювати посилання або надавати доступ.
|-
|-
| '''Позначати на видалення'''
| '''Деактивувати файл'''
| Користувач може поставити ознаку видалення.
| Користувач може встановити '''Active = false'''.
|-
|-
| '''Переглядати видалені'''
| '''Переглядати неактивні'''
| Користувач може бачити файли, позначені на видалення.
| Користувач може бачити файли з '''Active = false'''.
|-
|-
| '''Відновлювати файли'''
| '''Відновлювати файли'''
| Користувач може знімати позначку видалення.
| Користувач може встановити '''Active = true'''.
|}
|}


Рядок 674: Рядок 700:
| Ні
| Ні
|-
|-
| Позначка на видалення
| Деактивація файлу
| Так
| Так
| За правами
| За правами
Рядок 682: Рядок 708:
| Ні
| Ні
|-
|-
| Перегляд історії
| Перегляд неактивних файлів
| Так
| Так
| За правами
| За правами
| За правами
| Ні
| Свої
| Ні
| Ні / за правами
| Ні
| Ні
| Ні
|-
|-
Рядок 696: Рядок 722:
| Ні
| Ні
| Ні
| Ні
| Ні
|-
| Перегляд історії
| Так
| За правами
| За правами
| Свої
| Ні / за правами
| Ні
| Ні
|}
|}
Рядок 909: Рядок 943:
# Зберегти файл у сховищі.
# Зберегти файл у сховищі.
# Створити запис у таблиці файлів.
# Створити запис у таблиці файлів.
# Встановити для нового файлу '''Active = true'''.
# Створити першу версію файлу.
# Створити першу версію файлу.
# Записати дію в історію.
# Записати дію в історію.
Рядок 928: Рядок 963:
         |
         |
         v
         v
[ Створення запису файлу ]
[ Створення запису файлу: Active = true ]
         |
         |
         v
         v
Рядок 942: Рядок 977:


# Перевірити право користувача на запис файлу.
# Перевірити право користувача на запис файлу.
# Перевірити, що файл має '''Active = true'''.
# Перевірити, чи не заблокований файл іншим користувачем.
# Перевірити, чи не заблокований файл іншим користувачем.
# Перевірити розширення і заборонені файли.
# Перевірити розширення і заборонені файли.
Рядок 956: Рядок 992:


# Перевірити право читання файлу.
# Перевірити право читання файлу.
# Перевірити, що файл має '''Active = true''', або що користувач має право переглядати неактивні файли.
# Визначити тип файлу.
# Визначити тип файлу.
# Визначити доступний спосіб перегляду.
# Визначити доступний спосіб перегляду.
Рядок 966: Рядок 1003:


# Перевірити право на завантаження.
# Перевірити право на завантаження.
# Перевірити, що файл має '''Active = true''', або що користувач має право працювати з неактивними файлами.
# Визначити актуальну версію файлу.
# Визначити актуальну версію файлу.
# Передати файл користувачу.
# Передати файл користувачу.
Рядок 976: Рядок 1014:


# Перевірити право на поширення.
# Перевірити право на поширення.
# Перевірити, що файл має '''Active = true'''.
# Відкрити форму налаштування поширення.
# Відкрити форму налаштування поширення.
# Дозволити обрати тип доступу.
# Дозволити обрати тип доступу.
Рядок 981: Рядок 1020:
# Записати дію в історію.
# Записати дію в історію.
# Показати користувачу результат.
# Показати користувачу результат.
Неактивні файли з '''Active = false''' не повинні поширюватися звичайними користувачами.


== 26. Схема життєвого циклу файлу ==
== 26. Схема життєвого циклу файлу ==
Рядок 986: Рядок 1027:
<pre>
<pre>
[ Завантажено файл ]
[ Завантажено файл ]
        |
        v
[ Створено запис: Active = true ]
         |
         |
         v
         v
Рядок 1003: Рядок 1047:
         |
         |
         v
         v
[ Файл може бути закритий або позначений на видалення ]
[ Файл може бути закритий або деактивований ]
         |
         |
         v
         v
[ Файл залишається в системі з історією ]
[ Active = false, але файл залишається в системі ]
</pre>
</pre>


Рядок 1022: Рядок 1066:
* по розміру;
* по розміру;
* по статусу;
* по статусу;
* по ознаці видалення;
* по ознаці '''Active''';
* по каталогу.
* по каталогу.


Рядок 1079: Рядок 1123:
| Так
| Так
|-
|-
| Позначка на видалення
| Встановлення Active = false
| Так
| Так
|-
|-
| Відновлення файлу
| Встановлення Active = true
| Так
| Так
|}
|}
Рядок 1099: Рядок 1143:
* логування критичних дій;
* логування критичних дій;
* заборону фізичного видалення для звичайних користувачів;
* заборону фізичного видалення для звичайних користувачів;
* деактивацію файлів через '''Active = false''';
* контроль зовнішніх посилань;
* контроль зовнішніх посилань;
* можливість вимикати зовнішні посилання.
* можливість вимикати зовнішні посилання.
Рядок 1112: Рядок 1157:
* можна було відновити файл з історії;
* можна було відновити файл з історії;
* можна було знайти всі версії одного файлу;
* можна було знайти всі версії одного файлу;
* можна було переміщувати файл між каталогами без втрати історії.
* можна було переміщувати файл між каталогами без втрати історії;
* при '''Active = false''' фізичний файл не видалявся зі сховища.


== 32. Рекомендована структура даних ==
== 32. Рекомендована структура даних ==
Рядок 1197: Рядок 1243:
| Коли файл взяли в роботу.
| Коли файл взяли в роботу.
|-
|-
| deleted_mark
| Active
| Ознака позначки на видалення.
| Ознака активності запису. '''Active = true''' — файл активний. '''Active = false''' — файл деактивований і прихований зі звичайного списку.
|-
|-
| deleted_by
| deactivated_by
| Хто позначив на видалення.
| Хто перевів файл у стан '''Active = false'''.
|-
|-
| deleted_at
| deactivated_at
| Коли позначено на видалення.
| Коли файл був переведений у стан '''Active = false'''.
|}
|}


Рядок 1299: Рядок 1345:
* коли файл був змінений;
* коли файл був змінений;
* чи є нові версії;
* чи є нові версії;
* чи файл позначений на видалення.
* чи файл активний;
* чи файл деактивований через '''Active = false'''.


== 37. Вимоги до інтерфейсу для адміністратора ==
== 37. Вимоги до інтерфейсу для адміністратора ==
Рядок 1309: Рядок 1356:
* переміщувати каталоги;
* переміщувати каталоги;
* налаштовувати права;
* налаштовувати права;
* переглядати видалені файли;
* переглядати неактивні файли;
* відновлювати файли;
* відновлювати файли через '''Active = true''';
* переглядати історію;
* переглядати історію;
* керувати типами файлів;
* керувати типами файлів;
Рядок 1337: Рядок 1384:
| 3
| 3
| Завантаження файлу
| Завантаження файлу
| Файл зберігається у системі, створюється перша версія.
| Файл зберігається у системі, створюється перша версія, встановлюється '''Active = true'''.
|-
|-
| 4
| 4
Рядок 1357: Рядок 1404:
| 8
| 8
| Поширення
| Поширення
| Користувач з правами може поширити файл.
| Користувач з правами може поширити активний файл.
|-
|-
| 9
| 9
| Заборона видалення
| Заборона фізичного видалення
| Файл не видаляється фізично, а тільки позначається на видалення.
| Файл не видаляється фізично. При видаленні встановлюється '''Active = false'''.
|-
|-
| 10
| 10
| Відновлення
| Відновлення
| Адміністратор може відновити позначений файл.
| Адміністратор може відновити файл через встановлення '''Active = true'''.
|-
|-
| 11
| 11
Рядок 1404: Рядок 1451:
* файли можна переглядати, завантажувати і поширювати;
* файли можна переглядати, завантажувати і поширювати;
* небезпечні або службові файли блокуються;
* небезпечні або службові файли блокуються;
* видалення замінене на безпечну позначку;
* фізичне видалення замінене на безпечну деактивацію через '''Active = false''';
* адміністратор може відновити або перевірити історію файлу.
* адміністратор може відновити файл через '''Active = true''';
* система зберігає повну історію руху файлу.


{| class="wikitable" style="width:100%; background:#e3f2fd; border-left:6px solid #1565c0;"
{| class="wikitable" style="width:100%; background:#e3f2fd; border-left:6px solid #1565c0;"