Naruszenia umów
Śledź i dokumentuj naruszenia warunków umowy przez najemców
Przegląd
Moduł naruszeń umowy pozwala dokumentować i śledzić przypadki nieprzestrzegania warunków umowy najmu. Każde naruszenie może być powiązane z konkretnymi punktami umowy i potwierdzone dowodami fotograficznymi.
Śledzenie naruszeń
Prowadź historię wszystkich naruszeń dla każdej nieruchomości i umowy
Powiązanie z punktami
Wskaż, które punkty umowy zostały naruszone
Dowody fotograficzne
Dołączaj zdjęcia i dokumenty potwierdzające naruszenia
Poziomy ważności
Oceniaj wagę naruszeń w skali od 1 do 10
Poziomy ważności
System używa 4 poziomów ważności do klasyfikacji naruszeń:
Niski - drobne naruszenia, ostrzeżenia
Średni - umiarkowane naruszenia, wymagają uwagi
Wysoki - poważne naruszenia, mogą skutkować karami
Krytyczny - podstawa do rozwiązania umowy
Proces pracy
Typowy proces dokumentowania naruszenia:
Wykrycie
Właściciel wykrywa naruszenie warunków umowy
Dokumentacja
Utworzenie wpisu z opisem, datą i poziomem ważności
Dowody
Dołączenie zdjęć i powiązanie z punktami umowy
Powiadomienie
Naruszający może zobaczyć zarejestrowane naruszenie
Uprawnienia
Różni użytkownicy mają różne uprawnienia:
| Akcja | Kto może |
|---|---|
| Utworzenie naruszenia | Właściciele, administratorzy |
| Wyświetlenie naruszenia | Właściciele, administratorzy, naruszający |
| Edycja naruszenia | Właściciele, administratorzy |
| Usunięcie naruszenia | Właściciele, administratorzy |
| Dołączenie dokumentów | Właściciele, administratorzy |
Automatic Overdue Payment Control
The system automatically detects late payments and creates contract violations. A daily cron job (app:payments:check-overdue) runs at 05:00 UTC and checks the previous month's payments.
How it works
- For each property with an active contract, the system reads RENT_PAYMENT_DAY and UTILITIES_PAYMENT_DAY + grace period from the contract blocks
- Finds payments made after the deadline (charge date + grace period)
- Groups overdue payments by deadline date
- Creates a ContractViolation with auto-generated description in the tenant's language
- Links overdue payments to the violation via
violation_overdue_paymentsjunction table
Severity rules
| Days overdue | Severity | Level |
|---|---|---|
| 1–5 | 3 | Low |
| 6–14 | 5 | Medium |
| 15–30 | 7 | High |
| 31+ | 9 | Critical |
Utilities overdue always gets severity 5 (medium).
If a contract does not have RENT_PAYMENT_DAY or UTILITIES_PAYMENT_DAY blocks — no violation is created for that type.
Payment linking
Each violation can be linked to one or more overdue payments. One payment can be linked to at most one violation (UNIQUE constraint). Payments can also be linked manually when creating or editing a violation.
REST API
REST API do integracji z zewnętrznymi systemami:
Uwaga dotycząca warstwy usługowej
GET /api/v1/properties/{id}/violations - Lista naruszeń
POST /api/v1/properties/{id}/violations - Utwórz naruszenie
GET /api/v1/properties/{id}/violations/{vid} - Szczegóły naruszenia
PUT /api/v1/properties/{id}/violations/{vid} - Zaktualizuj naruszenie
DELETE /api/v1/properties/{id}/violations/{vid} - Usuń naruszenie
POST /api/v1/properties/{id}/violations/{vid}/documents - Dołącz dokument
DELETE /api/v1/properties/{id}/violations/{vid}/documents/{did} - Odłącz dokument
GET /api/v1/properties/{id}/violations/{vid}/overdue-payments - List linked overdue payments
POST /api/v1/properties/{id}/violations/{vid}/overdue-payments - Link payments (payment_ids[])
DELETE /api/v1/properties/{id}/violations/{vid}/overdue-payments/{payId} - Unlink payment
GET /api/v1/properties/{id}/overdue-payments - List unlinked overdue payments
Przykładowa odpowiedź
{
"data": [
{
"id": 1,
"property_id": 5,
"contract_id": 12,
"violation_date": "2026-01-10",
"severity": 7,
"severity_level": "high",
"description": "Unauthorized subletting of the property to third party",
"violator": {
"id": 15,
"name": "John Tenant"
},
"created_by": {
"id": 8,
"name": "Owner Name"
},
"documents_count": 2,
"blocks": [
{
"id": 5,
"code": "SUBLETTING",
"name": "Subletting Prohibition"
}
],
"created_at": "2026-01-10T14:30:00+00:00"
}
],
"total": 1,
"page": 1,
"totalPages": 1
}
Swagger / OpenAPI
Pełna dokumentacja API jest dostępna pod adresem /api/v1/doc