Changes between Version 1 and Version 2 of Project


Ignore:
Timestamp:
09/13/26 21:29:39 (12 days ago)
Author:
223235
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Project

    v1 v2  
    1 == Project Description
    2 
    3 
    4 == Податочни побарувања
    5 === Ентитети
    6 
    7 
    8 
    9 **ADMIN**
    10 * user_id int, примарен клуч DEFAULT 1
    11 * CONSTRAINT fk_admin_user
    12         FOREIGN KEY (user_id)
    13         REFERENCES api_user(user_id)
    14         ON UPDATE CASCADE
    15 \\test
    16 test
    17 test
     1## Project Description
     2
     3Овој проект претставува интегриран информациски систем за организирање на процесот на нарачување, подготовка и доставување храна и пијалоци од ресторани до компании. Неговата главна цел е да овозможи контролирана соработка помеѓу рестораните и компаниите, преку која вработените во компаниите можат да нарачуваат оброци за време на работното време.
     4
     5Системот ги опфаќа сите поважни аспекти од процесот: управување со корисници, компании и ресторани, дефинирање договори за соработка, креирање менија, евидентирање нарачки, организирање достава, издавање фактури, оставање рецензии и водење програма за лојалност.
     6
     7Сите лица што го користат системот најпрво се евидентираат како корисници. За секој корисник се чуваат име, презиме, адреса за електронска пошта и телефонски број. Електронската пошта мора да биде единствена и да има правилен формат, додека телефонскиот број, доколку е внесен, исто така мора да биде единствен и форматиран според предвидените правила.
     8
     9Корисниците се поделени во три меѓусебно исклучиви улоги:
     10
     11- администратор;
     12- клиент, односно вработен во компанија;
     13- доставувач.
     14
     15На тој начин, една корисничка сметка не може истовремено да има повеќе различни улоги.
     16
     17Администраторите се поврзани со рестораните и се одговорни за управување со податоците што се однесуваат на соодветниот ресторан. Еден администратор припаѓа на точно еден ресторан, додека еден ресторан може да има повеќе администратори.
     18
     19Слично правило важи и за доставувачите. Секој доставувач работи за еден ресторан, а ресторанот може да располага со повеќе доставувачи. Клиентите се поврзани директно со компанијата во која работат. Еден клиент може да припаѓа на една компанија, додека една компанија може да има повеќе регистрирани клиенти кои преку системот создаваат сопствени нарачки.
     20
     21За секоја компанија се чуваат нејзиното име и адреса, при што името мора да биде единствено. За рестораните се чуваат подетални информации, како име, локација, електронска пошта, телефонски број и веб-страница. Електронската пошта и телефонскиот број на ресторанот мора да бидат единствени. Овие информации овозможуваат прецизно идентификување на деловните субјекти и нивно правилно поврзување со останатите податоци во системот.
     22
     23Соработката помеѓу компаниите и рестораните се реализира преку договори. Секој договор поврзува една компанија со еден ресторан и содржи датум на почеток, датум на завршување и соодветен статус. Датумот на завршување не може да биде пред датумот на почеток.
     24
     25Со чувањето на договорите како посебни записи може да се води историја на претходните соработки, како и да се проверува дали определен договор е активен во моментот на нарачувањето. Базата овозможува една компанија и еден ресторан да учествуваат во повеќе договори во различни временски периоди. Валидноста на активниот договор е едно од главните деловни правила при изборот на храна, пијалоци и доставувач.
     26
     27За секој договор може да се дефинираат термини за ручек. Терминот содржи ден во неделата, време на почеток и завршување, како и временско ограничување за предвремено нарачување. Времето на завршување мора да биде по времето на почеток, а вредноста за предвремено нарачување не смее да биде негативна.
     28
     29Терминот може да биде поврзан и со конкретна групна нарачка на компанијата. Ова овозможува доставата да се приспособи на работното време и на паузите за ручек во различни компании.
     30
     31Секој ресторан располага со сопствено мени составено од јадења и пијалоци. За јадењата се чуваат:
     32
     33- назив;
     34- опис;
     35- цена;
     36- тежина;
     37- категорија;
     38- ресторан што го нуди јадењето.
     39
     40Цената на јадењето не смее да биде негативна, а тежината мора да биде поголема од нула. Називот на јадењето мора да биде единствен во рамките на еден ресторан. Категориите овозможуваат јадењата да се групираат, на пример, како појадок, главно јадење, салата или десерт.
     41
     42За пијалоците се чуваат:
     43
     44- назив;
     45- цена;
     46- количина во милилитри;
     47- ресторан што го нуди пијалокот.
     48
     49И кај пијалоците цената не смее да биде негативна, количината мора да биде позитивна, а називот мора да биде единствен во рамките на ресторанот.
     50
     51Составот на јадењата е моделиран преку состојки. Едно јадење може да содржи повеќе состојки, а една состојка може да се користи во повеќе јадења. Дополнително, состојките се поврзуваат со алергени. Една состојка може да содржи повеќе алергени, а ист алерген може да биде присутен во повеќе состојки.
     52
     53За секој алерген се чуваат име и опис. Преку овие врски може да се утврди кои алергени потенцијално ги содржи определено јадење, што е особено важно за клиентите со алергии или специфични прехранбени ограничувања.
     54
     55Процесот на нарачување е организиран на две нивоа. На првото ниво се наоѓа компаниската нарачка, која претставува заедничка нарачка за една компанија. Во неа се групираат поединечните нарачки на вработените.
     56
     57На второто ниво се наоѓа клиентската нарачка, создадена од конкретен вработен. За неа се чуваат:
     58
     59- датум и време на креирање;
     60- статус на нарачката;
     61- вкупен износ;
     62- клиент што ја направил нарачката;
     63- компаниска нарачка во која припаѓа.
     64
     65Системот проверува дали клиентот што ја креира нарачката припаѓа на истата компанија за која е создадена компаниската нарачка. Со тоа се спречува вработен од една компанија да додава нарачки во групната нарачка на друга компанија.
     66
     67Во секоја клиентска нарачка може да бидат вклучени повеќе јадења и пијалоци. Поврзувањето се реализира преку посебни табели за нарачани јадења и нарачани пијалоци. Пред да биде прифатен производот, се проверува дали ресторанот што го нуди има важечки договор со компанијата на клиентот.
     68
     69Вкупниот износ на нарачката не се внесува произволно, туку автоматски се пресметува од цените на избраните јадења и пијалоци. При додавање, промена или отстранување ставка, вкупната вредност повторно се пресметува. Со тоа се намалува можноста за појава на неконзистентни податоци.
     70
     71За компаниската нарачка може да се организира една достава. Во записот за доставата се чуваат:
     72
     73- датум на доставување;
     74- статус на доставата;
     75- дополнителни забелешки;
     76- доставувач задолжен за транспортот.
     77
     78При доделување доставувач се проверува дали тој работи за ресторан што има активен договор со компанијата. Статусите овозможуваат следење на доставата низ различни фази, како создадена, доделена, во тек или завршена.
     79
     80За секоја компаниска нарачка може да се создаде и една фактура. На овој начин повеќе индивидуални нарачки на вработените можат да бидат обединети во една пресметка за компанијата.
     81
     82Системот поддржува и оценување на услугата. Основната рецензија содржи:
     83
     84- коментар;
     85- време на креирање;
     86- општа оцена од еден до пет.
     87
     88Рецензиите се специјализираат како рецензии за нарачка или рецензии за достава. Кај нарачката дополнително се оценуваат квалитетот на храната и ресторанот, додека кај доставата се оценуваат доставувачот и брзината на доставувањето.
     89
     90Една нарачка или достава може да има најмногу една соодветна рецензија, со што се спречува повеќекратно оценување на истиот запис.
     91
     92Дополнителна функционалност на системот е програмата за лојалност. Секој клиент може да има еден запис со:
     93
     94- тековен број поени;
     95- статус на лојалност;
     96- датум на зачленување;
     97- ниво на лојалност.
     98
     99Нивоата на лојалност се определуваат според минимален и максимален број поени и можат да обезбедуваат различни поволности, како:
     100
     101- попуст;
     102- бесплатна достава;
     103- приоритетна корисничка поддршка.
     104
     105Поените се пресметуваат врз основа на историјата и вредноста на нарачките, при што откажаните нарачки не придонесуваат кон вкупниот број поени.
     106
     107Базата содржи функции, процедури и тригери преку кои се спроведуваат главните деловни правила. Тие ги извршуваат следните задачи:
     108
     109- проверуваат дали постои активен договор;
     110- ја пресметуваат вкупната цена на нарачката;
     111- ги освежуваат поените за лојалност;
     112- создаваат и финализираат нарачки;
     113- додаваат и отстрануваат производи;
     114- доделуваат доставувачи;
     115- го контролираат менувањето на статусите;
     116- го спречуваат внесувањето невалидни податоци.
     117
     118Дополнително, креираните погледи овозможуваат поедноставен приказ на менијата, целосните нарачки, доставите, рецензиите, приходите од договорите, корисниците на компаниите, фактурирањето и програмата за лојалност.
     119
     120На овој начин, проектот не претставува само едноставна апликација за нарачување храна, туку целосен систем за управување со деловната соработка помеѓу компании и ресторани. Релацискиот модел овозможува централизирано и конзистентно чување на податоците, додека ограничувањата и автоматизираната логика ја заштитуваат базата од невалидни нарачки, погрешни пресметки и недозволени поврзувања меѓу корисниците, компаниите, рестораните и доставувачите.
     121
     122## Податочни побарувања
     123
     124### Кориснички улоги
     125
     126Системот дефинира три основни кориснички улоги:
     127
     128- **API_ADMIN** – администратор поврзан со ресторан;
     129- **CUSTOMER** – клиент или вработен поврзан со компанија;
     130- **DRIVER** – доставувач поврзан со ресторан.
     131
     132Секој корисник може да има само една од наведените улоги.
     133
     134### Компании и ресторани
     135
     136Системот треба да овозможи:
     137
     138- регистрирање компании и нивните адреси;
     139- регистрирање ресторани и нивните контактни информации;
     140- поврзување клиенти со компании;
     141- поврзување администратори и доставувачи со ресторани;
     142- склучување и следење договори меѓу компании и ресторани;
     143- проверка на временската важност и статусот на договорите.
     144
     145### Мени
     146
     147Секој ресторан треба да може да располага со сопствено мени составено од:
     148
     149- јадења;
     150- пијалоци;
     151- категории на јадења;
     152- состојки;
     153- алергени.
     154
     155Системот треба да овозможи едно јадење да содржи повеќе состојки и една состојка да се користи во повеќе јадења. Исто така, треба да биде можно поврзување на состојките со алергени.
     156
     157### Нарачки
     158
     159Системот треба да овозможи:
     160
     161- создавање компаниски нарачки;
     162- групирање повеќе клиентски нарачки во една компаниска нарачка;
     163- додавање јадења и пијалоци во клиентските нарачки;
     164- автоматско пресметување на вкупниот износ;
     165- следење на статусот на нарачката;
     166- проверка дали клиентот нарачува за сопствената компанија;
     167- проверка дали компанијата има активен договор со ресторанот.
     168
     169### Достава и фактурирање
     170
     171За компаниските нарачки системот треба да овозможи:
     172
     173- создавање и доделување достава;
     174- избор на соодветен доставувач;
     175- следење на статусот на доставата;
     176- внесување забелешки;
     177- поврзување на една фактура со една компаниска нарачка.
     178
     179### Рецензии
     180
     181Корисниците треба да можат да оставаат:
     182
     183- општа оцена и коментар;
     184- оцена за храната;
     185- оцена за ресторанот;
     186- оцена за доставувачот;
     187- оцена за брзината на доставата.
     188
     189Сите оценки мора да бидат во интервал од еден до пет.
     190
     191### Програма за лојалност
     192
     193Системот треба да овозможи:
     194
     195- евидентирање поени за клиентите;
     196- автоматско пресметување на поените;
     197- определување ниво на лојалност;
     198- доделување попусти;
     199- овозможување бесплатна достава;
     200- овозможување приоритетна поддршка.