Имплементација на случај на употреба 0005 - Обработка на доделена пријава
Иницијатор: Општински работник
Други актери: нема
Работникот ги гледа своите доделени активни пријави, подредени по приоритет. За избрана пријава додава коментари, го менува статусот (само во дозволениот следен статус) и може да го промени приоритетот. Секоја промена на статусот се евидентира во историјата. Промени се дозволени само на пријави доделени на тој работник.
Сценарио
- Корисникот ја избира улогата „Општински работник“.
- Системот ги прикажува работниците, а корисникот се најавува со избор од листата:
SELECT worker_id, full_name, email FROM workers ORDER BY full_name;
- Системот ги прикажува доделените активни пријави, прво најитните. Работникот избира пријава:
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 = %s 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 = %s WHERE r.report_id = %s; INSERT INTO comments (content, report_id, worker_id) SELECT %s, %s, %s WHERE EXISTS (SELECT 1 FROM assignments WHERE report_id = %s AND worker_id = %s) RETURNING comment_id, created_at;
- Работникот избира „Промени статус“. Системот ги нуди само дозволените следни статуси. Работникот избира „Решена“ и внесува забелешка, а системот го менува статусот и ја евидентира промената:
WITH changed AS ( UPDATE reports r SET status = %s WHERE r.report_id = %s 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 = %s) RETURNING r.report_id, r.status ) INSERT INTO status_logs (status, note, report_id, worker_id) SELECT status, %s, report_id, %s 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 = %s ORDER BY l.changed_at;
- Решената пријава повеќе не се прикажува во листата на активни пријави на работникот.
Last modified
12 days ago
Last modified on 09/19/26 00:22:23
Attachments (7)
- UC0005_01_uloga.png (4.3 KB ) - added by 12 days ago.
- UC0005_02_najava.png (6.9 KB ) - added by 12 days ago.
- UC0005_03_dodeleni.png (5.8 KB ) - added by 12 days ago.
- UC0005_04_detali_komentar.png (11.7 KB ) - added by 12 days ago.
- UC0005_05_status.png (14.0 KB ) - added by 12 days ago.
- UC0005_06_zatvorena.png (15.5 KB ) - added by 12 days ago.
- UC0005_07_lista_posle.png (4.7 KB ) - added by 12 days ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.







