Случај на употреба 0005 - Обработка на доделена пријава
Иницијатор: Општински работник
Други актери: нема
Работникот ги гледа пријавите што му се доделени и сè уште не се решени, подредени по приоритет. Откако ќе интервенира на терен, тој додава коментар за направената работа и го менува статусот на пријавата. Секоја промена на статусот се евидентира во историјата, заедно со работникот кој ја направил. Системот дозволува промена само на пријави кои се доделени на тој работник.
Сценарио
- Работникот се најавува со е-пошта и лозинка.
- Системот ги вчитува податоците за работникот:
SELECT worker_id, full_name FROM workers WHERE email = 'dejan.jovanovski@skopje.gov.mk';
- Системот ги прикажува доделените активни пријави, прво најитните:
SELECT r.report_id, c.name AS category, r.description, r.location_text, r.status, r.priority, r.created_at FROM assignments a JOIN reports r ON r.report_id = a.report_id JOIN categories c ON c.category_id = r.category_id WHERE a.worker_id = 4 AND r.status NOT IN ('resolved', 'rejected') ORDER BY CASE r.priority WHEN 'urgent' THEN 1 WHEN 'high' THEN 2 WHEN 'medium' THEN 3 ELSE 4 END, r.created_at;
- Работникот избира пријава.
- Системот ги прикажува деталите за пријавата, контактот на граѓанинот и забелешката од администраторот:
SELECT r.report_id, r.description, r.location_text, r.latitude, r.longitude, r.status, r.priority, ci.full_name AS citizen, ci.phone, a.assigned_at, a.note AS admin_note FROM reports r JOIN citizens ci ON ci.citizen_id = r.citizen_id JOIN assignments a ON a.report_id = r.report_id AND a.worker_id = 4 WHERE r.report_id = 4;
- По интервенцијата на терен, работникот пишува коментар за направената работа.
- Системот го зачувува коментарот, само ако пријавата е доделена на работникот:
INSERT INTO comments (content, report_id, worker_id) SELECT 'Цевката е заменета, водата е вратена во системот.', 4, 4 WHERE EXISTS (SELECT 1 FROM assignments WHERE report_id = 4 AND worker_id = 4) RETURNING comment_id, created_at;
- Работникот го избира новиот статус („resolved“) и внесува забелешка.
- Системот го менува статусот на пријавата и ја евидентира промената во историјата во една команда. Промената се прави само ако пријавата е доделена на работникот и сè уште не е затворена:
WITH changed AS ( UPDATE reports r SET status = 'resolved' WHERE r.report_id = 4 AND r.status NOT IN ('resolved', 'rejected') AND EXISTS (SELECT 1 FROM assignments a WHERE a.report_id = r.report_id AND a.worker_id = 4) RETURNING r.report_id, r.status ) INSERT INTO status_logs (status, note, report_id, worker_id) SELECT status, 'Дефектот е отстранет, шахтата е затворена.', report_id, 4 FROM changed RETURNING log_id, status, changed_at;
- Системот ја прикажува ажурираната историја на пријавата:
SELECT l.status, l.changed_at, l.note, w.full_name FROM status_logs l LEFT JOIN workers w ON w.worker_id = l.worker_id WHERE l.report_id = 4 ORDER BY l.changed_at;
- Пријавата повеќе не се прикажува во листата на активни пријави на работникот (чекор 3).
Last modified
12 days ago
Last modified on 09/18/26 22:20:16
Note:
See TracWiki
for help on using the wiki.
