# KTUSA Problemų Sistema (KTUSA-PS) ## Apžvalga **KTUSA-PS** yra **KTU SA (Kauno technologijos universiteto Studentų atstovybės) problemų sprendimo sistema** – internetinė platforma, skirta studentų problemų registravimui, tvarkymui ir sprendimui. ## Technologijų rinkinys ### Backend (.NET) - **Framework**: ASP.NET Core (C#) - **Duomenų bazė**: MySQL su Entity Framework Core - **Autentifikacija**: Microsoft Azure Active Directory (MSAL) su JWT Bearer autentifikacija - **API**: RESTful API su Swagger dokumentacija - **Architektūra**: MVC pattern su atskirtu duomenų sluoksniu ### Frontend (Vue.js) - **Framework**: Vue.js 3 su Composition API - **Maršrutizacija**: Vue Router 4 - **Būsenos valdymas**: Vuex 4 - **UI Framework**: Bootstrap 5 su Bootstrap Icons - **Build Tool**: Vite - **HTTP klientas**: Axios - **Autentifikacija**: Azure MSAL Browser ## Pagrindinės funkcijos ### Studentams 1. **Problemų registravimas** – studentai gali pateikti problemas sistemoje 2. **Problemų tipų pasirinkimas** – galimybė klasifikuoti problemas pagal tipus 3. **Atsiliepimų teikimas** – galimybė komentuoti ir vertinti sprendimus ### Administratoriams 1. **Problemų valdymas** – peržiūrėti, redaguoti ir spręsti pateiktas problemas 2. **Problemų tipų administravimas** – kurti ir tvarkyti problemų kategorijas 3. **Publikavimo kontrolė** – spręsti, kurios problemos ir sprendimai bus viešai matomi 4. **Atsiliepimų moderavimas** – tvarkyti naudotojų atsiliepimus ## Duomenų modelis ### Pagrindinės esybės - **Issue** – problemų registravimas su aprašymu, tipu ir sprendimo būsena - **IssueType** – problemų kategorijos (dvikalbės: LT/EN) - **PublishedProblem** – viešai publikuojamos problemos - **PublishedFeedback** – viešai publikuojami atsiliepimai - **Admin** – administratorių vaidmenys - **Vote** – balsavimo / vertinimo sistema ## Saugumo funkcijos 1. **Azure AD integracija** – autentifikacija per Microsoft Active Directory 2. **Vaidmenų sistema** – atskirtos administratorių ir paprastų naudotojų teisės 3. **JWT tokenų validacija** – saugus API prieigos kontrolės mechanizmas 4. **HTTPS privalomumas** – saugus duomenų perdavimas 5. **Lokalizuoti saugumo perspėjimai** – naudotojų informavimas apie nesaugius ryšius ## Architektūros ypatybės - **SPA (Single Page Application)** – Vue.js kliento dalis su ASP.NET Core serverio dalimi - **RESTful API** – aiškiai struktūrizuotas API dizainas - **Mikroservisų elementai** – atskirtas duomenų sluoksnis (`KTUSAPS.Data`) - **Lokalizacija** – dvi kalbos (lietuvių ir anglų) - **Prisitaikantis dizainas** – sukurtas su Bootstrap, pritaikytas mobiliesiems įrenginiams ## Projekto struktūra ``` KTUSA PS.sln # Visual Studio solution failas ├── KTUSAPS/ # Pagrindinis web aplikacijos projektas │ ├── Controllers/ # API kontroleriai │ │ ├── IssuesController.cs # Problemų valdymo API │ │ ├── IssueTypesController.cs # Problemų tipų API │ │ └── ... │ ├── ClientApp/ # Vue.js frontend aplikacija │ │ ├── src/ │ │ │ ├── components/ # Vue komponentai │ │ │ ├── pages/ # Puslapių komponentai │ │ │ ├── router/ # Maršrutizacijos konfigūracija │ │ │ └── store/ # Vuex būsenos valdymas │ │ ├── package.json │ │ └── vite.config.js │ ├── Auth/ # Autentifikacijos logika │ ├── Services/ # Verslo logikos servisai │ └── Program.cs # Aplikacijos entry point └── KTUSAPS.Data/ # Duomenų sluoksnis ├── Model/ # Entity Framework modeliai ├── Migrations/ # Duomenų bazės migracijos └── SAPSDataContext.cs # DbContext ``` ## Diegimas ir konfigūracija - **Konfigūracijos failai** – `appsettings.json` (taip pat `appsettings.Development.json` vystymui) - **Parengta naudoti su Docker** – tiek Vite, tiek .NET Core dalims - **Duomenų bazės migracijos** – valdomos per Entity Framework Core migracijas - **Swagger dokumentacija** – automatiškai generuojama API dokumentacija ## Paleidimo instrukcijos ### Reikalavimai - .NET 6.0 arba naujesnis - Node.js 16+ ir npm - MySQL serveris ### Serverio dalies paleidimas ```bash cd KTUSAPS dotnet restore dotnet run ``` ### Kliento dalies paleidimas ```bash cd KTUSAPS/ClientApp npm install npm run dev ``` ### Duomenų bazės konfigūracija 1. Sukurkite MySQL duomenų bazę 2. Atnaujinkite prisijungimo eilutę (connection string) faile `appsettings.json` 3. Paleiskite migracijas: ```bash dotnet ef database update ``` ## Pagrindinės sistemos dalys ### Autentifikacija Sistema naudoja Microsoft Azure Active Directory autentifikaciją. Vartotojai prisijungia per savo institucijos paskyrą, o sistema automatiškai nustato jų teises. ### Problemų valdymas - Studentai gali registruoti problemas per intuityvią formą - Administratoriai gali peržiūrėti visas problemas ir jas administruoti - Problemos gali būti skirstomos į tipus ir kategorijas ### Publikavimo sistema - Administratoriai sprendžia, kurios problemos ir sprendimai bus viešai matomi - Publikuotos problemos tampa matomos visiems sistemos naudotojams - Atsiliepimų sistema leidžia vertinti sprendimų kokybę ## Saugumas ir privatumas - Visi duomenys perduodami per HTTPS - Vartotojų duomenys saugomi pagal GDPR reikalavimus - Prieiga prie administratoriaus funkcijų griežtai kontroliuojama - Sistema perspėja apie nesaugius ryšius ar lokalų paleidimą --- Sistema sukurta siekiant pagerinti KTU studentų problemų sprendimo procesus, užtikrinant skaidrumą, efektyvumą ir saugumą visame problemų valdymo cikle.