wiki:UseCase0007

Version 1 (modified by 183164, 12 days ago) ( diff )

--

Случај на употреба 0007 - Доделување на пријава на работник

Иницијатор: Администратор

Други актери: нема

Администраторот ги прегледува новите пријави кои сè уште не се доделени на ниту еден работник и секоја од нив ја доделува на соодветен работник. За да ја распредели работата рамномерно, тој го гледа бројот на активни пријави на секој работник. При доделувањето може да остави забелешка со упатства. Истиот работник не може двапати да биде доделен на истата пријава.

Сценарио

  1. Администраторот се најавува и избира „Недоделени пријави“.
  1. Системот ги прикажува активните пријави без доделен работник, прво најитните:
    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;
    
  1. Администраторот избира пријава (на пример затнатиот одвод, пријава 10) и избира „Додели“.
  1. Системот ги прикажува работниците со бројот на нивни активни пријави, од најмалку оптоварениот:
    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;
    
  1. Администраторот избира работник и внесува забелешка (незадолжително).
  1. Системот го зачувува доделувањето:
    INSERT INTO assignments (note, admin_id, report_id, worker_id)
    VALUES ('Да се провери по следниот дожд и да се исчисти одводот.', 2, 10, 4)
    RETURNING assignment_id, assigned_at;
    
  1. Ако работникот веќе е доделен на истата пријава, базата го одбива внесот поради ограничувањето uq_assignments_report_worker, и системот прикажува порака за грешка.
  1. Системот прикажува потврда за доделувањето:
    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;
    
  1. Пријавата повеќе не се прикажува во листата на недоделени пријави (чекор 2) и се појавува во листата на активни пријави на работникот (UC0005, чекор 3).
Note: See TracWiki for help on using the wiki.