Перейти до вмісту

Атестаційні завдання K2 ERP/Соціальна мережа

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні


Атестаційне завдання K2 ERP — Соціальна мережа — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні базової соціальної платформи з профілями користувачів, постами, коментарями, лайками, підписками, стрічкою новин, пошуком і сповіщеннями.

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

Коротко. Потрібно реалізувати базову соціальну мережу: користувачі, профілі, пости, фото, коментарі, лайки, підписки, стрічка новин, сповіщення, пошук, модерація, приватність і AJAX-інтерактив без перезавантаження сторінки.

Назва завдання

Модуль створення соціальної мережі: профілі, пости, коментарі, лайки.

Мета завдання

Мета завдання — створити в K2 ERP модуль базової соціальної платформи.

Система повинна дозволяти:

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

Головний принцип. Соціальна мережа будується навколо взаємодії користувачів: профіль → пост → реакція → коментар → підписка → стрічка → сповіщення.

Реальний бізнес-контекст

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

Така система може бути основою для:

  • публічної соціальної мережі;
  • корпоративної соціальної мережі;
  • внутрішнього порталу компанії;
  • спільноти навколо продукту;
  • освітньої платформи;
  • професійної мережі;
  • тематичного клубу;
  • локальної онлайн-спільноти.

Користувачі повинні мати простий інтерфейс для створення постів, перегляду стрічки, коментування, лайків і підписок. Адміністрація повинна мати інструменти для перегляду активності, модерації контенту та контролю небажаних публікацій.

Основний бізнес-процес

Типовий процес роботи соціальної мережі виглядає так:

  1. користувач реєструється;
  2. заповнює профіль;
  3. додає фото профілю;
  4. знаходить інших користувачів;
  5. підписується на цікавих авторів;
  6. створює пост;
  7. додає текст і фото;
  8. інші користувачі бачать пост у стрічці;
  9. користувачі ставлять лайки;
  10. користувачі залишають коментарі;
  11. автор отримує сповіщення;
  12. система оновлює лічильники лайків і коментарів;
  13. модератор за потреби перевіряє або приховує проблемний контент.

Основні об’єкти модуля

Об’єкт Призначення
Користувачі Зареєстровані учасники соціальної мережі
Профілі Публічна інформація про користувачів
Пости Основні публікації користувачів
Фото та медіа Зображення профілю і вкладення до постів
Коментарі Обговорення під постами
Лайки Реакції користувачів на пости або коментарі
Підписки Зв’язки між користувачами
Стрічка новин Список постів від користувачів, на яких підписаний користувач
Сповіщення Повідомлення про лайки, коментарі, підписки та іншу активність
Пошук Пошук користувачів і постів
Модерація Контроль контенту та скарг
Налаштування приватності Обмеження видимості профілю або постів
Звіти Статистика активності користувачів і контенту

Довідник «Користувачі»

Довідник користувачів містить основні дані зареєстрованих учасників.

Поля користувача

Поле Опис
Нікнейм Унікальне ім’я користувача в системі
ПІБ Повне ім’я користувача
Фото профілю Аватар або зображення користувача
Email Електронна адреса
Біографія Короткий опис користувача
Місто Місто проживання або діяльності
Країна Країна користувача
Дата реєстрації Коли користувач зареєструвався
Статус Активний, заблокований, видалений, на перевірці

Профіль користувача

Профіль — це сторінка користувача в соціальній мережі.

Дані профілю

Профіль має містити:

  • фото профілю;
  • нікнейм;
  • ПІБ або публічне ім’я;
  • біографію;
  • місто і країну;
  • кількість підписників;
  • кількість підписок;
  • список постів користувача;
  • кнопку підписки;
  • кнопку надсилання повідомлення, опціонально.

Налаштування приватності профілю

Користувач може мати базові налаштування приватності.

Налаштування Опис
Публічний профіль Профіль і пости видно всім користувачам
Закритий профіль Пости видно тільки підписникам або підтвердженим контактам
Прихований email Email не показується іншим користувачам
Обмеження коментарів Коментувати можуть усі, підписники або ніхто

Важливо. Користувач повинен мати контроль над тим, що показується іншим людям: профіль, контакти, пости й можливість коментування.

База «Пости»

Пости є основним контентом соціальної мережі.

Колонки бази постів

