wiki.ziemers.de

ziemer's informatik Wiki

Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiki:software:beuthbot:berichte:ss2020:zwischen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
wiki:software:beuthbot:berichte:ss2020:zwischen [04.06.2020 12:20]
Lukas Danckwerth [Done so far]
wiki:software:beuthbot:berichte:ss2020:zwischen [04.06.2020 15:58] (aktuell)
Lukas Danckwerth
Zeile 8: Zeile 8:
   * Denny Schumann   * Denny Schumann
  
-====Übersicht (Fragen, die beantwortet werden sollten)====+====Inhaltsangabe==== 
 +   
 +  - Einleitung / Aktueller Stand 
 +  - BeuthBot-Projekt 
 +  - deconcentrator-js 
 +  - Virtuellen Machine 
 +  - Funktionale Anforderungen 
 +  - Persistenz & Cache 
 +  - Microservices 
 +  - Ausblick 
  
 ===Was haben wir vorgefunden?=== ===Was haben wir vorgefunden?===
 Es wurden verschieden Github Projekte wie, Telegram Bot, Gateway, Deconcentrator, Rasa, Registry, Weather, Scraper( Öffnungszeiten ) und Mensa vorgefunden. Jedes dieser Projekte besaß seine eigene docker-compose.yml file. Die in jedem Projekt vorgefundenen .env Dateien waren wie zu erwarten leer, leider wurde in der Dokumentation nicht beschrieben wie diese zu befüllen sind. Zudem existierte ein Token, welcher für den Telegram Bot benötigt wurde. Ebenso konnte der Bot nicht vollständig ausgeführt werden, da der Service Deconcentrator fehlerhaft war. Auch konnte die virtuelle Maschine, welche zur verfügung gestellt wurde nicht standart gemäß ausgeführt werden. Leider wies die Dokumentation einige Lücken, im bezug auf das starten des Bots auf, wodurch es zu vielen Selbstrechergen und verzögerungen kam. Auch fehlte die Zugangsberechtigung des Servers, auf dem der Bot lief, da es ein “privater” Server eines Studenten gewesen war. Es wurden verschieden Github Projekte wie, Telegram Bot, Gateway, Deconcentrator, Rasa, Registry, Weather, Scraper( Öffnungszeiten ) und Mensa vorgefunden. Jedes dieser Projekte besaß seine eigene docker-compose.yml file. Die in jedem Projekt vorgefundenen .env Dateien waren wie zu erwarten leer, leider wurde in der Dokumentation nicht beschrieben wie diese zu befüllen sind. Zudem existierte ein Token, welcher für den Telegram Bot benötigt wurde. Ebenso konnte der Bot nicht vollständig ausgeführt werden, da der Service Deconcentrator fehlerhaft war. Auch konnte die virtuelle Maschine, welche zur verfügung gestellt wurde nicht standart gemäß ausgeführt werden. Leider wies die Dokumentation einige Lücken, im bezug auf das starten des Bots auf, wodurch es zu vielen Selbstrechergen und verzögerungen kam. Auch fehlte die Zugangsberechtigung des Servers, auf dem der Bot lief, da es ein “privater” Server eines Studenten gewesen war.
  
-===Was haben wir gemacht?=== +==Initial Project State==
-Es wurde anfangs versucht alle Docker-Container der einzelnen Services des Bots lokal zu starten. Dabei musste erst einmal herausgefunden werden welche URLs bzw. welcher Token zu benutzen war. Da wir keinen Token in der bereits vorhandenen Dokumentation finden konnten bzw. es keinen hinterlegten gab, wurden übergangsweise mehrere Test-Tokens mit BotFather erstellt. Ebenso wurde versucht die Container sowohl auf Windows, also auch auf Linux zu starten. +
-Daraufhin wurde versucht das Image des Beuth Bots auf einer virtuellen Maschine zu starten. Um dies ausführen zu können musste Anfangs erst einmal die Datei mit lz4 dekomprimiert werden. Dafür musste erst einmal das Github lz4( https://github.com/lz4/lz4 ) gedownloadet und ausgeführt werden, welches einige Zeit in Anspruch nahm. Danach wurde die kvm Datei mit qemu zu einer vdi Datei konvertiert, damit VirtuelBox diese Datei akzeptiert. Nach dem erfolgreichen starten der virtuellen Maschine gab es das Problem, dass das Passwort nicht richtig war, welches uns gegeben wurde. Letztendlich musste dies mit folgenden Codezeilen umgangen werden: +
- +
-<code> +
-mount -o remount,rw / +
-passwd +
-# passwort eurer wahl eingeben +
-# oder, müsste auch gehen: +
-passwd --delete +
-mount -o remount,ro / +
-</code> +
- +
-Nun wurde der Beuth Bot gestartet, konnte allerdings nicht in Betrieb genommen werden, da dieser keine Netzwerkverbindung nach draußen hatte. Daraufhin wurde uns ein Server auf der Beuth zur verfügung gestellt, auf welchem der Beuth Bot letztendlich laufen sollte. Nachdem dieser dort versucht wurde eingerichtet zu werden, fehlte es dem Server an zugewiesenem Speicher, was erst behoben werden musste um den Bot vollständig installieren und in Betrieb nehmen zu können. Es konnten nach der Behebung des fehlenden Speichers letztendlich fast alle Docker-Container erfolgreich gestartet werden, bis auf den Service Deconcentrator, welcher sich erst nicht richtig starten ließ und als er lief nicht funktionierte.  Nach mehreren Wochen der Versuche diesen Service zum laufen zu bekommen entschieden wir uns in Absprache mit Herrn Ziemer diesen zu verwerfen und einen neuen Deconcentrator zu schreiben.  +
- +
-===Wo stehen wir gerade?=== +
-Aktuell Ist der Beuth Bot vollständig in Betrieb genommen, dank des neu geschriebenen Deconcentrators. Ebenso liegt dieser nun, auf einem für uns zugreifbaren Server, welcher dort erfolgreich in Betrieb genommen wurde. Auch wurde er nun ermöglicht den gesamten Bot, welcher 8 Services beinhaltet mit zwei docker-compose files zu starten. Das Projekt wurde nun in 2 Git Submodule unterteilt, welche in Zukunft leichter bearbeitet werden können. Ebenfalls wurden sowohl in diesem Semester zu bearbeitende, also auch zukünftige Projektideen erschlossen. Die Arbeitsteilung der einzelnen Gruppenmitglieder wurde durchgeführt und ein Zwischenbericht wurde angelegt. +
- +
-  * was werden wir tun? +
- +
-====Initial State==== +
- +
-Starting this project we found the following structure: +
 <uml> <uml>
 @startuml @startuml
Zeile 73: Zeile 59:
 </uml> </uml>
  
 +===Was haben wir gemacht?===
 +Es wurde anfangs versucht alle Docker-Container der einzelnen Services des Bots lokal zu starten. Dabei musste erst einmal herausgefunden werden welche URLs bzw. welcher Token zu benutzen war. Da wir keinen Token in der bereits vorhandenen Dokumentation finden konnten bzw. es keinen hinterlegten gab, wurden übergangsweise mehrere Test-Tokens mit BotFather erstellt. Ebenso wurde versucht die Container sowohl auf Windows, also auch auf Linux zu starten.
 +Daraufhin wurde versucht das Image des Beuth Bots auf einer virtuellen Maschine zu starten. Um dies ausführen zu können musste Anfangs erst einmal die Datei mit lz4 dekomprimiert werden. Dafür musste erst einmal das Github lz4( https://github.com/lz4/lz4 ) gedownloadet und ausgeführt werden, welches einige Zeit in Anspruch nahm. Danach wurde die kvm Datei mit qemu zu einer vdi Datei konvertiert, damit VirtuelBox diese Datei akzeptiert. Nach dem erfolgreichen starten der virtuellen Maschine gab es das Problem, dass das Passwort nicht richtig war, welches uns gegeben wurde. Letztendlich musste dies mit folgenden Codezeilen umgangen werden:
  
-====Challenges Barriers====+<code> 
 +mount -o remount,rw / 
 +passwd 
 +# passwort eurer wahl eingeben 
 +# oder, müsste auch gehen: 
 +passwd --delete 
 +mount -o remount,ro / 
 +</code>
  
-  * Complex Project Structure +Nun wurde der Beuth Bot gestartet, konnte allerdings nicht in Betrieb genommen werden, da dieser keine Netzwerkverbindung nach draußen hatteDaraufhin wurde uns ein Server auf der Beuth zur verfügung gestellt, auf welchem der Beuth Bot letztendlich laufen sollteNachdem dieser dort versucht wurde eingerichtet zu werden, fehlte es dem Server an zugewiesenem Speicher, was erst behoben werden musste um den Bot vollständig installieren und in Betrieb nehmen zu könnenEs konnten nach der Behebung des fehlenden Speichers letztendlich fast alle Docker-Container erfolgreich gestartet werden, bis auf den Service Deconcentrator, welcher sich erst nicht richtig starten ließ und als er lief nicht funktionierte.  Nach mehreren Wochen der Versuche diesen Service zum laufen zu bekommen entschieden wir uns in Absprache mit Herrn Ziemer diesen zu verwerfen und einen neuen Deconcentrator zu schreiben. 
-  * Bad documentation of final stateSo we ... +
-  * Focused to long on the image of virtual machine +
-  * Bad documentation of JSON format of messages +
-  * Running out of space on Virtual Machine +
-  * Current Situation with the Corona Virus+
  
-====Needs For Action====+===Resultierende Aufgaben===
  
-  * Complete Documentation +  * Dokumentation komplettieren / umstruktorieren 
-  * "Kick outthe `deconcentrator` and `scraper` +  * Den alten deconcentrator "rausschmeissenund neuen (deconcentrator-js) schreiben 
-  * Create a master project containing the packages as submodules +  * Übergeordnetes Git Projekt erstellen mit Paketen als Submodule
-====Done so far====+
  
-===Model of Messages of Telegram Bot===+===Wo stehen wir gerade?=== 
 +Aktuell Ist der Beuth Bot vollständig in Betrieb genommen, dank des neu geschriebenen Deconcentrators. Ebenso liegt dieser nun, auf einem für uns zugreifbaren Server, welcher dort erfolgreich in Betrieb genommen wurde. Auch wurde er nun ermöglicht den gesamten Bot, welcher 8 Services beinhaltet mit zwei docker-compose files zu starten. Das Projekt wurde nun in 2 Git Submodule unterteilt, welche in Zukunft leichter bearbeitet werden können. Ebenfalls wurden sowohl in diesem Semester zu bearbeitende, also auch zukünftige Projektideen erschlossen. Die Arbeitsteilung der einzelnen Gruppenmitglieder wurde durchgeführt und ein Zwischenbericht wurde angelegt.
  
-<uml> +===Wo werden wir tun?=== 
-@startuml +Zusammengefasst, werden wir den Scraper Microservice fertigstellen und anpassen, eine Persistenz hinzufügen die es dem System erlaubt Präferenzen vom User zu speichern, den Wetter Microservice anpassen, einen Cache hinzufügen und zwei neue Microservices namens Schedule (Stundenplan) und Finals (Prüfungen) hinzufügen.
-class Message { +
-  message_id: Integer +
-  from: User +
-  chat: Chat +
-  date: Long +
-  text: String +
-}+
  
-class User { +Auf diese Punkte wird im weiteren Verlauf dieses Dokuments eingegangen.
-   id: Integer +
-   is_bot: Boolean +
-   first_name: String +
-   username: String +
-   language_code: String +
-+
- +
-class Chat { +
-   id: Integer +
-   first_name: String +
-   username: String +
-   type: String +
-+
- +
-Message *--- User +
-Message *--- Chat +
- +
-@enduml +
-</uml>+
  
-===BeuthBot Project===+===BeuthBot Project (One Git Repository)===
  
 https://github.com/beuthbot/beuthbot https://github.com/beuthbot/beuthbot
Zeile 201: Zeile 166:
  
 > Having this project organized with submodules makes it also easier to have and organize multiple **distributions** of this project. It further allows us having a global state / version of the BeuthBot. > Having this project organized with submodules makes it also easier to have and organize multiple **distributions** of this project. It further allows us having a global state / version of the BeuthBot.
 +
 ==Default Ports of Services== ==Default Ports of Services==
  
 | Service | External Port | Internal Port | | Service | External Port | Internal Port |
-| [gateway](https://github.com/beuthbot/gateway| 3000 | 3000 | +| [[https://github.com/beuthbot/gateway|gateway]] | 3000 | 3000 | 
-| [deconcentrator-js](https://github.com/beuthbot/deconcentrator-js| 8338 | 8338 | +| [[https://github.com/beuthbot/deconcentrator-js|deconcentrator-js]] | 8338 | 8338 | 
-| [rasa](https://github.com/beuthbot/rasa| 5005 | 5005 | +| [[https://github.com/beuthbot/rasa|rasa]] | 5005 | 5005 | 
-| [registry](https://github.com/beuthbot/registry| 9922 | 3000 | +| [[https://github.com/beuthbot/registry|registry]] | 9922 | 3000 | 
-| [mensa](https://github.com/beuthbot/mensa| 9950 | 8000 | +| [[https://github.com/beuthbot/mensa|mensa]] | 9950 | 8000 | 
-| [weather](https://github.com/beuthbot/weather| 9951 | 7000 |+| [[https://github.com/beuthbot/weather|weather]] | 9951 | 7000 |
  
  
Zeile 234: Zeile 200:
  
 https://github.com/beuthbot/deconcentrator-js https://github.com/beuthbot/deconcentrator-js
 +
 +The deconcentrator uses different NLU processors to compare their results and tries to choose an best fitting answer. The NLU processors like RASA must know their domain on their own. The deconcentrator simply compares the confidence score of the intents given from the processors and returns the intent with the highest score.
 +
 +==Functionality==
 +
 +<uml>
 +@startuml
 +
 +participant "gateway" as GW
 +
 +box "deconcentrator-js" #LightBlue
 +participant "deconcentrator.js" as DC
 +participant "processor-queue.js" as PQ
 +participant "rasa-processor.js" as RP
 +participant "PROC_1.js" as P1
 +participant "PROC_2.js" as P2
 +end box
 +
 +GW -> DC: request\nwith message
 +activate DC
 +DC -> DC: create and fill queue
 +DC -> PQ: run
 +activate PQ
 +PQ -> RP: (async) request
 +activate RP
 +PQ -> P1: (async) request
 +activate P1
 +RP -> PQ: interpretation
 +deactivate RP
 +PQ -> P2: (async) request
 +activate P2
 +P1 -> PQ: interpretation
 +deactivate P1
 +P2 -> PQ: interpretation
 +deactivate P2
 +PQ -> DC: all\ninterpretations
 +deactivate PQ
 +DC -> DC: filter out\nbest intent
 +DC -> GW: response\nwith intent
 +deactivate DC
 +
 +@enduml
 +</uml>
 +
 +==processor-queue.js==
 +
 +For every incoming message the deconcentrator creates a new `ProcessorQueue` (defined in `processor-queue.js`) and adds all available processors to it. When calling the `.interpretate(message)` function of the queue it starts requesting the processors for an interpretation. The number of asynchronous requests can be set with the `numOfSynchronProcessors` property of the queue.
 +
 +==processor.js==
 +
 +Defines the interface of a NLU processor.
 +
 +==API==
 +
 +The following lists the resources that can be requested with the deconcentrator API.
 +
 +Request life sign.
 +
 +<code>
 +GET   http://localhost:8338
 +</code>
 +
 +Answer:
 +
 +<code>
 +Hello from BeuthBot Deconcentrator: 0.1.1
 +</code>
 +
 +Request interpretation of message.
 +
 +<code>
 +POST  http://localhost:8338/messages
 +</code>
 +
 +==Request Schema==
 +
 +<code>
 +{
 +  "text": "Wie wird das Wetter morgen?",
 +  "min_confidence_score": 0.8,
 +  "processors": ["rasa"]
 +}
 +</code>
 +
 +Whereas the specification of the min_confidence_score and theprocessors is optional. If not minimum confidence score is given a default one is used (by now this is 0.8). For now there is only the usage of RASA implemented so there is no effect of specifying the processors property.
  
 Model of an incoming message. Model of an incoming message.
Zeile 247: Zeile 298:
 </uml> </uml>
  
-Model of an answer from deconcentrator.+==Response Schema== 
 + 
 +The response for a successfully processed request to the deconcentrator contains the following information. 
 + 
 +<code> 
 +
 +  "intent":
 +    "name": "wetter", 
 +    "confidence": 0.9518181086 
 +  }, 
 +  "entities":
 +    { 
 +      "start": 20, 
 +      "end": 26, 
 +      "text": "morgen", 
 +      "value": "2020-01-20T00:00:00.000+01:00", 
 +      "confidence": 1.0, 
 +      "additional_info":
 +          "values":
 +              { 
 +                  "value": "2020-01-20T00:00:00.000+01:00", 
 +                  "grain": "day", 
 +                  "type": "value" 
 +              } 
 +          ], 
 +          "value": "2020-01-20T00:00:00.000+01:00", 
 +          "grain": "day", 
 +          "type": "value" 
 +      }, 
 +      "entity": "time" 
 +    } 
 +  ], 
 +  "text": "Wie wird das Wetter morgen?" 
 +
 +</code> 
 + 
 +Model of an answer.
  
 <uml> <uml>
Zeile 286: Zeile 373:
 @enduml @enduml
 </uml> </uml>
 +
 +The response for a unsuccessfully processed request to the deconcentrator or when an error occures contains the following information.
 +
 +<code>
 +{
 +  "error": "The given message can't be interpretated.",
 +  "text": "Wie wird das Wetter morgen?"
 +}
 +</code>
 +
 +==Requirements Analysis deconcentrator.js==
 +
 +  * /DCF100/ The deconcentrator responds to incoming POST requests by delegating the message to a collection of NLU processor which try to interpretate the given message
 +  * /DCF101/ The deconcentrator accepts incoming messages as defined via the Request Schema
 +  * /DCF102/ The deconcentrator sends answers as defined via the Response Schema
 +  * /DCF103/ The deconcentrator answers with proper messages for occuring errors
 +  * /DCF104/ New NLU processors muss be easy to integrate
 +  * /DCF105/ The deconcentrator has a default value for the minimum confidence score
 +  * /DCF106/ The deconcentrator has a default value for the list of processors
 +  * /DCF107/ The minimum confidence score can be set globally within the Dockerfile
 +  * /DCF108/ The list of processors to be used can be set globally within the Dockerfile
  
 ===Deploying on Virtual Machine=== ===Deploying on Virtual Machine===
Zeile 310: Zeile 418:
 $ docker-compose up -d $ docker-compose up -d
  
 +</code>
 +
 +==Contents of .env file==
 +Following lists the contents of the .env file of the BeuthBot project. Note that the value for WEATHER_API_KEY has been removed for security reasons.
 +
 +<code>
 +# deconcentrator
 +RASA_ENDPOINT=http://rasa:5005/model/parse
 +
 +# gateway
 +DECONCENTRATOR_ENDPOINT=http://deconcentrator:8338/message
 +REGISTRY_ENDPOINT=http://registry:3000/get-response
 +
 +# registry
 +MENSA_ENDPOINT=http://mensa:8000/meals
 +WETTER_ENDPOINT=http://weather:7000/weather
 +
 +WEATHER_API_KEY=     # key removed
 +</code>
 +
 +==Contents of docker-compose.yml file==
 +Following lists the contents of the docker-compose.yml file of the BeuthBot project.
 +
 +<code>
 +version: '3.7'
 +
 +services:
 +
 +  # === -----------------------------
 +  gateway:
 +    build: gateway
 +    restart: unless-stopped
 +    links:
 +      - deconcentrator
 +      - registry
 +    ports:
 +      - 3000:3000
 +    environment:
 +      - DECONCENTRATOR_ENDPOINT
 +      - REGISTRY_ENDPOINT
 +
 +  # === -----------------------------
 +  deconcentrator:
 +    build: deconcentrator-js
 +    restart: unless-stopped
 +    links:
 +      - rasa
 +    ports:
 +      - 8338:8338
 +    environment:
 +      - RASA_ENDPOINT
 +
 +  # === -----------------------------
 +  registry:
 +    build: registry
 +    restart: unless-stopped
 +    links:
 +      - mensa
 +      - weather
 +    ports:
 +      - 9922:3000
 +    environment:
 +      - MENSA_ENDPOINT
 +      - WETTER_ENDPOINT
 +
 +  # === -----------------------------
 +  rasa:
 +    image: rasa/rasa:1.6.0-spacy-de
 +    restart: unless-stopped
 +    ports:
 +      - 5005:5005
 +    volumes:
 +      - ./rasa/docker/rasa-app-data:/app
 +    command:
 +      - run
 +      - --enable-api
 +      - --cors
 +      - "*"
 +  duckling:
 +    image: rasa/duckling:0.1.6.2
 +    restart: unless-stopped
 +    ports:
 +      - 8000:8000
 +
 +  # === -----------------------------
 +  mensa:
 +    build: mensa_microservice
 +    restart: unless-stopped
 +    ports:
 +      - 9950:8000
 +
 +  # === -----------------------------
 +  weather:
 +    build: weather_microservice
 +    restart: unless-stopped
 +    ports:
 +      - 9951:7000
 +    environment:
 +      - WEATHER_API_KEY
 </code> </code>
  
Zeile 330: Zeile 537:
 </code> </code>
  
-Current output of `docker ps` on virtual machine:+==Contents of .env file== 
 +Following lists the contents of the .env file of the telegram-bot project. Note that the value for TELEGRAM_TOKEN has been removed for security reasons. 
 + 
 +<code> 
 +GATEWAY_ENDPOINT=http://172.17.0.1:3000 
 +TELEGRAM_TOKEN=        # removed 
 +</code> 
 + 
 +==Contents of docker-compose.yml file== 
 +Following lists the contents of the docker-compose.yml file of the BeuthBot project. 
 + 
 +<code> 
 +version: '3.7' 
 +services: 
 +  telegram-bot: 
 +    build: . 
 +    restart: unless-stopped 
 +    environment: 
 +      - GATEWAY_ENDPOINT 
 +      - TELEGRAM_TOKEN 
 +</code> 
 + 
 +==Current output of `docker ps` on virtual machine:==
  
 <code> <code>
Zeile 344: Zeile 573:
 </code> </code>
  
 +Both projects contains a update.sh file which can be used to fast update the projects.
  
 ====Requirements==== ====Requirements====
 +
 +**Funktionale Anforderungen:**
 +
 +''/F100/'' Das System muss den User fragen, ob er möchte dass seine Präferenzen gespeichert werden.
 +
 +''/F101/'' Das System muss die User-Präferenzen in einer Datenbank speichern können.
 +
 +''/F102/'' Das System muss die Responses der Microservices in einem Cache zwischenspeichern.
 +
 +''/F103/'' Das System muss den User an Termine und Prüfungen erinnern.
 +
 +''/F200/'' Das System muss die Prüfungen von der Beuth Prüfungs-Website scrapen.
 +
 +''/F201/'' Das System muss die PDF die das System vom User bekommt verarbeiten können.
 +
 +''/F202/'' Das System muss dem User die Möglichkeit bieten einen Stundenplan manuell anzulegen.
 +
 +''/F203/'' Das System muss dem User die Möglichkeit bieten einen Stundenplan per PDF anzulegen.
 +
 +**Nicht-Funktionale Anforderungen:**
 +
 +''/NF100/'' Das System sollte Nachrichten innerhalb von 3 Sekunden beantworten.
 +
 +''/NF101/'' Das System sollte so modular wie möglich aufgebaut sein.
 +
 +''/NF102/'' Das System sollte eine Downtime von maximal 1% haben.
 +
 +''/NF103/'' Die Datenbank sollte eine Downtime von maximal 1% haben.
 +
 +''/NF200/'' Das System sollte DSGVO konform sein.
 +
 +''/NF201/'' Das System sollte standard Sicherheitsvorkehrungen besitzen.
  
 ===Persistence=== ===Persistence===
  
 Damit der Benutzer sich selbst nicht ständig wiederholen muss, wird ihm die Möglichkeit geboten, seine Vorlieben zu speichern. Als Datenbank haben wir uns für die MongoDB entschieden. Damit der Benutzer sich selbst nicht ständig wiederholen muss, wird ihm die Möglichkeit geboten, seine Vorlieben zu speichern. Als Datenbank haben wir uns für die MongoDB entschieden.
 +
 +<uml>
 +@startuml
 +actor "User" as U
 +rectangle "telgram-bot" as TGB
 +package "BeuthBot" {
 +  rectangle "gateway" as GW
 +  package "Persistence" {
 +    rectangle "database-container" as DBC
 +    database "DB_NAME" {
 +    }
 +  }
 +}
 +
 +U -down-> TGB
 +TGB -right-> GW
 +GW -left-> TGB
 +
 +GW -up-> DBC
 +DBC -down-> GW
 +
 +DB_NAME -right-> DBC
 +DBC -left-> DB_NAME
 +@enduml
 +</uml>
  
 ===Cache=== ===Cache===
Zeile 466: Zeile 752:
  
 ====Goal for end of semester==== ====Goal for end of semester====
 +
 +Following diagram demonstrates the current state of the working component of the BeuthBot.
  
 Current State: Current State:
Zeile 502: Zeile 790:
 </uml> </uml>
  
-Target State:+Following diagram demonstrates the target state of the working component of the BeuthBot.
  
 <uml> <uml>
Zeile 524: Zeile 812:
     rectangle "weather" as WS     rectangle "weather" as WS
     rectangle "mensa" as MS     rectangle "mensa" as MS
-    rectangle "NEW_SER_1" as NS1 +    rectangle "schedule" as NS1 
-    rectangle "NEW_SER_2" as NS2+    rectangle "scraper" as NS2 
 +    rectangle "pdf-reader" as NS3
   }   }
 } }
Zeile 555: Zeile 844:
 RE -up-> NS2 RE -up-> NS2
 NS2 -down-> RE NS2 -down-> RE
 +RE -up-> NS3
 +NS3 -down-> RE
  
 DB_NAME -right-> DBC DB_NAME -right-> DBC
Zeile 573: Zeile 864:
  
 -- Implementation -- -- Implementation --
-[Persist user preferences] as [I1] lasts 30 days and starts 5 days after [C]'s end +[Persist user preferences (Lukas & Tobias)] as [I1] lasts 30 days and starts 5 days after [C]'s end 
-[Cache microservices responses] as [I2] lasts 30 days and starts 5 days after [C]'s end +[Cache microservices responses (Jan)] as [I2] lasts 30 days and starts 5 days after [C]'s end 
-[Transform scraper microservice] as [I3] lasts 30 days and starts 5 days after [C]'s end +[Transform scraper microservice (Denny & Jan)] as [I3] lasts 30 days and starts 5 days after [C]'s end 
-[Adjust weather microservice] as [I4] lasts 30 days and starts 5 days after [C]'s end +[Adjust weather microservice (Denny)] as [I4] lasts 30 days and starts 5 days after [C]'s end 
-[New course schedule microservice] as [I5] lasts 30 days and starts 5 days after [C]'s end+[New course schedule microservice (?) (Denny & Jan)] as [I5] lasts 30 days and starts 5 days after [C]'s end
 [C] -> [I1] [C] -> [I1]
 [C] -> [I2] [C] -> [I2]
Zeile 583: Zeile 874:
 [C] -> [I4] [C] -> [I4]
 [C] -> [I5] [C] -> [I5]
 +[D] is 80% completed
 [I1] is 0% completed [I1] is 0% completed
 [I2] is 0% completed [I2] is 0% completed
wiki/software/beuthbot/berichte/ss2020/zwischen.1591266055.txt.gz · Zuletzt geändert: 04.06.2020 12:20 von Lukas Danckwerth