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

Первинна публікація
 
Немає опису редагування
 
Рядок 1: Рядок 1:
{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Сайт оренди квартир}}


= Модуль пошуку і бронювання квартир та комерційних приміщень для оренди =
'''Атестаційне завдання K2 ERP — Сайт оренди квартир''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля пошуку, публікації, бронювання та обліку оренди житлової й комерційної нерухомості.
 
Модуль має забезпечувати роботу з об’єктами оренди, фотографіями, цінами, календарем доступності, бронюваннями, оплатами, кабінетами орендодавців і орендарів, заявками, сповіщеннями та звітністю.
 
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Коротко.''' Потрібно реалізувати сайт оренди квартир і приміщень: об’єкти оренди, категорії, типи оренди, регіони, фото, пошук, AJAX-фільтри, календар доступності, бронювання, рахунки, оплати, кабінет орендодавця, кабінет орендаря, сповіщення та звіти.
</div>
 
__TOC__
 
== Назва завдання ==
 
'''Модуль пошуку і бронювання квартир та комерційних приміщень для оренди'''.
 
== Мета завдання ==
 
Мета завдання — створити в K2 ERP модуль для автоматизації платформи оренди житлової та комерційної нерухомості.
 
Система повинна дозволяти:
 
* вести категорії об’єктів оренди;
* вести типи оренди;
* вести регіони, міста й райони;
* створювати об’єкти оренди;
* додавати фото до об’єктів;
* публікувати об’єкти на сайті;
* керувати статусами об’єктів;
* вести календар доступності;
* приймати онлайн-бронювання;
* резервувати об’єкт на конкретні дати;
* розраховувати суму бронювання;
* формувати рахунки;
* фіксувати оплати;
* підтверджувати бронювання після оплати;
* скасовувати бронювання;
* підтримувати особистий кабінет орендодавця;
* підтримувати особистий кабінет орендаря;
* надсилати сповіщення орендарям і власникам;
* формувати звіти по об’єктах, бронюваннях, оплатах і завантаженості.
 
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
'''Головний принцип.''' Об’єкт оренди не може бути заброньований двічі на один і той самий період. Календар доступності, бронювання й оплата мають працювати як єдиний процес.
</div>


== Реальний бізнес-контекст ==
== Реальний бізнес-контекст ==
Платформа організовує:


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


Необхідно:
На платформі можуть розміщуватися:


* дозволити власникам або агентствам розміщувати об'єкти оренди;
* квартири;
* дати орендарям можливість шукати, бронювати і оплачувати житло;
* будинки;
* автоматизувати облік бронювань, оплат і вільних дат.
* апартаменти;
* кімнати;
* офіси;
* магазини;
* склади;
* комерційні приміщення;
* коворкінги;
* паркомісця;
* подобова оренда;
* погодинна оренда;
* довгострокова оренда.
 
Для орендаря важливо швидко знайти об’єкт за локацією, ціною, кількістю кімнат, площею, типом оренди та доступними датами. Для орендодавця важливо бачити бронювання, платежі, зайнятість об’єкта, календар і заявки. Для адміністратора платформи важливо контролювати якість оголошень, оплату, конфлікти бронювань і загальну ефективність сервісу.
 
== Основний бізнес-процес ==
 
Типовий процес роботи сайту оренди виглядає так:
 
# орендодавець або агент створює об’єкт оренди;
# додає опис, характеристики, ціну й фото;
# налаштовує тип оренди: погодинна, подобова або довгострокова;
# вказує доступні дати в календарі;
# адміністратор або модератор публікує об’єкт;
# орендар знаходить об’єкт через пошук і фільтри;
# орендар обирає дати;
# система перевіряє доступність;
# система розраховує суму бронювання;
# орендар створює бронювання;
# формується рахунок або посилання на оплату;
# після оплати бронювання підтверджується;
# об’єкт блокується в календарі на вибрані дати;
# орендодавець отримує сповіщення;
# після завершення оренди бронювання переходить у статус '''«Завершене»'''.
 
== Основні об’єкти модуля ==
 
