== Апликативен дизајн - Случаи на употреба и Сценарија за пристап до базата - 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; }}}