adel
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # ~~System wyboru przedmiotów i specjalizacji - opis funkcjonalności~~ # nieaktualne, trzeba zajrzeć na overleaf ### Role w systemie - student - administrator (np prof Hetmaniok) ### Dostęp do systemu - ekran logowania: adres e-mail i hasło - możliwość zmiany hasła w przypadku, gdy się go zapomniało - możliwość zmiany hasła po zalogowaniu - administrator ma możliwość tworzenia i usuwania kont dla administratorów oraz studentów - domyślnie w systemie utworzone jest jedno konto użytkownika (administratora) z wygenerowanym hasłem ### Przygotowanie systemu: - dotyczy momentu, gdy **studenci nie mają jeszcze dostępu do systemu** - administratorzy wpisują do odpowiedniej tabeli osoby prowadzące zajęcia - zapisywane dane osób prowadzących zajęcia obejmują: - imię - nazwisko - stopień naukowy (dostępne są podpowiedzi) - jest możliwość edycji oraz usuwania osób prowadzących zajęcia - administratorzy wpisują do odpowiedniej tabeli kierunki studiów - zapisywane dane kierunków studiów obejmują: - nazwa (dostępne są podpowiedzi) (np *Informatyka*, *Matematyka*, itp) - stopień (dostępne są podpowiedzi) (*Inżynierskie*, *Magisterskie*, *Jednolite magisterskie*, itp) - tryb (dostępne są podpowiedzi) (*Dzienne*, *Zaoczne*, itp) - rok rozpoczęcia (dostępne są podpowiedzi) (na wypadek, gdyby wybór przedmiotów odbywał się przykładowo i na drugim roku i na trzecim roku) - jest możliwość edycji i usuwania kierunków studiów - dla każdego kierunku studiów administratorzy importują dane studentów: 1. pobranie pliku *.xlsx* (*Excel*) zawierającego tabelę z odpowiednimi nagłówkami do wypełnienia 2. wypełnienie pobranego pliku danymi dotyczącymi studentów (wyszczególnione poniżej) 3. wysłanie wypełnionego arkusza do systemu 4. walidacja danych i zwrócenie informacji o jej przebiegu 5. zapisanie danych w bazie jeśli wszystkie wiersze przeszły walidację, w przeciwnym przypadku cały proces należy powtórzyć po poprawieniu błędów - system rozpoznaje, czy studenci się powtarzają pomiędzy kierunkami studiów - jeśli ten sam student zostanie dodany dla wielu kierunków studiów, zostanie dla niegu utworzone tylko jedno konto użytkownika - zapisywane dane studentów obejmują: - adres email - imię - nazwisko - numer albumu - dla każdego kierunku studiów, który dotyczy studenta: - nazwa kierunku studiów - średnia ocen studenta - jest możliwość dodawania i edycji studentów w odpowiedniej tabeli w systemie - jest możliwość usuwania studentów - dla każdego kierunku studiów administratorzy dodają kategorie przedmiotów przez formularz w systemie - kategorie to przykładowo *Wykład monograficzny I*, *Przedmiot obieralny III* lub *Specjalność* - w ramach każdej z kategorii studenci będą mieli wybór spośród dostępnych opcji (**dostępne *opcje* są przedmiotami lub specjalnościami**) - docelowo w każdej kategorii muszą znajdować się co najmniej 2 opcje - studenci nie mogą dokonywać wyboru, jeśli ten warunek nie jest spełniony - zapisywane dane kategorii obejmują: - nazwa (dostępne są podpowiedzi) (np. *Przedmiot obieralny III* lub *Specjalność*) - data i godzina, w której rozpocznie się wybór opcji (domyślnie wypełnione jako najbliższa północ) - data i godzina, w której kończy się wybór opcji - (nieobowiązkowe) numer semestru, którego dotyczy (dostępne są podpowiedzi) - jest możliwość edycji i usuwania kategorii - dla każdej z kategorii administratorzy dodają dostępne opcje w odpowiedniej tabeli w systemie - **opcje do wyboru są przedmiotami lub specjalnościami** - zapisywane dane opcji do wyboru to: - nazwa (dostępne są podpowiedzi) (np. *Programowanie aplikacji mobilnych* lub *Representative topics of the optimization theory with practical realization*) - zaangażowani prowadzący (wybór tylko z dostępnych podpowiedzi) - język nauczania (dostępne są podpowiedzi) - (nieobowiązkowe) link(i) do kart(y) przedmiotu(ów) - (nieobowiązkowe, jeśli podano maksymalną ilość) minimalna ilość studentów - (nieobowiązkowe, jeśli podano minimalną ilość) maksymalna ilość studentów - jest możliwość edycji i usuwania opcji - po poprawnym dodaniu danych, administratorzy mogą zakończyć fazę przygotowania systemu, wtedy: - tworzone są konta dostępowe dla każdego ze studentów - na adres e-mail każdego ze studentów wysyłana jest wiadomość z wygenerowanym hasłem dostępowym do systemu ### Fazy w systemie (dla każdej kategorii): 1. faza wyboru 2. faza zatwierdzania 3. faza prezentowania przydziałów Każda z kategorii niezależnie od siebie przechodzi przez każdą z powyższych faz. Dzięki temu możliwa jest pełna elastyczność korzystania z systemu. Wszystkie prezentowane poniżej funkcjonalności dotyczą jednej, konkretnej kategorii. Dla każdej z kategorii funkcjonalność jest dokładnie taka sama. ### Opis fazy wyboru dla danej kategorii: - administrator nie ma możliwości dokonywania zmian w danych dotyczących tej kategorii i podlegających jej opcji - studenci wybierają spośród dostępnych opcji - wybór odbywa się przez **uporządkowywanie dostępnych opcji w kolejności od najbardziej pożądanego do najmniej pożądanego** - jest możliwość edycji dokonanych wyborów - jest możliwość wyświetlania swoich danych (e-mail, pozycje rankingowe itd) - jeśli kończy się czas na wybór, a student nie dokonał wyboru w tej kategorii, wysyłane jest ostrzeżenie wiadomością e-mail oraz wyświetlany jest odpowiedni komunikat w systemie - faza kończy się, gdy mija data deadline'u - jeśli student nie dokonał wyboru w tej kategorii, przesuwany jest na ostatnią pozycję w liście rankingowej oraz przyjmowane jest założenie, że wybrał losową kolejność opcji ### Opis fazy zatwierdzania dla danej kategorii: - studenci mają zablokowaną możliwość wyboru i edycji kolejności przedmiotów - studenci mają możliwość wyświetlenia dokonanych wyborów (kolejności przedmiotów w każdej z kategorii) - administratorzy mają zablokowaną możliwość edycji i usuwania danych dla tej kategorii (wliczając w to dodawanie, edycję i usuwanie dostępnych opcji) - administratorom wyświetlane są wszystkie dostępne opcje, wraz z ilością studentów, którzy wybrali go z pierwszego wyboru - administratorzy decydują, które z opcji zostaną otworzone, a które nie - dla każdej z opcji, na którą zapisało się zbyt mało osób, administratorzy mają dostępne dwie akcje: - odrzucenie otwarcia opcji - zatwierdzenie otwarcia opcji - za każdym razem przy odrzuceniu opcji, aktualizują się ilości studentów dla innych opcji (brane pod uwagę są wtedy drugie wybory tych studentów, którzy wybrali odrzuconą opcję jako swój pierwszy wybór) - faza kończy się wtedy, gdy administrator tak zadecyduje - administrator ma możliwość zakończenia tej fazy dla kilku kategorii jednocześnie - faza nie może zostać zakończona, jeżeli istnieje choć jedna niezatwierdzona lub nieodrzucona opcja - w momencie zakończenia tej fazy, wysyłane są wiadomości e-mail do każdego studenta z informacją o tym, która z opcji została mu przydzielona w tej kategorii (jeśli ta faza została zakończona w innych kategoriach w tym samym momencie, to dane dla wszystkich kategorii wysyłane są w jednej wiadomości e-mail) ### Opis fazy prezentowania przydziałów dla danej kategorii: - studenci mogą zobaczyć swoje wyniki przydziałów: - która z opcji została im przydzielona w tej kategorii - które z opcji zostały rzeczywiście otwarte - administratorzy mogą zobaczyć wyniki przydziałów wszystkich studentów: - lista studentów wraz z przydzielonymi im opcjami w tej kategorii lub informacją o statusie wyboru - lista opcji w tej kategorii wraz z przydzielonymi tam studentami i ich liczbą, lub informacją o statusie wyboru - administratorzy mogą filtrować i sortować wyświetlane dane - administratorzy mogą pobrać wyświetlane dane do pliku pdf <!-- ### Docelowy produkt - strona internetowa: - wspiera najnowsze wersje najpopularniejszych przeglądarek - nie wspiera przeglądarek *Internet Explorer*, *Opera Mini* oraz przeglądarek uznanych za martwe - jest responsywna - da się wygodnie korzystać również na wąskich ekranach dotykowych - interfejs oparty o Material Design - aplikacja serwerowa - baza danych --> <!-- ### Funkcjonalność dodatkowa (jeśli wystarczy czasu na realizację): - administratorzy mogą pobrać dane do arkusza z *Excel*a - administratorzy mogą edytować wartości słownikowe - administratorzy mogą zmienić kolejność wyświetlania kategorii - studenci mogą zobaczyć, na której pozycji umieścili wcześniej opcje, który zostały im przydzielone oraz które inne opcje nie zostały otwarte - tryby demonstracyjne systemu są dostępne bez logowania - na urządzeniach mobilnych system może zostać przypięty do ekranu głównego (PWA) --> <!-- - aplikacja mobilna (jeśli wystarczy czasu na realizację): - PWA - interfejs oparty o Material Design --> <!-- ## Dobór technologii - aplikacja serwerowa: - REST API - PostgreSQL - Java - SpringBoot - aplikacja webowa: - React - MaterialUI - Redux Środowiska programistyczne: opcjonalny *Intellij IDEA* z wersjonowaniem jego konfiguracji projektu W każdym przypadku dokładne testy automatyczne oraz systemy kontroli składni kodu. Deploy dev: Aplikacja serwerowa deploy na Heroku, aplikacja webowa deploy gdziekolwiek ## Organizacja pracy sprinty #### Podział obowiązków: - organizacja pracy - zadania, terminy i cele sprintów: Kamil B / Bartek / Kamil R - pilnowanie przestrzegania terminów: Kamil R / Oliwia / ? - weryfikacja wykonania zadań ze sprintów na środowisku deweloperskim: wszyscy - komunikacja z promotorem: Bartek? - komunikacja z osobą recenzującą: - - --- backend: Oliwia, Kamil B, Kamil R(?), Bartek (?) frontend: Kamil B, Kamil R, Bartek - --- - ogólny opis systemu w pracy inżynierskiej - zapotrzbowanie, specyfika, przyczyny decyzji itp: Bartek? - opis organizacji pracy w pracy inżynierskiej: Kamil B? - opis wspólny części klienckiej w pracy inżynierskej: ? - opis bazy danych w pracy inżynierskiej: ? - opis aplikacji serwerowej w pracy inżynierskiej: ? - opis aplikacji webowej w pracy inżynierskiej: ? - opis aplikacji moblinej w pracy inżynierskiej: ? - --- - zarządzanie bazą danych: ? - tworzenie aplikacji serwerowej wraz z logiką biznesową: ? - tworzenie aplikacji webowej: ? - tworzenie aplikacji mobilnej: ? - zarządzanie ewentualną współdzieloną strefą aplikacji mobilnej i webowej: ? - zarządzanie akcjami API oraz pilnowanie przestrzegania REST: ? #### Git flow: - deweloperska gąłąź o nazwie `develop` - każdy może śmiało commitować co chce na tej gałązi (w ramach swojego obszaru), nie trzeba robić pull requestów - główna gałąź o nazwie `master` (lub innej, jaka akurat będzie wtedy domyślna) - na koniec każdego sprintu gałąź `develop` będzie mergowana do tej gałęzi, a commity squashowane. Commity będzie się nazywać numerkami wersji, a nie będzie to powodować żadnych zmian na gałęzi `develop` #### Pierwszy sprint: dwa tygodnie? - wybór nazwy systemu - utworzenie repozytorium projektu na *GitHub*ie - utworzenie projektu pracy inżynierskiej na *Overleaf* - utworzenie konspektu pracy inżynierskiej (sekcje, kategorie, podpunkty itp) - utworzenie projektu UI - przygotowanie środowisk deweloperskich: - utworzenie inicjalnej struktury plików (frontend i backend) - włączenie narzędzi do kontroli składni kodu (np *eslint* na frontendzie, np *checkstyle* na backendzie) - utworzenie pierwszych funkcjonalności: - utworzenie pierwszego ekranu na frontendzie, wyświetlającego nazwę systemu - utworzenie pierwszego endpointu (przykładowo *GET* na `/api/students` zwracającego zmockowaną listę studentów, ale warto tam zaznaczyć w komentarzu, że docelowo ma to być dostępne tylko dla administratorów) - utworzenie pierwszych testów: - utworzenie pierwszych testów na frontendzie (sprawdzających, czy aplikacje się poprawnie uruchamiają oraz czy wyświetlane ekrany zawierają słowa kluczowe, w tym przypadku nazwę aplikacji) - utworzenie pierwszych testów na backendzie (sprawdzających, czy wysyłanie zapytań na utworzony endpoint zwróci poprawny rezultat) - testy jednostkowe??? - deploy do chmury: - utworzenie deweloperskiej bazy danych w wybranej chmurze (np *Heroku*) - deploy backendu do wybranej chmury (np *Heroku*) - deploy strony internetowej do wybranej chmury - deploy aplikacji mobilnej? w jaki sposób? zrobić research - integracja z chmurą w taki sposób, aby zmiana kodu na gałęzi `develop` powodowała automatyczne odświeżenie zdeployowanych aplikacji - zaplanowanie zadań na następny sprint - wolny czas do końca sprintu warto przeznaczyć na refaktoryzację kodu lub dopisanie testów -->

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully