Атестаційні завдання K2 ERP/Система контролю версій: відмінності між версіями
R (обговорення | внесок) Первинна публікація |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Система контролю версій}} | |||
= Модуль контролю версій файлів, кодів і документів із журналом змін та можливістю відновлення = | '''Атестаційне завдання K2 ERP — Система контролю версій''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля контролю версій файлів, документів, програмного коду, дизайн-макетів та інших цифрових ресурсів. | ||
Модуль має забезпечувати зберігання історії змін, журнал дій користувачів, порівняння версій, відновлення попередніх станів, контроль доступу, аудит змін, резервне копіювання та зручну роботу з великими наборами файлів. | |||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
'''Коротко.''' Потрібно реалізувати систему контролю версій: проєкти, файли, версії, коміти, журнал змін, diff, відновлення версій, права доступу, аудит, резервні копії, ZIP-експорт, роботу з великими файлами і звіти. | |||
</div> | |||
__TOC__ | |||
== Назва завдання == | |||
'''Модуль контролю версій файлів, кодів і документів із журналом змін та можливістю відновлення'''. | |||
== Мета завдання == | |||
Мета завдання — створити в K2 ERP модуль для централізованого зберігання і контролю версій цифрових ресурсів. | |||
Система повинна дозволяти: | |||
* вести проєкти; | |||
* створювати структуру файлів у межах проєкту; | |||
* завантажувати початкові версії файлів; | |||
* додавати нові версії файлів; | |||
* зберігати старі версії без перезапису; | |||
* фіксувати автора кожної зміни; | |||
* зберігати опис зміни — commit message; | |||
* вести журнал змін; | |||
* порівнювати дві версії текстових файлів або коду; | |||
* відновлювати будь-яку попередню версію; | |||
* позначати поточну активну версію; | |||
* контролювати доступ до перегляду, редагування, завантаження і відновлення; | |||
* підтримувати архівування файлів; | |||
* формувати звіти про зміни; | |||
* працювати з великими файлами; | |||
* виконувати ZIP-експорт; | |||
* створювати резервні копії файлів і версій. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Головний принцип.''' Жодна зміна не повинна втрачатися: кожна версія має зберігатися окремо, мати автора, дату, опис змін і можливість відновлення. | |||
</div> | |||
== Реальний бізнес-контекст == | == Реальний бізнес-контекст == | ||
* | Підприємство або команда працює з цифровими файлами, які постійно змінюються: | ||
* | |||
* | * програмний код; | ||
* технічна документація; | |||
* договори; | |||
* інструкції; | |||
* дизайн-макети; | |||
* креслення; | |||
* презентації; | |||
* конфігураційні файли; | |||
* шаблони документів; | |||
* графіка; | |||
* відео або медіафайли; | |||
* внутрішні регламенти; | |||
* файли проєктів. | |||
Без системи контролю версій виникають типові проблеми: | |||
* незрозуміло, яка версія файлу актуальна; | |||
* старі файли випадково перезаписуються; | |||
* складно знайти автора змін; | |||
* неможливо швидко відновити попередню версію; | |||
* немає журналу змін; | |||
* немає контролю доступу; | |||
* файли зберігаються у різних папках або в різних користувачів; | |||
* зміни неможливо перевірити під час аудиту. | |||
Система контролю версій вирішує ці проблеми через централізоване зберігання файлів, історію змін і механізм відновлення. | |||
== Основний бізнес-процес == | |||
Типовий процес роботи виглядає так: | |||
# користувач створює проєкт; | |||
# у проєкті створюється файл або завантажується початкова версія; | |||
# система створює версію v1; | |||
# користувач редагує файл локально або готує нову версію; | |||
# завантажує нову версію в систему; | |||
# вказує опис змін; | |||
# система створює версію v2; | |||
# стара версія залишається в історії; | |||
# користувач може порівняти v1 і v2; | |||
# менеджер або адміністратор може переглянути журнал змін; | |||
# у разі помилки користувач відновлює попередню версію; | |||
# система створює нову версію на основі відновленої; | |||
# усі дії потрапляють у журнал аудиту. | |||
== Основні об’єкти модуля == | |||
{| class="wikitable" style="width:100%;" | |||
! Об’єкт | |||
! Призначення | |||
|- | |||
| Проєкти | |||
| Логічні групи файлів | |||
|- | |||
| Файли проєкту | |||
| Окремі файли, що мають історію версій | |||
|- | |||
| Версії файлів | |||
| Збережені стани файлу | |||
|- | |||
| Коміти | |||
| Описані зміни одного або кількох файлів | |||
|- | |||
| Журнал змін | |||
| Хронологія дій користувачів | |||
|- | |||
| Diff | |||
| Порівняння текстових версій | |||
|- | |||
| Відновлення | |||
| Повернення до попередньої версії | |||
|- | |||
| Права доступу | |||
| Хто може переглядати, змінювати, відновлювати або видаляти | |||
|- | |||
| Резервні копії | |||
| Захист від втрати файлів | |||
|- | |||
| Звіти | |||
| Аналітика по змінах, користувачах, проєктах і файлах | |||
|} | |||
== Довідник «Проєкти» == | |||
Проєкт об’єднує файли, версії і користувачів. | |||
== | == Поля проєкту == | ||
== | {| class="wikitable" style="width:100%;" | ||
! Поле | |||
! Опис | |||
|- | |||
| Назва проєкту | |||
| Назва системи, документації, сайту, дизайну або іншого набору файлів | |||
|- | |||
| Опис | |||
| Короткий опис проєкту | |||
|- | |||
| Відповідальний | |||
| Користувач або команда, яка відповідає за проєкт | |||
|- | |||
| Дата створення | |||
| Коли створено проєкт | |||
|- | |||
| Статус | |||
| Активний, архівований, закритий | |||
|- | |||
| Рівень доступу | |||
| Публічний для команди або обмежений | |||
|} | |||
== Довідник «Типи файлів» == | |||
Тип файлу допомагає фільтрувати і правильно обробляти версії. | |||
==== | == Приклади типів файлів == | ||
* програмний код; | * програмний код; | ||
* документація; | * документація; | ||
* конфігураційний файл; | |||
* графіка; | * графіка; | ||
* дизайн-макет; | |||
* креслення; | |||
* презентація; | |||
* таблиця; | |||
* текстовий документ; | |||
* архів; | |||
* медіафайл; | |||
* інше. | * інше. | ||
=== | == База «Файли проєкту» == | ||
Файл проєкту — це основний об’єкт, для якого ведеться історія версій. | |||
== Колонки бази файлів == | |||
{| class="wikitable" style="width:100%;" | |||
! Колонка | |||
! Опис | |||
|- | |||
| Проєкт | |||
| До якого проєкту належить файл | |||
|- | |||
| Назва файлу | |||
| Назва файлу або ресурсу | |||
|- | |||
| Шлях | |||
| Папка або логічний шлях у проєкті | |||
|- | |||
| Тип файлу | |||
| Код, документація, графіка тощо | |||
|- | |||
| Поточна версія | |||
| Актуальна версія | |||
|- | |||
| Статус | |||
| Активний, архівований, видалений | |||
|- | |||
| Відповідальний | |||
| Хто відповідає за файл | |||
|- | |||
| Дата останньої зміни | |||
| Коли файл змінювався востаннє | |||
|} | |||
== Поля файлу == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Проєкт | |||
| Батьківський проєкт | |||
|- | |||
| Назва файлу | |||
| Ім’я файлу | |||
|- | |||
| Шлях у проєкті | |||
| Наприклад: /docs/manual.docx або /src/app.py | |||
|- | |||
| Тип файлу | |||
| Код, документ, графіка, інше | |||
|- | |||
| Поточна версія | |||
| Версія, яка вважається актуальною | |||
|- | |||
| Розмір файлу | |||
| Поточний розмір | |||
|- | |||
| Формат | |||
| Розширення файлу | |||
|- | |||
| Відповідальний | |||
| Користувач, який відповідає за файл | |||
|- | |||
| Статус | |||
| Активний, архівований, видалений | |||
|} | |||
== Статуси файлу == | |||
{| class="wikitable" style="width:100%;" | |||
! Статус | |||
! Значення | |||
|- | |||
| Активний | |||
| Файл використовується | |||
|- | |||
| Архівований | |||
| Файл збережено для історії | |||
|- | |||
| Видалений | |||
| Файл позначено як видалений, але історія може зберігатися | |||
|- | |||
| Заблокований | |||
| Файл тимчасово недоступний для змін | |||
|} | |||
== База «Версії файлів» == | |||
Версії зберігають історію змін файлу. | |||
== Поля версії == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Файл | |||
| До якого файлу належить версія | |||
|- | |||
| Номер версії | |||
| v1, v2, v3 або інший формат | |||
|- | |||
| Дата оновлення | |||
| Коли створено версію | |||
|- | |||
| Автор змін | |||
| Хто завантажив версію | |||
|- | |||
| Опис змін | |||
| Commit message | |||
|- | |||
| Файл версії | |||
| Збережений файл | |||
|- | |||
| Розмір | |||
| Розмір файлу | |||
|- | |||
| Хеш | |||
| Контрольна сума, опціонально | |||
|- | |||
| Статус версії | |||
| Поточна, архівна, відновлена, відхилена | |||
|} | |||
== Правила версійності == | |||
Система повинна дотримуватись таких правил: | |||
* кожне завантаження створює нову версію; | |||
* стара версія не перезаписується; | |||
* кожна версія має автора; | |||
* кожна версія має дату і час; | |||
* кожна версія має опис змін; | |||
* тільки одна версія може бути поточною; | |||
* відновлення старої версії створює нову версію; | |||
* видалення версій дозволено тільки адміністраторам; | |||
* усі дії з версіями логуються. | |||
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;"> | |||
'''Важливо.''' Відновлення старої версії не повинно знищувати новіші версії. Система має створити нову версію на основі обраної старої. | |||
</div> | |||
== Коміти == | |||
Коміт — це логічна зміна одного або кількох файлів. | |||
== Поля коміту == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Проєкт | |||
| До якого проєкту належить коміт | |||
|- | |||
| Автор | |||
| Хто виконав зміну | |||
|- | |||
| Дата і час | |||
| Коли зроблено коміт | |||
|- | |||
| Опис змін | |||
| Commit message | |||
|- | |||
| Пов’язані файли | |||
| Один або кілька файлів | |||
|- | |||
| Версії | |||
| Які версії створено | |||
|- | |||
| Статус | |||
| Збережено, відхилено, відновлено | |||
|} | |||
== Приклади commit message == | |||
* додано нову інструкцію; | |||
* виправлено помилки в договорі; | |||
* оновлено конфігурацію; | |||
* додано новий дизайн-макет; | |||
* виправлено розрахунок у коді; | |||
* оновлено технічну документацію. | |||
== Порівняння версій — diff == | |||
Для текстових файлів і коду потрібно реалізувати порівняння версій. | |||
== Підтримувані формати для diff == | |||
* TXT; | |||
* HTML; | |||
* CSS; | |||
* JS; | |||
* PHP; | |||
* Python; | |||
* JSON; | |||
* XML; | |||
* YAML; | |||
* SQL; | |||
* Markdown; | |||
* інші текстові формати. | |||
== Що має показувати diff == | |||
* додані рядки; | |||
* видалені рядки; | |||
* змінені рядки; | |||
* номер рядка; | |||
* автора зміни, якщо можливо; | |||
* дату версії; | |||
* короткий опис змін. | |||
== Відновлення версій == | |||
Користувач із відповідними правами може відновити будь-яку попередню версію. | |||
== Логіка відновлення == | |||
# користувач відкриває файл; | |||
# переглядає історію версій; | |||
# обирає потрібну версію; | |||
# натискає '''«Відновити»'''; | |||
# система створює нову версію на основі обраної; | |||
# нова версія стає поточною; | |||
# дія записується в журнал змін; | |||
# у журналі видно, з якої версії виконано відновлення. | |||
== Журнал змін == | |||
Журнал змін — основа аудиту системи. | |||
== Журнал має містити == | |||
* дату і час; | |||
* користувача; | |||
* проєкт; | |||
* файл; | |||
* версію; | |||
* дію; | |||
* опис змін; | |||
* IP-адресу, опціонально; | |||
* старе і нове значення, якщо застосовується. | |||
== Дії для журналу == | |||
* створення проєкту; | |||
* створення файлу; | |||
* завантаження версії; | |||
* зміна опису; | |||
* зміна статусу; | |||
* відновлення версії; | |||
* архівування файлу; | |||
* видалення файлу; | |||
* завантаження файлу користувачем; | |||
* зміна прав доступу; | |||
* експорт архіву; | |||
* створення резервної копії. | |||
== Контроль доступу == | |||
Система має підтримувати права доступу на рівні проєкту, файлу або дії. | |||
== Права доступу == | |||
* перегляд проєкту; | |||
* перегляд файлу; | |||
* завантаження файлу; | |||
* створення файлу; | |||
* завантаження нової версії; | |||
* порівняння версій; | |||
* відновлення версії; | |||
* архівування файлу; | |||
* видалення файлу; | |||
* керування правами; | |||
* перегляд журналу аудиту; | |||
* експорт ZIP. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Критично.''' Користувач без відповідних прав не повинен бачити закритий проєкт, завантажувати файли, додавати нові версії або відновлювати попередні версії. | |||
</div> | |||
== Ролі користувачів == | |||
{| class="wikitable" style="width:100%;" | |||
! Роль | |||
! Можливості | |||
|- | |||
| Користувач | |||
| Переглядає доступні проєкти і файли | |||
|- | |||
| Редактор | |||
| Додає нові версії файлів і опис змін | |||
|- | |||
| Менеджер проєкту | |||
| Керує файлами проєкту, переглядає журнал змін, відновлює версії | |||
|- | |||
| Аудитор | |||
| Переглядає історію змін і звіти без права редагування | |||
|- | |||
| Адміністратор | |||
| Керує проєктами, правами, файлами, версіями і резервними копіями | |||
|- | |||
| Адміністратор системи | |||
| Налаштовує сховище, права, службові параметри і політики зберігання | |||
|} | |||
== Робота з великими файлами == | |||
Для великих файлів бажано реалізувати спеціальний механізм завантаження. | |||
== Вимоги до великих файлів == | |||
* chunk upload; | |||
* індикатор прогресу завантаження; | |||
* перевірка розміру файлу; | |||
* перевірка допустимого формату; | |||
* можливість повторити невдале завантаження; | |||
* збереження контрольної суми; | |||
* обмеження розміру відповідно до ролі або налаштувань. | |||
== ZIP-імпорт і ZIP-експорт == | |||
Опціонально система може підтримувати роботу з архівами. | |||
== ZIP-експорт має дозволяти == | |||
* експортувати один файл із усіма версіями; | |||
* експортувати поточні версії проєкту; | |||
* експортувати архів проєкту; | |||
* додавати журнал змін у ZIP; | |||
* формувати структуру папок. | |||
== ZIP-імпорт може дозволяти == | |||
* завантажити кілька файлів одночасно; | |||
* автоматично створити файли у проєкті; | |||
* зберегти структуру папок; | |||
* створити початкові версії для кожного файлу. | |||
* | == Резервне копіювання == | ||
Система має підтримувати резервне копіювання файлів і версій. | |||
== Що потрібно резервувати == | |||
* файли; | |||
* усі версії файлів; | |||
* метадані файлів; | |||
* журнал змін; | |||
* права доступу; | |||
* структуру проєктів. | |||
== Політика зберігання версій == | |||
Опціонально можна налаштувати правила: | |||
* зберігати всі версії безстроково; | |||
* архівувати старі версії; | |||
* обмежувати кількість версій для окремих типів файлів; | |||
* заборонити видалення важливих версій; | |||
* автоматично переносити старі файли в архівне сховище. | |||
== Пошук і фільтрація == | |||
Система повинна мати зручний пошук. | |||
== Параметри пошуку == | |||
* назва проєкту; | |||
* назва файлу; | * назва файлу; | ||
* тип файлу; | * тип файлу; | ||
* | * автор змін; | ||
* | * дата зміни; | ||
* | * номер версії; | ||
* | * commit message; | ||
* | * статус файлу; | ||
* | * формат файлу. | ||
== | == Фільтри == | ||
* | * за проєктом; | ||
* завантаження | * за типом файлу; | ||
* за користувачем; | |||
* за датою; | |||
* за статусом; | |||
* за файлами з помилками завантаження; | |||
* за архівними файлами; | |||
* за файлами без актуальної версії. | |||
== | == Звіти == | ||
== | == Звіт «Історія змін по проєкту» == | ||
У звіті потрібно відображати: | |||
* проєкт; | |||
* файл; | * файл; | ||
* | * версію; | ||
* автора; | |||
* | * дату зміни; | ||
* | * опис змін; | ||
* дію. | |||
== Звіт «Активність користувачів» == | |||
* опис змін | |||
* | |||
У звіті потрібно відображати: | |||
* | * користувача; | ||
* | * кількість створених версій; | ||
* | * кількість змінених файлів; | ||
* | * кількість відновлень; | ||
* останню активність. | |||
=== | == Звіт «Файли без оновлень» == | ||
У звіті потрібно відображати: | |||
* проєкт; | |||
* файл; | |||
* поточну версію; | |||
* дату останньої зміни; | |||
* відповідального; | |||
* кількість днів без оновлення. | |||
== Звіт «Відновлення версій» == | |||
У звіті потрібно відображати: | |||
* проєкт; | |||
* файл; | |||
* хто відновив; | |||
* яку версію відновлено; | |||
* коли виконано відновлення; | |||
* причина або коментар. | |||
* | == Звіт «Права доступу» == | ||
У звіті потрібно відображати: | |||
* проєкт; | |||
* файл або папку; | |||
* користувача або роль; | |||
* рівень доступу; | |||
* дату надання доступу; | |||
* хто надав доступ. | |||
== AJAX-інтерактив == | |||
Інтерфейс має працювати швидко й без перезавантаження сторінок. | |||
Через AJAX мають працювати: | |||
* створення проєкту; | |||
* створення файлу; | |||
* завантаження нової версії; | * завантаження нової версії; | ||
* оновлення журналу змін; | |||
* фільтрація файлів; | |||
* фільтрація версій; | |||
* перегляд diff; | |||
* відновлення версії; | * відновлення версії; | ||
* | * зміна статусу файлу; | ||
* зміна прав доступу; | |||
* формування звітів; | |||
* запуск ZIP-експорту. | |||
== | == Логування і аудит == | ||
Окремо від журналу змін файлів бажано вести аудит системних дій. | |||
== | == Аудит має фіксувати == | ||
* | * входи користувачів; | ||
* | * спроби доступу до закритих файлів; | ||
* | * завантаження файлів; | ||
* | * експорт ZIP; | ||
* зміну прав; | |||
* видалення файлів; | |||
* спроби відновлення без прав; | |||
* помилки завантаження; | |||
* створення резервних копій. | |||
== Технічні вимоги == | == Технічні вимоги == | ||
{| class="wikitable" | |||
!Параметр | {| class="wikitable" style="width:100%;" | ||
!Опис | ! Параметр | ||
! Опис | |||
|- | |||
| Бекенд | |||
| K2 Cloud ERP на Python або PHP | |||
|- | |||
| База даних | |||
| PostgreSQL або MySQL | |||
|- | |||
| Фронтенд | |||
| HTML5, JavaScript | |||
|- | |||
| AJAX | |||
| Fetch API або Axios | |||
|- | |- | ||
| | | UI-компоненти | ||
| | | DataTables для проєктів, файлів і версій; Select2 для пошуку по проєктах, користувачах і типах файлів | ||
|- | |- | ||
| | | Файли | ||
| | | Збереження на локальному сервері, S3-сумісному сховищі, Google Drive або іншому файловому сховищі | ||
|- | |- | ||
| | | Великі файли | ||
| | | Chunk upload, індикатор прогресу, перевірка розміру | ||
|- | |- | ||
| | | Порівняння | ||
| | | Diff для текстових документів і коду | ||
|- | |- | ||
| | | Експорт | ||
| | | ZIP, PDF, Excel | ||
|- | |- | ||
| | | Безпека | ||
| | | Рольова модель доступу, аудит, журнал дій | ||
|} | |} | ||
== Критерії | == Рекомендовані сутності бази даних == | ||
{| class="wikitable" | |||
!Критерій | Для реалізації задачі доцільно передбачити такі сутності: | ||
!Бали | |||
* проєкти; | |||
* типи файлів; | |||
* файли проєкту; | |||
* версії файлів; | |||
* коміти; | |||
* зв’язок комітів і файлів; | |||
* права доступу; | |||
* ролі; | |||
* користувачі проєкту; | |||
* журнал змін; | |||
* журнал аудиту; | |||
* diff-дані, якщо зберігаються; | |||
* резервні копії; | |||
* ZIP-експорти; | |||
* налаштування сховища; | |||
* звіти. | |||
== Практичне завдання == | |||
У межах атестації потрібно продемонструвати робочий сценарій. | |||
Мінімальний сценарій: | |||
# створити проєкт; | |||
# створити типи файлів; | |||
# створити файл у проєкті; | |||
# завантажити початкову версію файлу; | |||
# перевірити створення версії v1; | |||
# завантажити нову версію; | |||
# вказати commit message; | |||
# перевірити створення версії v2; | |||
# переглянути історію версій; | |||
# порівняти v1 і v2 для текстового файлу; | |||
# відновити v1 як нову поточну версію; | |||
# перевірити, що нова версія створена без видалення v2; | |||
# переглянути журнал змін; | |||
# налаштувати права доступу; | |||
# перевірити, що користувач без прав не може завантажити файл; | |||
# виконати ZIP-експорт проєкту; | |||
# сформувати звіт історії змін; | |||
# сформувати звіт активності користувачів; | |||
# перевірити журнал аудиту. | |||
== Критерії оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Критерій | |||
! Бали | |||
! Що перевіряється | |||
|- | |||
| Реалізація бази проєктів, файлів і версій | |||
| 20 | |||
| Проєкти, типи файлів, файли, версії, поточна версія, зберігання старих версій | |||
|- | |- | ||
| | | Організація журналу змін і контроль доступу | ||
|20 | | 20 | ||
| Автори змін, commit message, журнал змін, ролі, права доступу, аудит | |||
|- | |- | ||
| | | Можливість порівняння і відновлення версій | ||
|20 | | 20 | ||
| Diff для текстових файлів, історія версій, відновлення старої версії як нової поточної | |||
|- | |- | ||
| | | Інтерактивність через AJAX і масштабованість системи | ||
|20 | | 20 | ||
| AJAX-завантаження, оновлення журналу, фільтри, робота з великими файлами, chunk upload | |||
|- | |- | ||
| | | Зручність роботи з великими об’ємами даних | ||
|20 | | 20 | ||
| Пошук, фільтри, ZIP-експорт, архівування, резервні копії, звіти | |||
|- | |- | ||
! Разом | |||
! 100 | |||
! Максимальна оцінка | |||
|} | |} | ||
== Шкала оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Бали | |||
! Рівень | |||
! Опис | |||
|- | |||
| 90–100 | |||
| Відмінно | |||
| Модуль повністю працює: проєкти, файли, версії, коміти, diff, відновлення, права доступу, аудит, ZIP-експорт і звіти реалізовані коректно | |||
|- | |||
| 75–89 | |||
| Добре | |||
| Основна логіка працює, є незначні недоліки, які не руйнують процес контролю версій | |||
|- | |||
| 60–74 | |||
| Зараховано | |||
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання | |||
|- | |||
| 0–59 | |||
| Не зараховано | |||
| Відсутня критична логіка: проєкти, файли, версії, журнал змін, diff, відновлення або права доступу | |||
|} | |||
== Критичні помилки == | |||
Критичними помилками вважаються ситуації, коли: | |||
* неможливо створити проєкт; | |||
* неможливо створити файл; | |||
* початкова версія не створюється; | |||
* нова версія перезаписує стару; | |||
* неможливо переглянути історію версій; | |||
* неможливо визначити поточну версію; | |||
* commit message не зберігається; | |||
* автор змін не фіксується; | |||
* diff не працює для текстових файлів, якщо заявлений у реалізації; | |||
* відновлення старої версії видаляє новіші версії; | |||
* користувач без прав може завантажити або відновити файл; | |||
* журнал змін не фіксує ключові дії; | |||
* ZIP-експорт не враховує права доступу; | |||
* звіти не відповідають фактичним змінам. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл контролю версій: проєкт → файл → версія v1 → версія v2 → історія → diff → відновлення → журнал змін → права доступу → звіт. | |||
</div> | |||
== Очікуваний результат == | |||
У результаті виконання атестаційного завдання має бути створений модуль системи контролю версій у K2 ERP. | |||
Модуль має підтримувати проєкти, типи файлів, файли проєкту, версії файлів, коміти, журнал змін, diff для текстових файлів, відновлення версій, контроль доступу, аудит, роботу з великими файлами, ZIP-експорт, резервні копії, звіти, AJAX-інтерактив і логування дій. | |||
== Примітка == | == Примітка == | ||
Система контролю версій критично важлива для управління життєвим циклом цифрових ресурсів: документів, програмного коду, дизайн-макетів, креслень, конфігурацій і технічної документації. | |||
Вона забезпечує прозорість змін, надійне збереження історії, можливість швидкого відновлення після помилки та контроль доступу до важливих файлів. | |||
== Коротко == | |||
{| class="wikitable" style="width:100%;" | |||
! Питання | |||
! Відповідь | |||
|- | |||
| Що потрібно створити? | |||
| Модуль контролю версій файлів, коду і документів | |||
|- | |||
| Які довідники потрібні? | |||
| Проєкти, типи файлів, ролі доступу | |||
|- | |||
| Який головний об’єкт? | |||
| Файл із версіями | |||
|- | |||
| Що таке версія? | |||
| Збережений стан файлу з автором, датою і описом змін | |||
|- | |||
| Що потрібно для текстових файлів? | |||
| Diff між версіями | |||
|- | |||
| Що потрібно для відновлення? | |||
| Створення нової версії на основі старої без видалення історії | |||
|- | |||
| Які звіти потрібні? | |||
| Історія змін, активність користувачів, відновлення версій, права доступу | |||
|- | |||
| Що є критичною вимогою? | |||
| Нова версія не повинна перезаписувати стару | |||
|} | |||
== Див. також == | |||
* [[K2 Cloud ERP|K2 ERP]] | |||
* [[K2 ERP]] | |||
* [[Атестаційні завдання K2 ERP]] | |||
* [[Веб-архів документів]] | |||
* [[Документообіг]] | |||
* [[Файл]] | |||
* [[Версійність]] | |||
* [[Журнал змін]] | |||
* [[Права доступу]] | |||
* [[Diff]] | |||
* [[Backup]] | |||
* [[AJAX]] | |||
[[Категорія:K2 ERP]] | |||
[[Категорія:Атестаційні завдання K2]] | |||
[[Категорія:Система контролю версій]] | |||
[[Категорія:Версійність]] | |||
[[Категорія:Документообіг]] | |||
[[Категорія:Права доступу]] | |||
[[Категорія:Корпоративна Wiki]] | |||