{| class="wikitable" style="width:100%;"
! Об’єкт
! Призначення
|-
| Категорії об’єктів
| Квартира, будинок, офіс, магазин, склад тощо
|-
| Типи оренди
| Погодинна, подобова, довгострокова
|-
| Регіони і міста
| Географічна структура для пошуку
|-
| Об’єкти оренди
| Основні картки квартир, будинків і приміщень
|-
| Фото
| Галерея об’єкта
|-
| Календар доступності
| Вільні та зайняті дати
|-
| Бронювання
| Резервування об’єкта на конкретний період
|-
| Орендарі
| Користувачі, які бронюють об’єкти
|-
| Орендодавці
| Власники або агенти, які здають об’єкти
|-
| Оплати
| Платежі за бронювання
|-
| Рахунки
| Документи для оплати
|-
| Сповіщення
| Повідомлення про бронювання, оплату, скасування
|-
| Відгуки
| Оцінки орендарів, опціонально
|-
| Звіти
| Аналітика по об’єктах, бронюваннях, оплатах і завантаженості
|}


== Основні завдання ==
== Довідник «Категорії об’єктів» ==


=== 1. Структура довідників ===
Категорії визначають тип нерухомості, яку можна розмістити на платформі.


==== Довідник «Категорії об'єктів» ====
== Приклади категорій ==
Категорії об'єктів:


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


==== Довідник «Регіони і міста» ====
== Поля категорії ==
Поля довідника:


