Changes between Initial Version and Version 1 of UseCase0007Implementation


Ignore:
Timestamp:
09/19/26 00:23:03 (12 days ago)
Author:
183164
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0007Implementation

    v1 v1  
     1= Имплементација на случај на употреба 0007 - Доделување на пријава на работник =
     2
     3'''Иницијатор:''' Администратор
     4
     5'''Други актери:''' нема
     6
     7Администраторот ги гледа активните пријави без доделен работник, подредени по приоритет, и секоја ја доделува на работник. При изборот го гледа бројот на активни пријави на секој работник, за рамномерна распределба на работата.
     8
     9== Сценарио ==
     10
     111. Корисникот ја избира улогата „Администратор“.
     12
     13[[Image(UC0007_01_uloga.png)]]
     14
     152. Системот ги прикажува администраторите, а корисникот се најавува со избор од листата:
     16{{{#!sql
     17SELECT admin_id, full_name, email FROM admins ORDER BY full_name;
     18}}}
     19
     20[[Image(UC0007_02_najava.png)]]
     21
     223. Системот ги прикажува недоделените активни пријави, прво најитните. Администраторот избира пријава:
     23{{{#!sql
     24SELECT r.report_id, c.name AS category, r.description, r.location_text,
     25       r.priority, r.created_at
     26FROM reports r
     27JOIN categories c ON c.category_id = r.category_id
     28WHERE r.status NOT IN ('resolved', 'rejected')
     29  AND NOT EXISTS (SELECT 1 FROM assignments a WHERE a.report_id = r.report_id)
     30ORDER BY CASE r.priority WHEN 'urgent' THEN 1 WHEN 'high' THEN 2
     31                         WHEN 'medium' THEN 3 ELSE 4 END,
     32         r.created_at;
     33}}}
     34
     35[[Image(UC0007_03_nedodeleni.png)]]
     36
     374. Системот ги прикажува деталите за пријавата и работниците според оптовареноста. Администраторот избира работник и внесува забелешка:
     38{{{#!sql
     39SELECT w.worker_id, w.full_name,
     40       COUNT(r.report_id) FILTER (WHERE r.status NOT IN ('resolved', 'rejected'))
     41           AS active_reports
     42FROM workers w
     43LEFT JOIN assignments a ON a.worker_id = w.worker_id
     44LEFT JOIN reports r     ON r.report_id = a.report_id
     45GROUP BY w.worker_id, w.full_name
     46ORDER BY active_reports, w.full_name;
     47}}}
     48
     49[[Image(UC0007_04_izbor_rabotnik.png)]]
     50
     515. Системот го зачувува доделувањето и прикажува потврда. Ако работникот веќе е доделен на пријавата, базата го одбива внесот (ограничување uq_assignments_report_worker) и системот прикажува порака:
     52{{{#!sql
     53INSERT INTO assignments (note, admin_id, report_id, worker_id)
     54VALUES (%s, %s, %s, %s)
     55RETURNING assignment_id, assigned_at;
     56
     57SELECT a.assignment_id, r.report_id, r.description,
     58       w.full_name AS worker, ad.full_name AS admin, a.assigned_at, a.note
     59FROM assignments a
     60JOIN reports r ON r.report_id = a.report_id
     61JOIN workers w ON w.worker_id = a.worker_id
     62JOIN admins ad ON ad.admin_id = a.admin_id
     63WHERE a.report_id = %s AND a.worker_id = %s;
     64}}}
     65
     66[[Image(UC0007_05_potvrda.png)]]
     67
     686. Пријавата повеќе не се прикажува во листата на недоделени пријави.
     69
     70[[Image(UC0007_06_lista_posle.png)]]