Changes between Initial Version and Version 1 of UseCase0005


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

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0005

    v1 v1  
     1= Случај на употреба 0005 - Обработка на доделена пријава =
     2
     3'''Иницијатор:''' Општински работник
     4
     5'''Други актери:''' нема
     6
     7Работникот ги гледа пријавите што му се доделени и сè уште не се решени, подредени по приоритет. Откако ќе интервенира на терен, тој додава коментар за направената работа и го менува статусот на пријавата. Секоја промена на статусот се евидентира во историјата, заедно со работникот кој ја направил. Системот дозволува промена само на пријави кои се доделени на тој работник.
     8
     9== Сценарио ==
     10
     111. Работникот се најавува со е-пошта и лозинка.
     12
     132. Системот ги вчитува податоците за работникот:
     14{{{#!sql
     15SELECT worker_id, full_name
     16FROM workers
     17WHERE email = 'dejan.jovanovski@skopje.gov.mk';
     18}}}
     19
     203. Системот ги прикажува доделените активни пријави, прво најитните:
     21{{{#!sql
     22SELECT r.report_id, c.name AS category, r.description, r.location_text,
     23       r.status, r.priority, r.created_at
     24FROM assignments a
     25JOIN reports r    ON r.report_id = a.report_id
     26JOIN categories c ON c.category_id = r.category_id
     27WHERE a.worker_id = 4
     28  AND r.status NOT IN ('resolved', 'rejected')
     29ORDER BY CASE r.priority
     30             WHEN 'urgent' THEN 1 WHEN 'high' THEN 2
     31             WHEN 'medium' THEN 3 ELSE 4
     32         END,
     33         r.created_at;
     34}}}
     35
     364. Работникот избира пријава.
     37
     385. Системот ги прикажува деталите за пријавата, контактот на граѓанинот и забелешката од администраторот:
     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 = 4
     46WHERE r.report_id = 4;
     47}}}
     48
     496. По интервенцијата на терен, работникот пишува коментар за направената работа.
     50
     517. Системот го зачувува коментарот, само ако пријавата е доделена на работникот:
     52{{{#!sql
     53INSERT INTO comments (content, report_id, worker_id)
     54SELECT 'Цевката е заменета, водата е вратена во системот.', 4, 4
     55WHERE EXISTS (SELECT 1 FROM assignments WHERE report_id = 4 AND worker_id = 4)
     56RETURNING comment_id, created_at;
     57}}}
     58
     598. Работникот го избира новиот статус („resolved“) и внесува забелешка.
     60
     619. Системот го менува статусот на пријавата и ја евидентира промената во историјата во една команда. Промената се прави само ако пријавата е доделена на работникот и сè уште не е затворена:
     62{{{#!sql
     63WITH changed AS (
     64    UPDATE reports r
     65    SET status = 'resolved'
     66    WHERE r.report_id = 4
     67      AND r.status NOT IN ('resolved', 'rejected')
     68      AND EXISTS (SELECT 1 FROM assignments a
     69                  WHERE a.report_id = r.report_id AND a.worker_id = 4)
     70    RETURNING r.report_id, r.status
     71)
     72INSERT INTO status_logs (status, note, report_id, worker_id)
     73SELECT status, 'Дефектот е отстранет, шахтата е затворена.', report_id, 4
     74FROM changed
     75RETURNING log_id, status, changed_at;
     76}}}
     77
     7810. Системот ја прикажува ажурираната историја на пријавата:
     79{{{#!sql
     80SELECT l.status, l.changed_at, l.note, w.full_name
     81FROM status_logs l
     82LEFT JOIN workers w ON w.worker_id = l.worker_id
     83WHERE l.report_id = 4
     84ORDER BY l.changed_at;
     85}}}
     86
     8711. Пријавата повеќе не се прикажува во листата на активни пријави на работникот (чекор 3).