Технічне завдання VDoc K2 ERP: відмінності між версіями
R (обговорення | внесок) Створена сторінка: = Технічне завдання на модуль VDoc для K2 ERP = == 1. Загальна інформація == Модуль '''VDoc''' у складі '''K2 ERP''' призначений для централізованого зберігання файлів, керування каталогами, контролю версій, ведення історії змін, налаштування прав доступу, перегляду фа... |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 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. Що відбувається при деактивації файлу === | ||
При натисканні дії ''' | При натисканні дії '''Видалити''' або '''Деактивувати''' система повинна: | ||
# Перевірити права користувача. | # Перевірити права користувача. | ||
# Запитати підтвердження дії. | # Запитати підтвердження дії. | ||
# | # Встановити для запису файлу значення '''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: | ||
| Коли файл взяли в роботу. | | Коли файл взяли в роботу. | ||
|- | |- | ||
| | | Active | ||
| Ознака | | Ознака активності запису. '''Active = true''' — файл активний. '''Active = false''' — файл деактивований і прихований зі звичайного списку. | ||
|- | |- | ||
| | | deactivated_by | ||
| Хто | | Хто перевів файл у стан '''Active = false'''. | ||
|- | |- | ||
| | | 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;" | ||