Projektbeschreibung WhatsImmo
This commit is contained in:
parent
7ebfb7024b
commit
93474cfb26
|
|
@ -614,6 +614,10 @@ video {
|
|||
grid-column: span 3 / span 3;
|
||||
}
|
||||
|
||||
.col-span-2 {
|
||||
grid-column: span 2 / span 2;
|
||||
}
|
||||
|
||||
.mx-auto {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -659,6 +663,10 @@ video {
|
|||
margin-left: 2.5rem;
|
||||
}
|
||||
|
||||
.mr-2 {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
|
@ -804,6 +812,14 @@ video {
|
|||
max-width: 768px;
|
||||
}
|
||||
|
||||
.max-w-\[400px\] {
|
||||
max-width: 400px;
|
||||
}
|
||||
|
||||
.max-w-\[300px\] {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.grow {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
|
@ -842,6 +858,66 @@ video {
|
|||
grid-template-columns: 12px 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(fit_1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(fit 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(fit\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(fit, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(fit-content\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(fit-content, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(auto\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(auto, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmin\(auto\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmin(auto, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[maxmin\(auto\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: maxmin(auto, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(100px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(100px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(200px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(200px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[maxmin\(200px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: maxmin(200px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[maxmin\(100px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: maxmin(100px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[maxmin\(400px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: maxmin(400px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[minmax\(400px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: minmax(400px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[max\(200px\2c _1fr\)_1fr\] {
|
||||
grid-template-columns: max(200px, 1fr) 1fr;
|
||||
}
|
||||
|
||||
.grid-cols-\[max\(1fr\)_1fr\] {
|
||||
grid-template-columns: max(1fr) 1fr;
|
||||
}
|
||||
|
||||
.flex-row-reverse {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
|
@ -1013,10 +1089,6 @@ video {
|
|||
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
||||
}
|
||||
|
||||
.border-\[0\.5\] {
|
||||
border-color: 0.5;
|
||||
}
|
||||
|
||||
.bg-lime-300 {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(240 255 214 / var(--tw-bg-opacity));
|
||||
|
|
@ -1311,6 +1383,16 @@ video {
|
|||
color: rgb(156 163 175 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-lime-700 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(77 124 15 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-red-600 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(220 38 38 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,17 @@
|
|||
{
|
||||
"title": "WhatsImmo",
|
||||
"tags": [
|
||||
"Projektmanagement", "Programmierung", "Datenmigration"
|
||||
"Projektmanagement", "Konzeptionierung", "Programmierung", "Layout und Design", "Datenmigration", "Administration"
|
||||
],
|
||||
"short_description": "Progressive Web-App für Hausverwaltungen.",
|
||||
|
||||
"participant": "WINKEL + MANGELS GmbH, Neuss",
|
||||
"participant_logo": "https://immobilien.wmbm.eu/wp-content/uploads/2021/05/wmbm_immobilien_logo_L.svg",
|
||||
"participant_link": "https://immobilien.wmbm.eu",
|
||||
"participant_head": "WINKEL + MANGELS GmbH<br>Heerdterbuschstraße 10<br>41460 Neuss",
|
||||
"time": "10-11/2022",
|
||||
"effort": "~30 AT",
|
||||
|
||||
"functions": [
|
||||
"Hierarchische Objektverwaltung",
|
||||
"Auftragsverwaltung",
|
||||
|
|
@ -27,31 +35,11 @@
|
|||
"SQLite",
|
||||
"ubuntu"
|
||||
],
|
||||
"participant": "WINKEL + MANGELS GmbH, Neuss",
|
||||
"participant_logo": "https://immobilien.wmbm.eu/wp-content/uploads/2021/05/wmbm_immobilien_logo_L.svg",
|
||||
"participant_link": "https://immobilien.wmbm.eu",
|
||||
"participant_head": "WINKEL + MANGELS GmbH<br>Heerdterbuschstraße 10<br>41460 Neuss",
|
||||
"time": "10-11/2022",
|
||||
"effort": "~30 AT",
|
||||
"case_study": [
|
||||
{
|
||||
"tag": "p",
|
||||
"content": ""
|
||||
},
|
||||
{
|
||||
"tag": "p",
|
||||
"content": ""
|
||||
},
|
||||
{
|
||||
"tag": "img",
|
||||
"alt": "Logo WhatsImmo",
|
||||
"src": "https://whatsimmo.tobias-gerwin.de/static/WhatsImmo/img/logo.svg",
|
||||
"caption": "Logo WhatsImmo"
|
||||
},
|
||||
{
|
||||
|
||||
}
|
||||
],
|
||||
"link": {
|
||||
"href": "https://whatsimmo.tobias-gerwin.de",
|
||||
"label": "Testversion von WhatsImmo"
|
||||
},
|
||||
|
||||
"quote": "",
|
||||
"quote_author": "Dr. Jörg Mangels"
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 163 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 259 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 195 KiB |
|
|
@ -56,7 +56,7 @@
|
|||
<div class="text-right">{{ effort }}</div>
|
||||
|
||||
<div class="font-bold">Leistungen:</div>
|
||||
<div class="col-span-3 flex flex-wrap" colspan="3">
|
||||
<div class="col-span-3 flex flex-wrap">
|
||||
{% for tag in tags %}
|
||||
<div class="px-2 py-0.5 mr-1 mb-1 rounded-lg bg-petrol-500 text-white text-sm">
|
||||
{{ tag }}
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</div>
|
||||
|
||||
<div class="font-bold">Stack:</div>
|
||||
<div class="col-span-3 flex flex-wrap" colspan="3">
|
||||
<div class="col-span-3 flex flex-wrap">
|
||||
{% for stack in stack_list %}
|
||||
<div class="px-2 py-0.5 mr-1 mb-1 rounded-lg bg-black text-lime-500 text-sm">
|
||||
{{ stack }}
|
||||
|
|
@ -88,6 +88,10 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="font-bold">Link:</div>
|
||||
<div class="col-span-3">
|
||||
<a href="{{ link.href }}" target="_blank"><span class="underline">{{ link.href }}</span> ({{ link.label }})</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -13,17 +13,17 @@
|
|||
<div class="py-10 grid gap-2">
|
||||
{% for referenz in referenzList %}
|
||||
<a href="/projekt/{{ referenz.filename }}/" class="border-b-2 last:border-b-0">
|
||||
<div class="p-1 hover:bg-gray-200">
|
||||
<div class="flex items-center space-x-2">
|
||||
<h2 class="font-bold text-3xl">{{ referenz.title }}</h2>
|
||||
|
||||
<div class="p-1 hover:bg-gray-200 grid grid-cols-[max(1fr)_1fr]">
|
||||
<h2 class="font-bold text-3xl mr-2">{{ referenz.title }}</h2>
|
||||
|
||||
<div class="flex items-center flex-wrap">
|
||||
{% for tag in referenz.tags %}
|
||||
<div class="px-2 py-0.5 rounded-lg bg-petrol-500 text-white text-sm">
|
||||
<div class="px-2 py-0.5 mr-2 mb-1 rounded-lg bg-petrol-500 text-white text-sm">
|
||||
{{ tag }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
<div class="col-span-2">
|
||||
<table class="text-left text-base text-gray-400">
|
||||
<tr>
|
||||
<th class="">Beschreibung:</th>
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<div class="text-sm grid gap-4">
|
||||
<p class="">
|
||||
Egal ob Gebäudemanager, Objektverwalter oder Hausverwaltungen, alle erfassen Information, tauschen diese aus und halten
|
||||
sie nach, um ihren Kunden eine professionelle Dienstleistung zu bieten. Instant-Messenger, die Office-Suite und einige
|
||||
spezifische Datenbanken halten die Informationen vor, die das Tagesgeschäft erfordert. Viel Aufwand fällt im Backoffice
|
||||
bei der Zusammenführung der unterschiedlichen Datenpools an.
|
||||
Ob Gebäudemanager, Objektmanager oder Hausverwalter, alle erfassen, tauschen aus und pflegen Informationen, um ihren
|
||||
Kunden einen professionellen Service zu bieten. Instant Messaging, die Office-Suite und einige spezielle Datenbanken
|
||||
halten die Informationen bereit, die für das Tagesgeschäft benötigt werden. Ein großer Teil der Arbeit wird im
|
||||
Backoffice geleistet, um die verschiedenen Datenpools zusammenzuführen.
|
||||
</p>
|
||||
|
||||
<p class="">
|
||||
Das Foto, das der Kollege im Einsatz schnell via Smartphone gesendet hat, zu welchem Objekt gehörte das noch gleich?
|
||||
Solche und ähnliche Probleme sollten mit der Entwicklung von „WhatsImmo“ behoben werden.
|
||||
Das Foto, das der Kollege im Einsatz schnell per Smartphone verschickt hat, zu welchem Objekt gehört es noch? Solche und
|
||||
ähnliche Probleme sollen mit der Entwicklung von „WhatsImmo“ gelöst werden.
|
||||
</p>
|
||||
|
||||
<div class="grid justify-center">
|
||||
|
|
@ -19,31 +19,168 @@
|
|||
</div>
|
||||
|
||||
<p>
|
||||
WhatsImmo bietet mit seiner Objektverwaltung eine hierarchische Organisation
|
||||
aller Informationen im Bereich des Immobilienmanagements. Von
|
||||
Liegenschaften über Gebäude, Stockwerke und Zonen bis hin zu Räumen.
|
||||
WhatsImmo bietet mit seiner Objektverwaltung eine hierarchische Organisation aller Informationen im Bereich des
|
||||
Immobilienmanagements. Von Liegenschaften/Objekten über Gebäude, Stockwerke und Zonen bis hin zu Räumen. Im folgenden
|
||||
Screenshot ist in der linken Spalte eine einfache Objektstruktur dargestellt.
|
||||
</p>
|
||||
|
||||
<div class="grid justify-center">
|
||||
<img src="{% static 'projekte/img/Screenshot_WhatsImmo_Onjektverwaltung_leer.png' %}" alt="Screenshot der Objektverwaltung. Es wurden erste hierarchische Objekt in der linken Spalte angelegt. Kontakte, Dokumente oder Bilder sind noch nicht erfasst worden."
|
||||
<img src="{% static 'projekte/img/Screenshot_WhatsImmo_Objektverwaltung_leer.png' %}"
|
||||
alt="Screenshot der Objektverwaltung. In der linken Spalte wurden die ersten hierarchischen Objekte angelegt. Kontakte, Dokumente oder Bilder wurden noch nicht erfasst."
|
||||
class="border-petrol-500 border-[0.5px]">
|
||||
<p class="text-xs text-gray-600">
|
||||
<p class="text-xs text-gray-400">
|
||||
<span class="font-bold">Abb.:</span>
|
||||
Screenshot der Objektverwaltung. Es wurden erste hierarchische
|
||||
Objekt in der linken Spalte angelegt. Kontakte, Dokumente
|
||||
oder Bilder sind noch nicht erfasst worden.
|
||||
Screenshot der Objektverwaltung. In der linken Spalte wurden die ersten hierarchischen Objekte angelegt. Kontakte,
|
||||
Dokumente oder Bilder wurden noch nicht erfasst.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="">
|
||||
Beliebig viele Kontakte, Bilder und typisierte Dateien (Verträge, Schriftverkehr, Rechnungen, etc.) können erfasst
|
||||
werden. Durch das responsive Design sind die Daten von jedem Endgerät aus leicht zugänglich.
|
||||
Aufträge werden in der angeschlossenen Auftragsverwaltung nachverfolgt. Die Auftragsverwaltung ist in Chat-Gruppen
|
||||
organisiert. Die Mitarbeiter:innen zur Auftragserfüllung sind Teilnehmer:innen der Chat-Gruppe und erhalten in Echtzeit
|
||||
über das WebSocket-Protokoll neue Nachrichten.
|
||||
Als Progressive Web App (PWA) ist eine einfache Installation auf dem Smartphone (derzeit nur Android) möglich und bietet
|
||||
somit den Komfort einer nativen App.
|
||||
<p>
|
||||
|
||||
Diese Spalte dient auch als Navigationsbereich. Abhängig vom ausgewählten Element werden auf der rechten Seite alle
|
||||
damit verknüpften Kontakte, Dokumente und Bilder angezeigt. Über den Schalter
|
||||
<strong>Vererbung <span class="text-lime-500">An</span>/<span class="text-red-600">Aus</span></strong>
|
||||
können auch alle Daten
|
||||
der hierarchisch untergeordneten Elemente erfasst werden. So behält man immer den Überblick. Über den
|
||||
<strong>+-Button</strong> können
|
||||
neue Raumelemente und Objekte angelegt werden.
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
<p class="">
|
||||
Im rechten Bereich können beliebig viele Kontakte, Bilder und typisierte Dateien (Verträge, Korrespondenz, Rechnungen
|
||||
etc.) erfasst werden. Die typisierten Dateien wurden vom Auftraggeber definiert und sind in der Version 1.0 fest
|
||||
programmiert. Dateien können einfach per Drag & Drop in den verschiedenen Bereichen abgelegt werden. Es können auch
|
||||
mehrere Dateien auf einmal hochgeladen werden. Auf Smartphones kann die Dateiablage alternativ über den entsprechenden
|
||||
<strong>
|
||||
+-Button
|
||||
</strong>
|
||||
aufgerufen werden. Durch das responsive Design sind die Daten von jedem Endgerät aus leicht zugänglich.
|
||||
</p>
|
||||
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<div class="grid justify-center">
|
||||
<img src="{% static 'projekte/img/Bildschirmfoto_Objektverwaktung_1.png' %}"
|
||||
alt="Screenshot der Objektverwaltung auf dem Smartphone: Navigationsbereich."
|
||||
class="border-petrol-500 border-[0.5px]">
|
||||
<p class="text-xs text-gray-400">
|
||||
<span class="font-bold">Abb.:</span>
|
||||
Screenshot der Objektverwaltung auf dem Smartphone:
|
||||
Navigationsbereich.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid justify-center">
|
||||
<img src="{% static 'projekte/img/Bildschirmfoto_Objektverwaktung_2.png' %}"
|
||||
alt="Screenshot der Objektverwaltung auf dem Smartphone: Dateien-, Bilder- und Kontaktbereich."
|
||||
class="border-petrol-500 border-[0.5px]">
|
||||
<p class="text-xs text-gray-400">
|
||||
<span class="font-bold">Abb.:</span>
|
||||
Screenshot der Objektverwaltung auf dem Smartphone:
|
||||
Dateien-, Bilder- und Kontaktbereich.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Die Bestandsdaten der Objekte und Kontakte lagen in einer Access-Datenbank vor. Eine Dokumentation der Datenbank war
|
||||
nicht vorhanden. Teil des Auftrages war es daher, die bestehende Datenbank zu analysieren und die Daten in die neue
|
||||
Struktur von WhatsImmo zu importieren, ohne dass eine manuelle Übertragung notwendig ist. Die Herausforderung dabei war
|
||||
zum einen, dass die Kontaktverwaltung von WhatsImmo dem Konzept von CardDav folgt, um in einer späteren Erweiterung die
|
||||
Einbindung als Adressbuch in Smartphones etc. zu ermöglichen. Diese Struktur war in der alten Datenbank nicht
|
||||
implementiert.<br> Zum anderen bietet WhatsImmmo mit seiner Objektstruktur höchste Flexibilität in der sinnvollen
|
||||
Organisation von Gebäuden. So können z.B. Zonen auch geschossübergreifend verwendet werden. Die Altdatenbank bot hier
|
||||
nur die feste Struktur Objekt > Gebäude > Mieteinheit.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Früher war eine riesige "Excel-Tapete" im Einsatz, in der über mehrere Dutzend Spalten der jeweilige Status verfolgt
|
||||
wurde. Eine Verknüpfung mit der Access-Datenbank gab es nicht.<br>
|
||||
Die Auftragsverwaltung von WhatsImmmo ist dagegen in Chat-Gruppen
|
||||
organisiert. Die für die Auftragsabwicklung zuständigen Mitarbeitenden sind Teilnehmer der Chat-Gruppe und erhalten neue
|
||||
Nachrichten in Echtzeit über das WebSocket-Protokoll.
|
||||
</p>
|
||||
|
||||
<div class="grid justify-center">
|
||||
<img src="{% static 'projekte/img/Screenshot_WhatsImmo_Auftragsverwaltung.png' %}"
|
||||
alt="Screenshot der Auftragsverwaltung. Es wurde ein erster Auftrag 'Hecke schneiden' angelegt. Der Auftrag wurde in 3 Jobs aufgeteilt. Ein Auftrag oder Job kann über die linke Spalte ausgewählt werden. In der mittleren Spalte ist der zugehörige Chat zu sehen. Im rechten Bereich sind die mit den Auftrag zusammenhängendenn Bilder, Dateien und Kontakte aufgeführt."
|
||||
class="border-petrol-500 border-[0.5px]">
|
||||
<p class="text-xs text-gray-400">
|
||||
<span class="font-bold">Abb.:</span>
|
||||
Screenshot der Auftragsverwaltung. Es wurde ein erster Auftrag
|
||||
<strong>"Hecke schneiden"</strong> angelegt. Der Auftrag ist in Jobs unterteilt.
|
||||
Ein Auftrag oder Job kann über die linke Spalte ausgewählt werden.
|
||||
In der mittleren Spalte ist der zugehörige Chat zu sehen. Im rechten Bereich
|
||||
sind die mit den Auftrag zusammenhängendenn Bilder, Dateien und Kontakte aufgeführt.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Mitarbeitende sehen einen Auftrag in ihrer Auftragsliste, sobald sie diesem Auftrag zugeordnet sind. Bei anderen
|
||||
Messengern kann man nur die Nachrichten lesen, die während der eigenen Chatteilnahme geschrieben wurden. Neuen
|
||||
Chatteilnehmenden fehlt dadurch oft der Kontext des Auftrags. Bei WhatsImmmo ist ein späteres Hinzufügen problemlos
|
||||
möglich. Der Chat wird dauerhaft auf dem Server gespeichert und vollständig auf das Endgerät synchronisiert.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Wie von anderen Messengern bekannt, können auch Fotos als Nachrichten verschickt werden. Bei der Verwendung von
|
||||
WhatsImmmo mit dem Smartphone hat der Benutzer die Möglichkeit, entweder direkt die Kamera zu verwenden oder ein Bild
|
||||
aus der Galerie auszuwählen.
|
||||
Da ein Auftrag immer einem Objekt bzw. einer Liegenschaft zugeordnet ist, stehen die im Chat versendeten Bilder und
|
||||
Dokumente automatisch in der Objektverwaltung zur Verfügung.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Über das Berechtigungskonzept kann die rechte Spalte für einzelne Benutzerinnen und Benutzer unzugänglich gemacht
|
||||
werden. Sofern keine administrativen Aufgaben auf die Mitarbeitenden zukommen, reduziert dies die Komplexität.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Über einen Workflow mit den Status
|
||||
<strong>
|
||||
neu > Job aktiviert > in Arbeit > erledigt
|
||||
</strong>
|
||||
kann die Erledigung jedes Jobs verfolgt
|
||||
werden. Sobald ein Job vom Backoffice in den Status
|
||||
<strong>
|
||||
Job aktiviert
|
||||
</strong>
|
||||
gesetzt wird, erhalten die Mitarbeitenden in ihrem
|
||||
Chat einen Bestätigungsbutton. Über diesen Button kann der Status auf
|
||||
<strong>
|
||||
in Bearbeitung
|
||||
</strong>
|
||||
gesetzt werden.<br>
|
||||
Über den Chat kann die ganze Zeit über mit den Kollegen kommuniziert werden und die Vorgänge sind nachvollziehbar.<br>
|
||||
Ist ein Auftrag erledigt, füllt der Mitarbeitende ein kurzes
|
||||
<strong>Jobprotokoll</strong>
|
||||
aus, in dem alle abrechnungsrelevanten Daten
|
||||
für das Backoffice erfasst werden.
|
||||
</p>
|
||||
|
||||
<div class="grid justify-center">
|
||||
<img src="{% static 'projekte/img/Screenshot_WhatsImmo_JobProtokoll.png' %}"
|
||||
alt="Screenshot des Jobprotokolls"
|
||||
class="border-petrol-500 border-[0.5px] max-w-[300px]">
|
||||
<p class="text-xs text-gray-400">
|
||||
<span class="font-bold">Abb.:</span>
|
||||
Screenshot des Jobprotokolls
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Wenn alle Jobs erledigt sind, kann das Backoffice den Auftrag mit der Kundin abrechnen. In diesem Fall werden die
|
||||
Rechnungen hauptsächlich als Anhang per E-Mail versendet. Es wurde ein zusätzliches IMAP-Postfach eingerichtet, das
|
||||
ebenfalls alle versendeten Rechnungen empfängt. Über einen regelmäßigen Background-Job des Servers wird das Postfach nach neuen Rechnungen
|
||||
durchsucht. Anhand der Auftragsnummer werden die Rechnungen vollautomatisch an der richtigen Stelle in WhatsImmmo
|
||||
abgelegt. Sie stehen somit ohne doppelte Ablage direkt im Auftrag und in der Objektverwaltung zur Verfügung.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Als Progressive Web App (PWA) ist eine einfache Installation auf dem Smartphone (derzeit nur Android) oder Desktop
|
||||
möglich. Die Benutzerinnen und Benutzer profitieren vom Komfort einer nativen App. Software-Updates erfolgen über diese
|
||||
Technologie vollautomatisch und können nicht übersprungen werden. Somit ist sichergestellt, dass alle immer mit der
|
||||
aktuellsten Version arbeiten können.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
|
@ -33,19 +33,17 @@ def index(request):
|
|||
for root, dirs, files in os.walk(os.path.join(REFERENZ_DIR, 'referenzen')):
|
||||
print(root, dirs, files)
|
||||
for file in files:
|
||||
|
||||
with open(os.path.join(root, file), "r") as f:
|
||||
data:dict = json.loads(f.read())
|
||||
referenzList.append({
|
||||
'title': data['title'],
|
||||
'tags': data['tags'],
|
||||
'short_description': data['short_description'],
|
||||
'participant': data['participant'],
|
||||
'time': data['time'],
|
||||
'filename': file[:-5]
|
||||
})
|
||||
|
||||
|
||||
if file[-5:] == '.json':
|
||||
with open(os.path.join(root, file), "r") as f:
|
||||
data:dict = json.loads(f.read())
|
||||
referenzList.append({
|
||||
'title': data['title'],
|
||||
'tags': data['tags'],
|
||||
'short_description': data['short_description'],
|
||||
'participant': data['participant'],
|
||||
'time': data['time'],
|
||||
'filename': file[:-5]
|
||||
})
|
||||
|
||||
return render(request, 'referenzen.html', {'referenzList': referenzList})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue