Michael Hoennig
2022-08-04 45c1bed43bd26ee94b4a625c29a20713666eb442
add TODO document + progress calculation
4 files added
1 files modified
150 ■■■■■ changed files
.gitignore 1 ●●●● patch | view | raw | blame | history
TODO.md 87 ●●●●● patch | view | raw | blame | history
tools/todo-progress 33 ●●●●● patch | view | raw | blame | history
tools/todo-progress-line.csv 6 ●●●●● patch | view | raw | blame | history
tools/todo-progress.gnuplot 23 ●●●●● patch | view | raw | blame | history
.gitignore
@@ -4,6 +4,7 @@
/build/www/**
/src/test/javascript/coverage/
/worktrees/
TODO-progress.png
######################
# Node
TODO.md
New file
@@ -0,0 +1,87 @@
## TODO
This document is just for tracking the initial development project and thus only in German.
### Kommunikative Aufwände
| ID  | Beschreibung                                                |  Budget | Aufwand | Leistung |
|:----|:------------------------------------------------------------|--------:|--------:|---------:|
| PRE | Vorbesprechungen bis inkl. KickOff-Meeting                  |       8 |       4 |        4 |
| PRJ | Zweiwöchige Projektbesprechungen                            |      12 |       2 |        2 |
| RET | Vierwöchige Retrospektiven (optional)                       |       6 |         |          |
| TRA | Einarbeitung von Mitarbeitern des Auftraggebers (Training)  |      12 |         |          |
| E2E | Unterstützung beim Aufbau der E2E-System-Integrations-Tests |      40 |         |          |
| MIG | Unterstützung bei der Datenmigration                        |      16 |         |          |
| INS | Unterstützung ei der Inbetriebnahme / Einführung            |      16 |         |          |
| APP | Abnahme (Approval)                                          |       4 |         |          |
| SUP | Unterstützung nach der Abnahme (Support)                    |      12 |         |          |
|     |                                                             |         |         |          |
### Allgemeine Leistungen
| ID  | Beschreibung                                               |   Budget | Aufwand | Leistung |
|:----|:-----------------------------------------------------------|---------:|--------:|---------:|
| DEV | Aufbau der Entwicklungsumgebung (bis inkl. Unit-Tests)     |       16 |      12 |       16 |
| ATN | Entwurf des Authorisierungs-Systems                        |       40 |      68 |       36 |
| ATZ | Auswahl und Implementierung des Authentifizierungs-Systems |       20 |         |          |
| ITS | Aufbau einer Umgebung für Integrationstests (*1)           |        4 |       4 |        4 |
| ATS | Aufbau einer Umgebung für Akzeptanztests (*1)              |       16 |       3 |          |
| PIP | Aufbau einer Build- und Testpipeline                       |       20 |         |          |
| ARC | Aufbau einer Architekturkontrolle                          |        8 |       2 |        2 |
|     |                                                            |          |         |          |
(*1: ITS+ATS sind aufgesplittet aus TST mit 20 geplanten Stunden entstanden)
### Leistungen bezogen auf fachliche Objekte
| ID  | fachliches Objekt      | Persona        | Ops          | Budget | Aufwand | Leistung |
|:----|:-----------------------|:---------------|:-------------|-------:|--------:|---------:|
| ROL | Rollen                 | Hostmaster     | Scrulojtx    |     26 |      10 |        5 |
| USR | LDAP-User              | Hostmaster     | Scrufojtex   |     29 |      10 |        5 |
| USR | LDAP-User              | LDAP-User      | rufojex      |     20 |      10 |          |
| GRP | Gruppen                | Hostmaster     | scrulojtx    |     26 |         |          |
| CBD | Customer Base          | Sachbearbeiter | ScruLojia    |     20 |      10 |        4 |
| CBD | Customer Base          | Kunde          | sr           |      5 |       1 |          |
| MSV | Managed Virtual Server | Hostmaster     | crudfoj      |     20 |         |          |
| MSV | Managed Virtual Server | Owner          | rulojt       |     15 |         |          |
| MWS | Managed Webspace       | Hostmaster     | scrudfojte   |     26 |       2 |          |
| MWS | Managed Webspace       | Owner          | srulojte     |     18 |       1 |          |
| MWS | Managed Websppace      | Admin          | srulojte     |      6 |       1 |          |
| ACC | Unix-Account           | Owner          | scrudfojte   |     26 |       2 |          |
| ACC | Unix-Account           | Admin          | sruloje      |     15 |       1 |          |
| DOM | Domain                 | Owner          | (scrudfojte) |      9 |       1 |          |
| DOM | Domain                 | Admin          | (srle)       |      3 |       1 |          |
| EMA | E-Mail-Address         | Owner          | (scrudfojte) |      9 |       1 |          |
| MAL | E-Mail-Alias           | Owner          | -            |      0 |       1 |          |
| DBP | Database Postgres      | Owner          | (scrudlojte) |      9 |         |          |
| DBP | Database Postgres      | Admin          | (srle)       |      3 |         |          |
| DUP | Database-User Postgres | Admin          | (scrudlojte) |      9 |         |          |
| DUP | Database-User Postgres | Admin          | -            |      0 |         |          |
| DBM | Database MariaDB       | Owner          | -            |      0 |         |          |
| DBM | Database MariaDB       | Admin          | -            |      0 |         |          |
| DUM | Database-User MariaDB  | Admin          | -            |      0 |         |          |
| DUM | Database-User MariaDB  | Admin          | -            |      9 |         |          |
|     |                        |                |              |        |         |          |
**Ops Agenda**: **S**: Schema, **V**: View, **C**: Create, **R**: Read, **U**: Update, **D**: Delete, **L**: List, **F**: Filter, **O**: Optimistic Locking, **J**: Journal (Audit), **H**: Historization, **U**: Undo, **I**: Inactivate, **T**: Tombstone, **A**: Archive, **E**: Event, **X**: Extraordinary
### Wöchentlicher Status
<!-- file not committed to git, please run `tools/todo-progress` to generate -->
![hsadmin-ng Projektfortschritt](TODO-progress.png)
In der folgenden Tabelle sind Aufwand und Leistung akkumulierte Werte.
<!-- generated todo-progress begin: -->
| Datum      | Budget | Aufwand | Leistung | Verbleibend |
|------------|-------:|--------:|---------:|------------:|
| 2022-07-17 |    553 |      44 |        0 |         553 |
| 2022-07-24 |    553 |       8 |        0 |         553 |
| 2022-07-31 |    553 |     143 |       40 |         513 |
| 2022-08-04 |    553 |     147 |       78 |         475 |
<!-- generated todo-progress end. -->
tools/todo-progress
New file
@@ -0,0 +1,33 @@
#!/bin/bash
# check if required programs are installed
declare -a required=(gnuplot sponge)
for cmd in "${required[@]}"; do
    command -v $cmd >/dev/null 2>&1 || { echo >&2 "Required '$cmd' not installed => aborting."; exit 1; }
done
# calculate current values
let budget=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f4 | rev | grep -o '[[:digit:]]*' | total`
let effort=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f3 | rev | grep -o '[[:digit:]]*' | total`
let output=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f2 | rev | grep -o '[[:digit:]]*' | total`
let remainder=$(expr $budget - $output)
# generating progress report
echo '<!-- generated todo-progress begin: -->' >.todo-progress.md
sed -e '1,/todo-progress begin:/d' -e '/todo-progress end./,$d' TODO.md >>.todo-progress.md
if [ "$1" = "--recalculate" ]; then
    echo "| $(date --iso-8601) | $(printf "%6d" $budget) | $(printf "%7d" $effort) | $(printf "%8d" $output) | $(printf "%11d" $remainder) |" >>.todo-progress.md
fi
echo '<!-- generated todo-progress end. -->' >>.todo-progress.md
# replace the generated todo-progress part
if [ "$1" = "--recalculate" ]; then
    uniq <.todo-progress.md | sponge .todo-progress.md
    sed -i -e '/todo-progress begin:/,/todo-progress end./!b' -e '/todo-progress end./!d;r .todo-progress.md' -e 'd' TODO.md
fi
# re-generate progress chart
sed -e's/^|//' <.todo-progress.md | tr '|' ';' | grep ';' | grep -v -- '---' >.todo-progress.csv
gnuplot tools/todo-progress.gnuplot
rm .todo-progress.md .todo-progress.csv
echo "HINT: To recalculate the current values and add a new line, use '$0 --recalculate'."
tools/todo-progress-line.csv
New file
@@ -0,0 +1,6 @@
 Datum      ; Soll-Leistung
 2022-07-11 ;             0
 2022-07-31 ;           102
 2022-08-31 ;           253
 2022-09-30 ;           399
 2022-10-31 ;           550
tools/todo-progress.gnuplot
New file
@@ -0,0 +1,23 @@
set xdata time                              # x-axis values are time (date) values
set timefmt "%Y-%m-%d"                      # date value format
set datafile separator ";"                    # CSV column separator is semicolon
set key autotitle columnhead                # first data line contains column titles
set format x "%y-%m-%d"                     # display date format
set xrange ["2022-07-11":"2022-10-31"]      # x-axis value-range
set yrange [0:600]                          # y-axis value-range
set key inside                              # graph legend style
set xtics rotate by -45                     # rotate dates on x-axis 45deg for cleaner display
set title 'hsadmin-ng Projektfortschritt'   # graph title
set terminal png                            # output format
set term png size 920, 640                    # output canvas size
set output 'TODO-progress.png'              # output file name
plot '.todo-progress.csv'     using 1:2 with linespoints linetype rgb "black" linewidth 2, \
     ''                     using 1:3 with linespoints linetype rgb "red"     linewidth 2, \
     ''                     using 1:4 with linespoints linetype rgb "green" linewidth 2, \
     ''                     using 1:5 with linespoints linetype rgb "blue"     linewidth 2, \
     'tools/todo-progress-line.csv' using 1:2 with linespoints linetype rgb "gray" linewidth 1 \