wiki:appdesign

Version 3 (modified by 155036, 2 weeks ago) ( diff )

--

Апликативен дизајн - Случаи на употреба и Сценарија за пристап до базата - SQL Погледи

Актери

  • Нерегистриран корисник
    • Може да прегледува јавни податоци за настани
    • Нема пристап до напредни анализи и предвидувања
  • Регистриран корисник
    • Има пристап до персонализирани извештаи
    • Може да добива известувања за релевантни настани
    • Може да управува со сопствени поставки
  • Аналитичар
    • Ги анализира податоците за настани, актери и конфликти
    • Генерира детални извештаи
    • Работи со моделите за предвидување
  • Истражувач
    • Ги користи податоците за сопствени истражувања
    • Може да прави пребарувања и извлекува податоци за подлабока анализа
    • Нема пристап до административните функционалности
  • Администратор
    • Управува со корисници и нивните претплати
    • Може да креира, уредува и брише податоци
    • Надгледува и контролира системот

Сценарија

1. Регистрација и најава на корисник

  • Актер: Корисник (аналитичар, истражувач, администратор)
  • Опис: Корисникот се регистрира преку формулар внесувајќи име, презиме, е-пошта и лозинка. По успешна регистрација, може да се најави во системот со своите акредитиви.
  • Алтернативен тек: Ако внесените податоци не се валидни, системот враќа порака за грешка.

2. Преглед на настани

  • Актер: Корисник (аналитичар, истражувач)
  • Опис: Корисникот прегледува листа на регистрирани настани, филтрирани според датум, локација, актер или тип на настан.
  • Алтернативен тек: Ако нема достапни податоци за избраните критериуми, се прикажува порака „Нема резултати за дадените параметри“.

3. Анализа на актер

  • Актер: Аналитичар
  • Опис: Корисникот пребарува специфичен актер и ги анализира неговите поврзани настани, предвидувања и конфликти.
  • Алтернативен тек: Ако актерот не постои, системот враќа порака „Нема информации за избраниот актер“.

4. Генерирање извештаи

  • Актер: Корисник (аналитичар, администратор)
  • Опис: Корисникот избира параметри за извештај (период, актер, локација) и системот генерира табеларен и графички приказ на податоците.
  • Алтернативен тек: Ако нема податоци за избраните критериуми, системот враќа празен извештај со соодветна порака.

5. Следење на конфликти

  • Актер: Аналитичар
  • Опис: Корисникот прегледува прогнози за можни конфликти базирани на ризик фактори и историски податоци.
  • Алтернативен тек: Ако нема достапни предвидувања за избраната област, системот враќа информација „Нема предвидени конфликти“.

6. Управување со претплати

  • Актер: Администратор
  • Опис: Администраторот креира, уредува или брише претплати на корисници врз база на избраниот план (број на анализи, известувања).
  • Алтернативен тек: Ако корисникот нема активна претплата, системот го известува дека треба да се претплати за пристап до функционалностите.

7. Известувања за нови настани

  • Актер: Корисник
  • Опис: Корисникот добива автоматски известувања кога системот регистрира нов настан или предвиден ризик во избраната категорија.
  • Алтернативен тек: Ако нема нови настани или корисникот нема претплата за известувања, системот не испраќа известување.

Најважни случаи на употреба

1. Преглед на настани

SELECT 
    e.global_event_id, e.sql_date, e.event_code, e.goldstein_scale, 
    e.num_mentions, e.num_sources, e.num_articles, e.avg_tone 
FROM events e 
ORDER BY e.sql_date DESC
LIMIT 50;

2. Анализа на актер

SELECT 
    a.actor_name, e.global_event_id, e.event_code, e.sql_date, 
    e.num_mentions, e.avg_tone 
FROM actors a
JOIN event_details ed ON a.actor_id = ed.actor_id
JOIN events e ON ed.global_event_id = e.global_event_id
WHERE a.actor_id = 5003
ORDER BY e.sql_date DESC;

3. Следење на конфликти

SELECT 
    cr.conflict_id, a1.actor_name AS actor_1, 
    a2.actor_name AS actor_2, cr.risk_score, 
    cr.predicted_date, cr.description 
FROM conflict_risk cr
JOIN actors a1 ON cr.actor1_id = a1.actor_id
JOIN actors a2 ON cr.actor2_id = a2.actor_id
WHERE cr.predicted_date >= CURRENT_DATE
ORDER BY cr.risk_score DESC;

4. Генерирање извештаи

SELECT 
    p.prediction_id, e.global_event_id, a.actor_name, 
    p.prediction_type, p.confidence_score, p.predicted_date 
FROM predictions p
JOIN events e ON p.event_id = e.global_event_id
JOIN actors a ON p.actor_id = a.actor_id
WHERE p.predicted_date BETWEEN CURRENT_DATE - INTERVAL '30 days' AND CURRENT_DATE
ORDER BY p.confidence_score DESC;

5. Известувања за нови настани

SELECT 
    n.notification_id, u.email, e.global_event_id, 
    e.event_code, n.notification_date, n.status 
FROM notifications n
JOIN users u ON n.user_id = u.user_id
JOIN events e ON n.event_id = e.global_event_id
WHERE n.notification_date >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY n.notification_date DESC;
Note: See TracWiki for help on using the wiki.