{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва категорії
| Наприклад: квартира, офіс, склад
|-
| Опис
| Коротке пояснення категорії
|-
| Активність
| Чи доступна категорія для нових об’єктів
|-
| Порядок сортування
| Позиція у списках і фільтрах
|}
== Довідник «Типи оренди» ==
Тип оренди визначає спосіб розрахунку та бронювання.
== Типи оренди ==
* погодинна;
* подобова;
* довгострокова;
* помісячна;
* комерційна;
* сезонна;
* оренда з передоплатою;
* оренда з оплатою після підтвердження.
== Поля типу оренди ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва типу
| Наприклад: подобова, погодинна, довгострокова
|-
| Одиниця розрахунку
| Година, доба, місяць
|-
| Мінімальний період
| Наприклад: 2 години, 1 доба, 1 місяць
|-
| Опис
| Короткі умови оренди
|-
| Активність
| Чи доступний тип для нових об’єктів
|}
== Довідник «Регіони і міста» ==
Географічний довідник використовується для пошуку об’єктів.
== Поля регіону ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Країна
| Наприклад: Україна
|-
| Область
| Наприклад: Київська область
|-
| Місто
| Наприклад: Київ, Львів, Одеса
|-
| Район
| Район міста або області
|-
| Мікрорайон
| Опціонально
|-
| Метро
| Опціонально для великих міст
|}
== Користувачі платформи ==
У модулі потрібно передбачити дві основні групи користувачів:
* орендодавці;
* орендарі.
== Орендодавець ==
Орендодавець — це власник або агент, який розміщує об’єкти.
== Поля орендодавця ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| ПІБ або назва компанії
| Хто здає об’єкти
|-
| Тип
| Приватна особа, агентство, компанія
|-
| Телефон
| Контактний номер
|-
| Email
| Електронна адреса
|-
| Статус
| Активний, заблокований, на перевірці
|-
| Примітки
| Внутрішні коментарі адміністратора
|}
== Орендар ==
Орендар — це користувач, який шукає та бронює об’єкти.
== Поля орендаря ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| ПІБ
| Ім’я орендаря
|-
| Телефон
| Контактний номер
|-
| Email
| Для підтверджень і рахунків
|-
| Дата реєстрації
| Коли користувач зареєструвався
|-
| Статус
| Активний, заблокований, архівний
|}
== База «Об’єкти оренди» ==
Об’єкт оренди — головна картка нерухомості на платформі.
== Колонки бази об’єктів ==
{| class="wikitable" style="width:100%;"
! Колонка
! Опис
|-
| Назва об’єкта
| Короткий заголовок
|-
| Категорія
| Квартира, будинок, офіс, склад тощо
|-
| Тип оренди
| Погодинна, подобова, довгострокова
|-
| Місто
| Населений пункт
|-
| Район
| Район або мікрорайон
|-
| Адреса
| Адреса об’єкта
|-
| Кількість кімнат
| Для житлових об’єктів
|-
| Загальна площа
| Площа в м²
|-
| Поверх / поверховість
| Для квартир або приміщень
|-
| Ціна
| Погодинна, подобова або місячна
|-
| Орендодавець
| Власник або агент
|-
| Статус
| Вільно, заброньовано, здано, знято з публікації
|}
== Поля об’єкта оренди ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва
| Назва або заголовок об’єкта
|-
| Категорія
| Квартира, будинок, офіс тощо
|-
| Тип оренди
| Погодинна, подобова, довгострокова
|-
| Регіон
| Область, місто, район
|-
| Адреса
| Повна або часткова адреса
|-
| Кількість кімнат
| Для житла
|-
| Загальна площа
| Площа об’єкта
|-
| Поверх
| Для квартир або офісів
|-
| Поверховість
| Загальна кількість поверхів
|-
| Ціна за годину
| Для погодинної оренди
|-
| Ціна за добу
| Для подобової оренди
|-
| Ціна за місяць
| Для довгострокової оренди
|-
| Валюта
| UAH, USD, EUR
|-
| Опис
| Детальна інформація
|-
| Правила проживання / користування
| Опціонально
|-
| Фото
| Галерея зображень
|-
| Орендодавець
| Власник або агент
|-
| Статус
| Поточний стан об’єкта
|}
== Статуси об’єкта ==
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Чернетка
| Об’єкт створюється, але ще не опублікований
|-
| На модерації
| Очікує перевірки адміністратором
|-
| Вільно
| Об’єкт доступний для бронювання
|-
| Частково зайнято
| Є бронювання на окремі дати
|-
| Заброньовано
| Об’єкт зарезервовано на вибраний період
|-
| Здано
| Об’єкт передано в оренду
|-
| Знято з публікації
| Об’єкт прихований із сайту
|-
| Архів
| Об’єкт збережений у базі, але неактивний
|}
== Фото об’єкта ==
Фото допомагають орендарю оцінити об’єкт до бронювання.
== Вимоги до фото ==
Система повинна дозволяти:
* завантажувати кілька фото;
* визначати головне фото;
* змінювати порядок фото;
* видаляти фото;
* переглядати фото в галереї;
* відкривати фото у збільшеному вигляді;
* перевіряти формат файлів;
* обмежувати розмір файлів.
== Календар доступності ==
Календар доступності показує, коли об’єкт можна бронювати.
== У календарі потрібно бачити ==
* вільні дати;
* заброньовані дати;
* підтверджені бронювання;
* скасовані бронювання;
* періоди, закриті орендодавцем вручну;
* періоди технічного обслуговування або ремонту;
* ціну на конкретну дату, якщо вона змінюється.
== Правило доступності ==
<pre>
Об’єкт доступний для бронювання, якщо на вибраний період немає підтвердженого або активного бронювання.
</pre>
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Критично.''' Система не повинна дозволяти подвійне бронювання одного об’єкта на один і той самий період.
</div>
== База «Бронювання» ==
Бронювання фіксує резервування об’єкта на конкретний період.
== Колонки бази бронювань ==
{| class="wikitable" style="width:100%;"
! Колонка
! Опис
|-
| Номер бронювання
| Унікальний номер
|-
| Об’єкт
| Який об’єкт бронюється
|-
| Орендар
| Хто бронює
|-
| Дата початку
| Початок оренди
|-
| Дата завершення
| Кінець оренди
|-
| Сума до оплати
| Розрахована вартість
|-
| Статус бронювання
| Нове, підтверджене, скасоване, завершене
|-
| Статус оплати
| Не оплачено, частково оплачено, оплачено
|}
== Поля бронювання ==
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Об’єкт
| Що бронюється
|-
| Орендар
| Хто бронює
|-
| Дата і час початку
| Початок оренди
|-
| Дата і час завершення
| Кінець оренди
|-
| Кількість годин / діб / місяців
| Залежно від типу оренди
|-
| Ціна за одиницю
| Ціна за годину, добу або місяць
|-
| Сума
| Загальна сума бронювання
|-
| Передоплата
| Якщо передбачена
|-
| Статус бронювання
| Поточний стан бронювання
|-
| Статус оплати
| Поточний стан оплати
|-
| Коментар орендаря
| Побажання або уточнення
|}
== Статуси бронювання ==
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Нове
| Бронювання створене, але ще не підтверджене
|-
| Очікує оплати
| Потрібна оплата або передоплата
|-
| Підтверджене
| Бронювання підтверджене
|-
| Заселення / початок
| Оренда розпочалась
|-
| Завершене
| Період оренди завершено
|-
| Скасоване
| Бронювання скасовано
|-
| Прострочене
| Оплата або підтвердження не виконані вчасно
|}
== Створення бронювання ==
== Кроки бронювання ==
# Орендар обирає об’єкт.
# Обирає дати або час оренди.
# Система перевіряє доступність.
# Система розраховує суму.
# Орендар вводить контактні дані.
# Система створює бронювання.
# Формується рахунок або посилання на оплату.
# Після оплати бронювання підтверджується.
# Об’єкт блокується в календарі на вибраний період.
# Орендодавець отримує сповіщення.
== Розрахунок вартості бронювання ==
Для різних типів оренди можуть використовуватися різні формули.
== Погодинна оренда ==
<pre>
Сума = Кількість годин × Ціна за годину
</pre>
== Подобова оренда ==
<pre>
Сума = Кількість діб × Ціна за добу
</pre>
== Довгострокова оренда ==
<pre>
Сума = Кількість місяців × Ціна за місяць
</pre>
== Передоплата ==
Опціонально можна встановити передоплату.
<pre>
Передоплата = Сума бронювання × Відсоток передоплати / 100
</pre>
== Оплата ==
Модуль має підтримувати облік оплат за бронювання.
== Варіанти оплати ==
* онлайн-оплата;
* банківська картка;
* банківський переказ;
* готівка;
* передоплата;
* повна оплата;
* оплата після підтвердження.
== Статуси оплати ==
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Не оплачено
| Оплата ще не отримана
|-
| Очікує оплати
| Рахунок сформовано
|-
| Частково оплачено
| Отримано частину суми
|-
| Оплачено
| Суму сплачено повністю
|-
| Повернення
| Оплату повернено орендарю
|}
== Рахунок на оплату ==
Рахунок формується для бронювання.
== Дані рахунку ==
Рахунок має містити:
* номер рахунку;
* дату;
* орендаря;
* об’єкт;
* період оренди;
* ціну за одиницю;
* кількість одиниць;
* суму;
* передоплату, якщо є;
* реквізити для оплати;
* статус оплати.
== Пошук і фільтрація ==
Пошук має допомогти швидко знайти потрібний об’єкт.
== Параметри фільтрації ==
* категорія об’єкта;
* тип оренди;
* країна;
* країна;
* область;
* місто;
* місто;
* район.
* район;
* ціна від;
* ціна до;
* кількість кімнат;
* площа від;
* площа до;
* поверх;
* наявність вільних дат;
* кількість гостей або робочих місць, якщо потрібно;
* зручності, опціонально.
 
== AJAX-фільтрація ==
 
Пошук і фільтрація мають працювати без перезавантаження сторінки.
 
Через AJAX потрібно оновлювати:
 
* список об’єктів;
* кількість знайдених об’єктів;
* календар доступності;
* ціну за вибраний період;
* сортування;
* пагінацію;
* активні фільтри.
 
== Сортування об’єктів ==


==== Довідник «Типи оренди» ====
Система повинна підтримувати сортування:
Типи оренди:


* короткострокова:
* за ціною;
** погодинна;
* за датою публікації;
** подобова;
* за популярністю;
* довгострокова:
* за рейтингом;
** від 1 місяця.
* за кількістю бронювань;
* за доступністю;
* за преміум-статусом.


=== 2. База «Об'єкти оренди» ===
== Сторінка об’єкта ==


==== Колонки бази ====
Сторінка об’єкта повинна бути зрозумілою для орендаря.


* назва об'єкта;
== На сторінці потрібно показувати ==
* категорія;
 
* галерею фото;
* назву об’єкта;
* місто й район;
* адресу або часткову адресу;
* категорію;
* тип оренди;
* тип оренди;
* місто, район;
* площу;
* адреса;
* кількість кімнат;
* кількість кімнат — для житла;
* поверх;
* загальна площа, м²;
* ціну;
* поверх / поверховість — для житла;
* ціна оренди:
** погодинна;
** подобова;
** місячна;
* опис;
* опис;
* фото;
* правила оренди;
* статус:
* календар доступності;
** вільно;
* форму бронювання;
** заброньовано;
* інформацію про орендодавця;
** здано;
* схожі об’єкти;
* власник або агент.
* відгуки, якщо реалізовано.


==== Функціонал ====
== Особистий кабінет орендодавця ==


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


=== 3. База «Бронювання» ===
== Функції кабінету орендодавця ==


==== Колонки бази ====
Орендодавець повинен мати можливість:


* об'єкт;
* створювати об’єкти;
* клієнт;
* редагувати свої об’єкти;
* дата початку бронювання;
* додавати фото;
* дата закінчення бронювання;
* змінювати ціни;
* сума до оплати;
* керувати календарем доступності;
* статус бронювання:
* закривати дати вручну;
** нове;
* переглядати бронювання;
** підтверджене;
* підтверджувати або скасовувати бронювання, якщо це передбачено;
** скасоване;
* бачити оплати;
** завершене.
* переглядати звіти по своїх об’єктах;
* отримувати сповіщення про нові заявки й бронювання.
 
== Особистий кабінет орендаря ==
 
Орендар повинен мати доступ до своїх бронювань і документів.
 
== Функції кабінету орендаря ==
 
Орендар повинен мати можливість:
 
* переглядати свої бронювання;
* бачити статус бронювання;
* завантажувати рахунок;
* бачити статус оплати;
* скасувати бронювання, якщо це дозволено;
* переглядати історію оренди;
* залишати відгук;
* отримувати підтвердження бронювання.
 
== Сповіщення ==
 
Система має надсилати повідомлення учасникам процесу.
 
== Події для сповіщень ==
 
* створено нове бронювання;
* бронювання очікує оплати;
* бронювання оплачено;
* бронювання підтверджено;
* бронювання скасовано;
* наближається дата початку оренди;
* оренда завершена;
* отримано новий відгук;
* орендодавець змінив ціну або доступність;
* об’єкт пройшов модерацію.
 
== Модерація об’єктів ==
 
Модерація потрібна для контролю якості публікацій.
 
== Що перевіряє модератор ==
 
* коректність опису;
* наявність фото;
* правильність ціни;
* правильність локації;
* відповідність правилам платформи;
* відсутність дублювання;
* актуальність статусу.
 
== Дії модератора ==
 
Модератор може:
 
* схвалити об’єкт;
* повернути об’єкт на доопрацювання;
* зняти об’єкт із публікації;
* приховати фото;
* змінити статус;
* залишити коментар орендодавцю.
 
== Відгуки та рейтинг ==
 
Опціонально після завершення оренди орендар може залишити відгук.
 
== Поля відгуку ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Об’єкт
| До якого об’єкта залишено відгук
|-
| Бронювання
| До якого бронювання належить відгук
|-
| Орендар
| Хто залишив відгук
|-
| Оцінка
| Наприклад, від 1 до 5
|-
| Коментар
| Текст відгуку
|-
| Дата
| Коли відгук залишено
|-
| Статус
| Опублікований, на модерації, прихований
|}


==== Функціонал ====
== Звіти ==


* онлайн-бронювання вільних об'єктів;
== Звіт «Об’єкти оренди» ==
* резервування об'єкта на певні дати;
* генерація рахунку на оплату.


=== 4. Пошук і фільтрація ===
Звіт показує стан бази об’єктів.


==== Параметри пошуку ====
У звіті потрібно відображати:


* категорія об'єкта;
* об’єкт;
* категорію;
* тип оренди;
* тип оренди;
* локація:
* місто;
** місто;
* район;
** район;
* ціну;
* ціна:
* орендодавця;
** від;
* статус;
** до;
* кількість бронювань.
* кількість кімнат;
 
* наявність вільних дат.
== Звіт «Бронювання за період» ==
 
Звіт показує бронювання за вибраний період.
 
У звіті потрібно відображати:
 
* номер бронювання;
* об’єкт;
* орендаря;
* дати;
* суму;
* статус бронювання;
* статус оплати.
 
== Звіт «Завантаженість об’єктів» ==
 
Звіт показує, наскільки активно використовуються об’єкти.
 
У звіті потрібно відображати:
 
* об’єкт;
* кількість днів або годин у бронюванні;
* кількість вільних днів;
* відсоток завантаженості;
* суму доходу.
 
== Звіт «Оплати» ==
 
Звіт показує фінансовий стан бронювань.
 
У звіті потрібно відображати:
 
* бронювання;
* об’єкт;
* орендаря;
* суму до оплати;
* суму оплат;
* борг;
* статус оплати.
 
== Звіт «Ефективність орендодавців» ==
 
Звіт показує результативність власників або агентів.
 
У звіті потрібно відображати:
 
* орендодавця;
* кількість об’єктів;
* кількість бронювань;
* суму доходу;
* середню завантаженість;
* середню оцінку, якщо реалізовано відгуки.
 
== AJAX-інтерактив ==
 
Інтерфейс має працювати швидко та зручно для орендаря, орендодавця й адміністратора.
 
Через AJAX мають працювати:
 
* пошук об’єктів;
* фільтрація;
* сортування;
* пагінація;
* перевірка доступності дат;
* розрахунок суми бронювання;
* створення бронювання;
* зміна статусу бронювання;
* фіксація оплати;
* оновлення календаря;
* завантаження фото;
* зміна ціни;
* додавання у вибране, якщо реалізовано;
* створення відгуку;
* оновлення звітів.
 
== Логування змін ==
 
Модуль повинен фіксувати важливі зміни.


Пошук і фільтрація працюють через AJAX без перезавантаження сторінки.
Журнал змін має зберігати:


=== 5. Оплата ===
* хто створив об’єкт;
Функціонал:
* хто змінив ціну;
* хто змінив календар доступності;
* хто завантажив або видалив фото;
* хто створив бронювання;
* хто підтвердив бронювання;
* хто скасував бронювання;
* хто зареєстрував оплату;
* хто змінив статус об’єкта;
* хто модерував об’єкт;
* дату й час дії;
* старе та нове значення, якщо це можливо.


* створення рахунку на оплату бронювання;
== Права доступу ==
* онлайн-оплата через платіжні шлюзи — опціонально:
** LiqPay;
** Stripe;
** інші платіжні шлюзи;
* автоматичне підтвердження бронювання після оплати.


=== 6. Додаткові функції ===
Модуль має підтримувати розмежування прав.


* галерея фото для об'єктів оренди;
{| class="wikitable" style="width:100%;"
* календар вільних дат, наприклад через FullCalendar або аналог;
! Роль
* особистий кабінет власника:
! Можливості
** управління своїми об'єктами;
|-
** перегляд бронювань;
| Гість сайту
** зміна цін;
| Переглядає об’єкти, користується пошуком і фільтрами
* особистий кабінет орендаря:
|-
** перегляд бронювань;
| Орендар
** завантаження рахунків і підтверджень;
| Створює бронювання, переглядає свої бронювання, рахунки й оплати
* сповіщення:
|-
** клієнтам про підтвердження бронювання;
| Орендодавець
** власникам про нові заявки.
| Створює й редагує свої об’єкти, керує календарем і бронюваннями
|-
| Агент
| Працює з об’єктами, заявками, клієнтами й бронюваннями
|-
| Модератор
| Перевіряє об’єкти, фото, описи й публікації
|-
| Бухгалтер
| Контролює рахунки, оплати, борги й повернення
|-
| Керівник
| Переглядає звіти по об’єктах, бронюваннях, оплатах і завантаженості
|-
| Адміністратор
| Налаштовує довідники, права, платежі, шаблони і службові параметри
|}


== Технічні вимоги ==
== Технічні вимоги ==
{| class="wikitable"
 
!Параметр
{| class="wikitable" style="width:100%;"
!Опис
! Параметр
! Опис
|-
| Бекенд
| K2 Cloud ERP на Python або PHP
|-
| База даних
| PostgreSQL або MySQL
|-
| Фронтенд
| HTML5, JavaScript
|-
| AJAX
| Fetch API або Axios
|-
| UI-компоненти
| DataTables для адмінки, Select2 для фільтрів, FullCalendar для календаря бронювань, Slick Carousel або аналог для фото
|-
|-
|Бекенд
| Платежі
|K2 Cloud ERP на Python або PHP
| LiqPay, Stripe або інший платіжний шлюз, опціонально
|-
|-
|БД
| Медіа
|PostgreSQL або MySQL
| Завантаження і зберігання фото об’єктів
|-
|-
|Фронтенд
| Карта
|HTML5, JavaScript, AJAX, Fetch API або Axios
| OpenStreetMap або Google Maps API, опціонально
|-
|-
|UI-компоненти
| Друк
|DataTables для адмінки, Select2 для фільтрації, FullCalendar для календаря бронювань, Slick Carousel для фото
| PDF-рахунки, підтвердження бронювання
|-
|-
|Друк
| Адаптивність
|Генерація рахунків у PDF
| Мобільна версія сайту
|-
| Експорт
| Excel або PDF для звітів
|}
|}


== Критерії оцінки ==
== Рекомендовані сутності бази даних ==
{| class="wikitable"
 
!Критерій
Для реалізації задачі доцільно передбачити такі сутності:
!Бали
 
* категорії об’єктів;
* типи оренди;
* країни;
* області;
* міста;
* райони;
* орендодавці;
* орендарі;
* об’єкти оренди;
* характеристики об’єктів;
* фото об’єктів;
* календар доступності;
* бронювання;
* статуси бронювань;
* рахунки;
* оплати;
* повернення оплат;
* сповіщення;
* модерація;
* відгуки;
* журнал змін;
* звіти;
* права доступу.
 
== Практичне завдання ==
 
У межах атестації потрібно продемонструвати робочий сценарій.
 
Мінімальний сценарій:
 
# створити категорії об’єктів;
# створити типи оренди;
# створити регіони, міста й райони;
# створити орендодавця;
# створити орендаря;
# створити об’єкт оренди;
# додати характеристики об’єкта;
# завантажити кілька фото;
# визначити головне фото;
# налаштувати календар доступності;
# опублікувати об’єкт;
# знайти об’єкт через пошук;
# застосувати фільтр за містом, ціною, кількістю кімнат і датами;
# створити бронювання на вільні дати;
# перевірити блокування цих дат у календарі;
# сформувати рахунок;
# зареєструвати оплату;
# підтвердити бронювання;
# спробувати створити друге бронювання на ті самі дати;
# перевірити заборону подвійного бронювання;
# скасувати окреме бронювання;
# переглянути бронювання в кабінеті орендаря;
# переглянути бронювання в кабінеті орендодавця;
# сформувати звіт бронювань;
# сформувати звіт завантаженості;
# сформувати звіт оплат;
# перевірити журнал змін.
 
== Критерії оцінювання ==
 
{| class="wikitable" style="width:100%;"
! Критерій
! Бали
! Що перевіряється
|-
| Реалізація бази об’єктів оренди
| 20
| Категорії, типи оренди, регіони, об’єкти, характеристики, фото, статуси
|-
| Механізм бронювання і обліку оплат
| 20
| Календар доступності, бронювання, рахунки, оплати, підтвердження, скасування
|-
| Пошук і фільтрація по об’єктах
| 20
| AJAX-пошук, фільтри за локацією, ціною, кімнатами, типом оренди й датами
|-
|-
|Реалізація бази об'єктів оренди
| Особисті кабінети орендодавця і орендаря
|20
| 20
| Кабінет власника, кабінет орендаря, об’єкти, бронювання, рахунки, статуси
|-
|-
|Механізм бронювання і обліку оплат
| Інтерактивність через AJAX і календар доступності
|20
| 20
| Перевірка дат, розрахунок суми, створення бронювання, оновлення календаря без перезавантаження
|-
|-
|Пошук і фільтрація по об'єктах
! Разом
|20
! 100
! Максимальна оцінка
|}
 
== Шкала оцінювання ==
 
{| class="wikitable" style="width:100%;"
! Бали
! Рівень
! Опис
|-
|-
|Особисті кабінети орендодавця і орендаря
| 90–100
|20
| Відмінно
| Модуль повністю працює: об’єкти, фото, пошук, календар, бронювання, оплати, кабінети, сповіщення і звіти реалізовані коректно
|-
|-
|Інтерактивність через AJAX і календар доступності
| 75–89
|20
| Добре
| Основна логіка працює, є незначні недоліки, які не руйнують процес пошуку й бронювання
|-
| 60–74
| Зараховано
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання
|-
| 0–59
| Не зараховано
| Відсутня критична логіка: об’єкти, календар доступності, бронювання, оплата або кабінети
|}
|}
== Критичні помилки ==
Критичними помилками вважаються ситуації, коли:
* неможливо створити об’єкт оренди;
* об’єкт не має типу оренди;
* об’єкт не має ціни;
* об’єкт не має локації;
* фото не прив’язуються до об’єкта;
* об’єкт не показується в пошуку після публікації;
* фільтр за датами працює некоректно;
* неможливо створити бронювання;
* бронювання не блокує дати в календарі;
* система дозволяє подвійне бронювання;
* сума бронювання розраховується неправильно;
* оплата не прив’язується до бронювання;
* підтверджене бронювання не відображається в кабінеті орендаря;
* орендодавець бачить чужі об’єкти без прав;
* скасоване бронювання показується як активне;
* звіти не відповідають фактичним бронюванням і оплатам;
* зміни календаря, ціни, бронювання або оплати не логуються.
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл оренди: об’єкт → календар → пошук → бронювання → оплата → підтвердження → звіт.
</div>
== Очікуваний результат ==
У результаті виконання атестаційного завдання має бути створений модуль сайту оренди квартир і комерційних приміщень у K2 ERP.
Модуль має підтримувати категорії об’єктів, типи оренди, регіони, міста, райони, орендодавців, орендарів, об’єкти оренди, характеристики, фото, календар доступності, бронювання, рахунки, оплати, статуси, кабінет орендодавця, кабінет орендаря, сповіщення, модерацію, відгуки, звіти, AJAX-інтерактив і логування змін.


== Примітка ==
== Примітка ==
Сайт для оренди житла і приміщень — must-have для:


* агентств нерухомості;
Сайт для оренди житла і приміщень потрібен агентствам нерухомості, приватним орендодавцям, сервісним апартаментам, готельним комплексам, коворкінгам, керуючим компаніям і великим житловим комплексам.
* приватних орендодавців;
 
* великих житлових комплексів.
Такий модуль підвищує заповнюваність об’єктів, зменшує ручну роботу менеджерів, спрощує оплату, покращує сервіс для клієнтів і дає власникам прозорий контроль бронювань та доходів.
 
== Коротко ==
 
{| class="wikitable" style="width:100%;"
! Питання
! Відповідь
|-
| Що потрібно створити?
| Модуль пошуку і бронювання квартир та приміщень для оренди
|-
| Які довідники потрібні?
| Категорії об’єктів, типи оренди, регіони, міста, райони
|-
| Який головний об’єкт?
| Об’єкт оренди з календарем доступності
|-
| Що має робити орендар?
| Шукати об’єкт, обирати дати, бронювати, оплачувати, переглядати статус
|-
| Що має робити орендодавець?
| Створювати об’єкти, керувати цінами, календарем і бронюваннями
|-
| Яка головна перевірка?
| Заборона подвійного бронювання на один і той самий період
|-
| Які звіти потрібні?
| Об’єкти, бронювання, завантаженість, оплати, ефективність орендодавців
|-
| Що є критичною вимогою?
| Календар доступності має коректно блокувати заброньовані дати
|}
 
== Див. також ==


Він підвищує:
* [[K2 Cloud ERP|K2 ERP]]
* [[K2 ERP]]
* [[Атестаційні завдання K2 ERP]]
* [[Сайт продажу нерухомості]]
* [[Нерухомість]]
* [[Оренда]]
* [[Бронювання]]
* [[Календар доступності]]
* [[Рахунок на оплату]]
* [[Особистий кабінет]]
* [[Заявка клієнта]]
* [[Оплата]]
* [[AJAX]]


* ефективність заповнюваності об'єктів;
[[Категорія:K2 ERP]]
* якість сервісу для клієнтів.
[[Категорія:Атестаційні завдання K2]]
[[Категорія:Оренда нерухомості]]
[[Категорія:Сайт оренди квартир]]
[[Категорія:Бронювання]]
[[Категорія:Нерухомість]]
[[Категорія:Корпоративна Wiki]]