| Version 1 (modified by , 12 days ago) ( diff ) |
|---|
Случај на употреба 0007 - Доделување на пријава на работник
Иницијатор: Администратор
Други актери: нема
Администраторот ги прегледува новите пријави кои сè уште не се доделени на ниту еден работник и секоја од нив ја доделува на соодветен работник. За да ја распредели работата рамномерно, тој го гледа бројот на активни пријави на секој работник. При доделувањето може да остави забелешка со упатства. Истиот работник не може двапати да биде доделен на истата пријава.
Сценарио
- Администраторот се најавува и избира „Недоделени пријави“.
- Системот ги прикажува активните пријави без доделен работник, прво најитните:
SELECT r.report_id, c.name AS category, r.description, r.location_text, r.priority, r.created_at FROM reports r JOIN categories c ON c.category_id = r.category_id WHERE r.status NOT IN ('resolved', 'rejected') AND NOT EXISTS (SELECT 1 FROM assignments a WHERE a.report_id = r.report_id) ORDER BY CASE r.priority WHEN 'urgent' THEN 1 WHEN 'high' THEN 2 WHEN 'medium' THEN 3 ELSE 4 END, r.created_at;
- Администраторот избира пријава (на пример затнатиот одвод, пријава 10) и избира „Додели“.
- Системот ги прикажува работниците со бројот на нивни активни пријави, од најмалку оптоварениот:
SELECT w.worker_id, w.full_name, COUNT(r.report_id) FILTER (WHERE r.status NOT IN ('resolved', 'rejected')) AS active_reports FROM workers w LEFT JOIN assignments a ON a.worker_id = w.worker_id LEFT JOIN reports r ON r.report_id = a.report_id GROUP BY w.worker_id, w.full_name ORDER BY active_reports, w.full_name;
- Администраторот избира работник и внесува забелешка (незадолжително).
- Системот го зачувува доделувањето:
INSERT INTO assignments (note, admin_id, report_id, worker_id) VALUES ('Да се провери по следниот дожд и да се исчисти одводот.', 2, 10, 4) RETURNING assignment_id, assigned_at;
- Ако работникот веќе е доделен на истата пријава, базата го одбива внесот поради ограничувањето uq_assignments_report_worker, и системот прикажува порака за грешка.
- Системот прикажува потврда за доделувањето:
SELECT a.assignment_id, r.report_id, r.description, w.full_name AS worker, ad.full_name AS admin, a.assigned_at, a.note FROM assignments a JOIN reports r ON r.report_id = a.report_id JOIN workers w ON w.worker_id = a.worker_id JOIN admins ad ON ad.admin_id = a.admin_id WHERE a.report_id = 10;
- Пријавата повеќе не се прикажува во листата на недоделени пријави (чекор 2) и се појавува во листата на активни пријави на работникот (UC0005, чекор 3).
Note:
See TracWiki
for help on using the wiki.