Колонка Опис
Автор посту Користувач, який створив публікацію
Текст посту Основний текст публікації
Фото / файли Зображення або вкладення
Дата і час публікації Коли пост створено
Кількість лайків Поточна кількість реакцій
Кількість коментарів Поточна кількість коментарів
Видимість Публічний, для підписників, приватний
Статус Активний, прихований, видалений, на модерації

Поля посту

Поле Опис
Автор Хто створив пост
Текст Текст публікації
Медіа Фото або файли
Видимість Для кого доступний пост
Дата створення Коли пост створено
Дата редагування Коли пост востаннє змінено
Статус Активний, прихований, видалений

Створення посту

Користувач повинен мати можливість швидко створити публікацію.

Кроки створення посту

  1. Користувач відкриває форму створення посту.
  2. Вводить текст.
  3. За потреби додає фото або файли.
  4. Обирає видимість.
  5. Натискає кнопку публікації.
  6. Пост з’являється у профілі автора.
  7. Пост потрапляє у стрічку підписників.

Медіа в постах

Модуль має підтримувати завантаження зображень до постів.

Вимоги до медіа

Система повинна дозволяти:

  • завантажити одне або кілька фото;
  • показувати фото в пості;
  • переглядати фото в галереї;
  • видаляти власні фото;
  • обмежувати розмір файлу;
  • перевіряти допустимі формати;
  • зберігати зв’язок медіа з постом.

Коментарі

Коментарі дозволяють користувачам обговорювати пости.

Поля коментаря

Поле Опис
Автор коментаря Хто залишив коментар
Пост До якого посту належить коментар
Текст коментаря Зміст коментаря
Дата створення Коли коментар створено
Дата редагування Коли коментар змінено
Статус Активний, прихований, видалений

Функції коментарів

Користувач повинен мати можливість:

  • коментувати доступні йому пости;
  • редагувати власні коментарі;
  • видаляти власні коментарі;
  • бачити кількість коментарів під постом;
  • отримувати сповіщення про новий коментар до свого посту.

Лайки

Лайки — це швидка реакція користувача на контент.

Логіка лайків

Система повинна дозволяти:

  • поставити лайк на пост;
  • прибрати лайк з поста;
  • поставити лайк на коментар, якщо реалізовано;
  • прибрати лайк з коментаря;
  • не дозволяти одному користувачу поставити кілька лайків на один і той самий об’єкт;
  • оновлювати кількість лайків у реальному часі.

Правило унікальності лайку

Один користувач = один лайк на один пост або коментар

Критично. Система не повинна накручувати лайки повторними натисканнями. Повторне натискання має прибирати лайк або залишати кількість без дублювання.

Підписки

Підписка створює зв’язок між користувачами.

Функції підписок

Користувач повинен мати можливість:

  • підписатися на іншого користувача;
  • відписатися;
  • бачити список своїх підписок;
  • бачити список своїх підписників;
  • бачити кількість підписників;
  • бачити кількість підписок;
  • отримувати сповіщення про нового підписника.

Поля підписки

Поле Опис
Хто підписався Користувач, який створив підписку
На кого підписався Користувач, на якого підписалися
Дата підписки Коли створено підписку
Статус Активна або скасована

Стрічка новин

Стрічка новин показує користувачу пости людей, на яких він підписаний.

Принцип формування стрічки

У базовій реалізації стрічка формується так:

Стрічка = пости користувачів, на яких підписаний поточний користувач

Дані у стрічці

У стрічці потрібно показувати:

  • автора посту;
  • фото автора;
  • дату публікації;
  • текст посту;
  • фото або файли;
  • кількість лайків;
  • кількість коментарів;
  • кнопку лайку;
  • форму коментаря;
  • посилання на профіль автора.

Сортування стрічки

Базове сортування:

  • найновіші пости зверху.

Опціонально можна додати:

  • популярні пости;
  • рекомендовані пости;
  • пости з найбільшою кількістю реакцій.

Infinite Scroll

Опціонально можна реалізувати підвантаження постів під час прокрутки сторінки.

Це дозволяє:

  • не завантажувати всю стрічку одразу;
  • пришвидшити відкриття сторінки;
  • зручно переглядати велику кількість постів.

Сповіщення

Сповіщення інформують користувача про активність навколо його профілю й контенту.

