Changes between Initial Version and Version 1 of UseCase0007


Ignore:
Timestamp:
09/18/26 22:21:02 (12 days ago)
Author:
183164
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0007

    v1 v1  
     1= Случај на употреба 0007 - Доделување на пријава на работник =
     2
     3'''Иницијатор:''' Администратор
     4
     5'''Други актери:''' нема
     6
     7Администраторот ги прегледува новите пријави кои сè уште не се доделени на ниту еден работник и секоја од нив ја доделува на соодветен работник. За да ја распредели работата рамномерно, тој го гледа бројот на активни пријави на секој работник. При доделувањето може да остави забелешка со упатства. Истиот работник не може двапати да биде доделен на истата пријава.
     8
     9== Сценарио ==
     10
     111. Администраторот се најавува и избира „Недоделени пријави“.
     12
     132. Системот ги прикажува активните пријави без доделен работник, прво најитните:
     14{{{#!sql
     15SELECT r.report_id, c.name AS category, r.description, r.location_text,
     16       r.priority, r.created_at
     17FROM reports r
     18JOIN categories c ON c.category_id = r.category_id
     19WHERE r.status NOT IN ('resolved', 'rejected')
     20  AND NOT EXISTS (SELECT 1 FROM assignments a WHERE a.report_id = r.report_id)
     21ORDER BY CASE r.priority
     22             WHEN 'urgent' THEN 1 WHEN 'high' THEN 2
     23             WHEN 'medium' THEN 3 ELSE 4
     24         END,
     25         r.created_at;
     26}}}
     27
     283. Администраторот избира пријава (на пример затнатиот одвод, пријава 10) и избира „Додели“.
     29
     304. Системот ги прикажува работниците со бројот на нивни активни пријави, од најмалку оптоварениот:
     31{{{#!sql
     32SELECT w.worker_id, w.full_name,
     33       COUNT(r.report_id) FILTER (WHERE r.status NOT IN ('resolved', 'rejected')) AS active_reports
     34FROM workers w
     35LEFT JOIN assignments a ON a.worker_id = w.worker_id
     36LEFT JOIN reports r     ON r.report_id = a.report_id
     37GROUP BY w.worker_id, w.full_name
     38ORDER BY active_reports, w.full_name;
     39}}}
     40
     415. Администраторот избира работник и внесува забелешка (незадолжително).
     42
     436. Системот го зачувува доделувањето:
     44{{{#!sql
     45INSERT INTO assignments (note, admin_id, report_id, worker_id)
     46VALUES ('Да се провери по следниот дожд и да се исчисти одводот.', 2, 10, 4)
     47RETURNING assignment_id, assigned_at;
     48}}}
     49
     507. Ако работникот веќе е доделен на истата пријава, базата го одбива внесот поради ограничувањето uq_assignments_report_worker, и системот прикажува порака за грешка.
     51
     528. Системот прикажува потврда за доделувањето:
     53{{{#!sql
     54SELECT a.assignment_id, r.report_id, r.description,
     55       w.full_name AS worker, ad.full_name AS admin, a.assigned_at, a.note
     56FROM assignments a
     57JOIN reports r ON r.report_id = a.report_id
     58JOIN workers w ON w.worker_id = a.worker_id
     59JOIN admins ad ON ad.admin_id = a.admin_id
     60WHERE a.report_id = 10;
     61}}}
     62
     639. Пријавата повеќе не се прикажува во листата на недоделени пријави (чекор 2) и се појавува во листата на активни пријави на работникот (UC0005, чекор 3).