| Version 1 (modified by , 12 days ago) ( diff ) |
|---|
Имплементација на случај на употреба 0007 - Доделување на пријава на работник
Иницијатор: Администратор
Други актери: нема
Администраторот ги гледа активните пријави без доделен работник, подредени по приоритет, и секоја ја доделува на работник. При изборот го гледа бројот на активни пријави на секој работник, за рамномерна распределба на работата.
Сценарио
- Корисникот ја избира улогата „Администратор“.
- Системот ги прикажува администраторите, а корисникот се најавува со избор од листата:
SELECT admin_id, full_name, email FROM admins ORDER BY full_name;
- Системот ги прикажува недоделените активни пријави, прво најитните. Администраторот избира пријава:
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;
- Системот ги прикажува деталите за пријавата и работниците според оптовареноста. Администраторот избира работник и внесува забелешка:
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;
- Системот го зачувува доделувањето и прикажува потврда. Ако работникот веќе е доделен на пријавата, базата го одбива внесот (ограничување uq_assignments_report_worker) и системот прикажува порака:
INSERT INTO assignments (note, admin_id, report_id, worker_id) VALUES (%s, %s, %s, %s) RETURNING assignment_id, assigned_at; 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 = %s AND a.worker_id = %s;
- Пријавата повеќе не се прикажува во листата на недоделени пријави.
Attachments (6)
- UC0007_01_uloga.png (4.2 KB ) - added by 12 days ago.
- UC0007_02_najava.png (5.2 KB ) - added by 12 days ago.
- UC0007_03_nedodeleni.png (7.9 KB ) - added by 12 days ago.
- UC0007_04_izbor_rabotnik.png (12.5 KB ) - added by 12 days ago.
- UC0007_05_potvrda.png (6.3 KB ) - added by 12 days ago.
- UC0007_06_lista_posle.png (6.4 KB ) - added by 12 days ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.