Типи сповіщень

  • новий підписник;
  • новий лайк на пост;
  • новий лайк на коментар;
  • новий коментар до посту;
  • згадка користувача, опціонально;
  • відповідь на коментар, опціонально;
  • приховання посту модератором;
  • блокування або попередження, якщо реалізовано.

Поля сповіщення

Поле Опис
Отримувач Кому призначене сповіщення
Тип Лайк, коментар, підписка, модерація
Текст Короткий зміст сповіщення
Об’єкт Пост, коментар або користувач
Дата Коли створено сповіщення
Статус Прочитане або непрочитане

Пошук користувачів

Система повинна дозволяти знаходити інших користувачів.

Поля пошуку користувачів

Пошук має працювати по:

  • нікнейму;
  • ПІБ;
  • місту;
  • країні;
  • частині імені.

Пошук постів

Пошук постів дозволяє знаходити публікації за ключовими словами.

Пошук має працювати по:

  • тексту посту;
  • автору;
  • даті публікації;
  • доступності посту для поточного користувача.

Модерація контенту

Модерація потрібна для контролю якості та безпеки платформи.

Що може модеруватися

  • профілі;
  • пости;
  • фото;
  • коментарі;
  • скарги користувачів;
  • спам;
  • підозріла активність.

Дії модератора

Модератор повинен мати можливість:

  • приховати пост;
  • приховати коментар;
  • заблокувати користувача;
  • повернути контент після перевірки;
  • переглянути скарги;
  • вказати причину модерації;
  • переглянути історію змін.

Скарги користувачів

Опціонально користувачі можуть скаржитися на контент.

Поля скарги

Поле Опис
Автор скарги Хто подав скаргу
Об’єкт скарги Пост, коментар або профіль
Причина Спам, образливий контент, шахрайство, інше
Коментар Додаткове пояснення
Статус Нова, розглядається, вирішена, відхилена

Звітність

Звіт «Активність користувачів»

Звіт показує активність користувачів за період.

У звіті потрібно відображати:

  • користувача;
  • кількість постів;
  • кількість коментарів;
  • кількість лайків;
  • кількість підписок;
  • дату останньої активності.

Звіт «Популярні пости»

Звіт показує публікації з найбільшою активністю.

У звіті потрібно відображати:

  • автора;
  • дату публікації;
  • текст або короткий фрагмент посту;
  • кількість лайків;
  • кількість коментарів;
  • кількість переглядів, якщо реалізовано.

Звіт «Нові користувачі»

Звіт показує динаміку реєстрацій.

У звіті потрібно відображати:

  • дату;
  • кількість нових користувачів;
  • кількість активних користувачів;
  • кількість заблокованих користувачів.

Звіт «Модерація»

Звіт показує дії модераторів.

У звіті потрібно відображати:

  • дату;
  • модератора;
  • об’єкт;
  • дію;
  • причину;
  • результат.

AJAX-інтерактив

Інтерфейс має працювати швидко та без перезавантаження сторінок.

Через AJAX мають працювати:

  • створення посту;
  • редагування посту;
  • видалення посту;
  • завантаження фото;
  • додавання коментаря;
  • редагування коментаря;
  • видалення коментаря;
  • постановка лайку;
  • зняття лайку;
  • підписка;
  • відписка;
  • оновлення стрічки;
  • підвантаження нових постів;
  • отримання сповіщень;
  • позначення сповіщень як прочитаних;
  • пошук користувачів;
  • пошук постів.

Логування змін

Модуль повинен фіксувати важливі дії.

Журнал змін має зберігати:

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

Права доступу

Модуль має підтримувати розмежування прав.

Роль Можливості
Гість Переглядає публічні профілі та пости, якщо це дозволено
Користувач Створює профіль, пости, коментарі, лайки, підписки
Модератор Перевіряє контент, приховує пости й коментарі, розглядає скарги
Адміністратор Керує користувачами, правами, налаштуваннями, модерацією
Керівник Переглядає статистику, активність і звіти платформи

Технічні вимоги

Параметр Опис
Бекенд K2 Cloud ERP на Python або PHP
База даних PostgreSQL або MySQL
Фронтенд HTML5, JavaScript
AJAX Axios або Fetch API
UI-компоненти DataTables для адмінки, Select2 для пошуку
Медіа Завантаження і зберігання зображень для профілів і постів
Стрічка Пагінація або infinite scroll
Друк Не потрібно, основна робота виконується онлайн
Експорт Excel або PDF для адміністративних звітів, опціонально

