Changes between Initial Version and Version 1 of UseCase0005Implementation


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

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0005Implementation

    v1 v1  
     1= Имплементација на случај на употреба 0005 - Обработка на доделена пријава =
     2
     3'''Иницијатор:''' Општински работник
     4
     5'''Други актери:''' нема
     6
     7Работникот ги гледа своите доделени активни пријави, подредени по приоритет. За избрана пријава додава коментари, го менува статусот (само во дозволениот следен статус) и може да го промени приоритетот. Секоја промена на статусот се евидентира во историјата. Промени се дозволени само на пријави доделени на тој работник.
     8
     9== Сценарио ==
     10
     111. Корисникот ја избира улогата „Општински работник“.
     12
     13[[Image(UC0005_01_uloga.png)]]
     14
     152. Системот ги прикажува работниците, а корисникот се најавува со избор од листата:
     16{{{#!sql
     17SELECT worker_id, full_name, email FROM workers ORDER BY full_name;
     18}}}
     19
     20[[Image(UC0005_02_najava.png)]]
     21
     223. Системот ги прикажува доделените активни пријави, прво најитните. Работникот избира пријава:
     23{{{#!sql
     24SELECT r.report_id, c.name AS category, r.description, r.location_text,
     25       r.status, r.priority, r.created_at
     26FROM assignments a
     27JOIN reports r    ON r.report_id = a.report_id
     28JOIN categories c ON c.category_id = r.category_id
     29WHERE a.worker_id = %s
     30  AND r.status NOT IN ('resolved', 'rejected')
     31ORDER BY CASE r.priority WHEN 'urgent' THEN 1 WHEN 'high' THEN 2
     32                         WHEN 'medium' THEN 3 ELSE 4 END,
     33         r.created_at;
     34}}}
     35
     36[[Image(UC0005_03_dodeleni.png)]]
     37
     384. Системот ги прикажува деталите за пријавата. Работникот избира „Додај коментар“ и го внесува коментарот, а системот го зачувува:
     39{{{#!sql
     40SELECT r.report_id, r.description, r.location_text, r.latitude, r.longitude,
     41       r.status, r.priority, ci.full_name AS citizen, ci.phone,
     42       a.assigned_at, a.note AS admin_note
     43FROM reports r
     44JOIN citizens ci   ON ci.citizen_id = r.citizen_id
     45JOIN assignments a ON a.report_id = r.report_id AND a.worker_id = %s
     46WHERE r.report_id = %s;
     47
     48INSERT INTO comments (content, report_id, worker_id)
     49SELECT %s, %s, %s
     50WHERE EXISTS (SELECT 1 FROM assignments WHERE report_id = %s AND worker_id = %s)
     51RETURNING comment_id, created_at;
     52}}}
     53
     54[[Image(UC0005_04_detali_komentar.png)]]
     55
     565. Работникот избира „Промени статус“. Системот ги нуди само дозволените следни статуси. Работникот избира „Решена“ и внесува забелешка, а системот го менува статусот и ја евидентира промената:
     57{{{#!sql
     58WITH changed AS (
     59    UPDATE reports r
     60    SET status = %s
     61    WHERE r.report_id = %s
     62      AND r.status NOT IN ('resolved', 'rejected')
     63      AND EXISTS (SELECT 1 FROM assignments a
     64                  WHERE a.report_id = r.report_id AND a.worker_id = %s)
     65    RETURNING r.report_id, r.status
     66)
     67INSERT INTO status_logs (status, note, report_id, worker_id)
     68SELECT status, %s, report_id, %s
     69FROM changed
     70RETURNING log_id, status, changed_at;
     71}}}
     72
     73[[Image(UC0005_05_status.png)]]
     74
     756. Системот прикажува дека пријавата е затворена, заедно со целата историја на статусот:
     76{{{#!sql
     77SELECT l.status, l.changed_at, l.note, w.full_name
     78FROM status_logs l
     79LEFT JOIN workers w ON w.worker_id = l.worker_id
     80WHERE l.report_id = %s
     81ORDER BY l.changed_at;
     82}}}
     83
     84[[Image(UC0005_06_zatvorena.png)]]
     85
     867. Решената пријава повеќе не се прикажува во листата на активни пријави на работникот.
     87
     88[[Image(UC0005_07_lista_posle.png)]]