Рекомендовані сутності бази даних

Для реалізації задачі доцільно передбачити такі сутності:

  • користувачі;
  • профілі користувачів;
  • ролі користувачів;
  • пости;
  • медіа постів;
  • коментарі;
  • лайки;
  • підписки;
  • стрічка новин;
  • сповіщення;
  • налаштування приватності;
  • скарги;
  • модерація;
  • журнал змін;
  • звіти;
  • права доступу.

Практичне завдання

У межах атестації потрібно продемонструвати робочий сценарій.

Мінімальний сценарій:

  1. створити кількох користувачів;
  2. заповнити профіль користувача;
  3. додати фото профілю;
  4. створити пост;
  5. додати фото до посту;
  6. відредагувати власний пост;
  7. створити коментар до посту;
  8. відредагувати власний коментар;
  9. поставити лайк на пост;
  10. прибрати лайк із посту;
  11. перевірити, що повторний лайк не дублюється;
  12. підписатися на іншого користувача;
  13. перевірити кількість підписників і підписок;
  14. сформувати стрічку новин із постів підписок;
  15. створити сповіщення про лайк;
  16. створити сповіщення про коментар;
  17. знайти користувача через пошук;
  18. знайти пост за ключовим словом;
  19. приховати пост модератором;
  20. сформувати звіт активності користувачів;
  21. сформувати звіт популярних постів;
  22. перевірити журнал змін.

Критерії оцінювання

Критерій Бали Що перевіряється
Реалізація профілів користувачів 20 Користувачі, профілі, фото, біографія, приватність, статуси
Створення постів, коментарів і лайків 20 Пости, медіа, редагування, коментарі, унікальність лайків, лічильники
Стрічка новин з постами підписок 20 Підписки, формування стрічки, сортування, доступність постів
Система сповіщень і підписок 20 Підписники, підписки, сповіщення про лайки, коментарі й нових підписників
Інтерактивність через AJAX без перезавантаження 20 Пости, лайки, коментарі, підписки, сповіщення, пошук і стрічка без перезавантаження
Разом 100 Максимальна оцінка

Шкала оцінювання

Бали Рівень Опис
90–100 Відмінно Модуль повністю працює: профілі, пости, медіа, коментарі, лайки, підписки, стрічка, сповіщення, пошук, модерація й AJAX реалізовані коректно
75–89 Добре Основна логіка працює, є незначні недоліки, які не руйнують соціальну взаємодію
60–74 Зараховано Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання
0–59 Не зараховано Відсутня критична логіка: профілі, пости, коментарі, лайки, підписки або стрічка

Критичні помилки

Критичними помилками вважаються ситуації, коли:

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

Умова складання. Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл соціальної мережі: користувач → профіль → пост → коментар → лайк → підписка → стрічка → сповіщення.

Очікуваний результат

У результаті виконання атестаційного завдання має бути створений модуль соціальної мережі в K2 ERP.

Модуль має підтримувати користувачів, профілі, фото профілю, пости, медіа, коментарі, лайки, підписки, стрічку новин, сповіщення, пошук, приватність, модерацію, скарги, звіти, AJAX-інтерактив і логування змін.

Примітка

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

Навіть базова реалізація соціальної мережі добре перевіряє вміння працювати з користувачами, зв’язками між об’єктами, AJAX-інтерфейсом, медіаконтентом і правами доступу.

Коротко

Питання Відповідь
Що потрібно створити? Модуль базової соціальної мережі
Які головні об’єкти? Користувачі, профілі, пости, коментарі, лайки, підписки
Що має робити користувач? Створювати профіль, пости, коментувати, лайкати й підписуватися
Як формується стрічка? З постів користувачів, на яких підписаний поточний користувач
Які сповіщення потрібні? Нові лайки, коментарі, підписники, модераторські дії
Який пошук потрібен? Пошук користувачів і постів за ключовими словами
Які звіти потрібні? Активність користувачів, популярні пости, нові користувачі, модерація
Що є критичною вимогою? Повний цикл: профіль → пост → лайк → коментар → підписка → стрічка

Див. також