# .SYNOPSIS Pusht die Personal- und Bug-Analyse als Confluence-Seite .USAGE powershell -ExecutionPolicy Bypass -File ".\project-audit\scripts\confluence-push-personal.ps1" #> $ConfluenceUrl = "https://arija-confluence.jaas.service.deutschebahn.com" $SpaceKey = "BES" $ParentPageId = "581013135" $ApiBase = "$ConfluenceUrl/rest/api" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Write-Host "============================================================" Write-Host " Personal- und Bug-Analyse -> Confluence" Write-Host "============================================================" $PAT = Read-Host "Confluence PAT" $Headers = @{ "Authorization" = "Bearer $PAT"; "Content-Type" = "application/json" } function Create-Or-Update-Page { param([string]$Title, [string]$HtmlBody, [string]$ParentId) # Umlaute automatisch konvertieren $HtmlBody = Fix-Umlauts $HtmlBody $SearchUri = "$ApiBase/content?spaceKey=$SpaceKey&title=$([Uri]::EscapeDataString($Title))&type=page" try { $SearchResp = Invoke-WebRequest -Uri $SearchUri -Headers $Headers -UseBasicParsing -ErrorAction Stop $SearchData = $SearchResp.Content | ConvertFrom-Json } catch { Write-Host " FEHLER bei Suche: $($_.Exception.Message)" -ForegroundColor Red return $null } if ($SearchData.results -and $SearchData.results.Count -gt 0) { $PageId = $SearchData.results[0].id try { $VerResp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId`?expand=version,body.storage" -Headers $Headers -UseBasicParsing -ErrorAction Stop $VerData = $VerResp.Content | ConvertFrom-Json $Version = $VerData.version.number + 1 } catch { $Version = $SearchData.results[0].version.number + 1 } Write-Host " Aktualisiere (ID: $PageId, Version: $Version)..." -NoNewline $Body = @{ version = @{ number = $Version } title = $Title type = "page" body = @{ storage = @{ value = $HtmlBody; representation = "storage" } } } | ConvertTo-Json -Depth 10 try { $Resp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId" -Method Put -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing -ErrorAction Stop Write-Host " OK" -ForegroundColor Green return ($Resp.Content | ConvertFrom-Json).id } catch { Write-Host " FEHLER: $($_.Exception.Message)" -ForegroundColor Red return $null } } else { Write-Host " Erstelle neue Seite..." -NoNewline $Body = @{ type = "page" title = $Title space = @{ key = $SpaceKey } ancestors = @(@{ id = $ParentId }) body = @{ storage = @{ value = $HtmlBody; representation = "storage" } } } | ConvertTo-Json -Depth 10 try { $Resp = Invoke-WebRequest -Uri "$ApiBase/content" -Method Post -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing -ErrorAction Stop Write-Host " OK" -ForegroundColor Green return ($Resp.Content | ConvertFrom-Json).id } catch { Write-Host " FEHLER: $($_.Exception.Message)" -ForegroundColor Red return $null } } } # ============================================================ # SEITE: Personal- und Bug-Analyse # ============================================================ Write-Host "" Write-Host ">> Seite 22: Personal- und Bug-Analyse" -ForegroundColor Yellow $PersonalHtml = @"
Stand: 2026-04-27 | Quellen: Jira (90d + 12M), Rollen-Mapping (BO-Input), Tenure-Daten
Diese Analyse korreliert Personaldaten (Rollen, Tenure, Aktivitaet) mit Bug-Raten und Qualitaetskennzahlen pro Team und Entwickler.
| Team | Personen | Kern-Devs | Bug-Rate (90d) | Bug-Rate (12M) | Trend | Bewertung |
|---|---|---|---|---|---|---|
| Team 404 | 10 | 7 | 33% | 25% | ↑ Steigend | KRITISCH |
| Team CIB | 13 | 6 | 20% | 23% | ↓ Sinkend | GUT |
| Team Zero | 9 | 6 | 15% | 15% | → Stabil | GUT |
| OPs Squad | 7+ rot. | 2 fest | 31% | 27% | ↓ Sinkend | BEOBACHTEN |
| DevOps | 7 | 3 | 9% | 7% | → Stabil | OK (SPOF) |
Hoechste Bug-Rate (33%), steigend seit Go-Live. Portal ist kundenseitig — Bugs werden direkt von EVUs gemeldet.
| Person | Rolle | Seit | Issues (90d) | Bug-Anteil | Done% | Bewertung |
|---|---|---|---|---|---|---|
| Ana Cvitkovic | Business Engineer | 2021-08 | 78 | niedrig | hoch | TOP — Anker des Teams |
| Jasmin Keskin | Frontend Dev | 2021-08 | 45 | 42% | mittel | Bug-anfaellig |
| Emmanuel Kontcheu Tagne | Frontend Dev | 2021-08 | 42 | 69% | mittel | KRITISCH |
| Diego Da Costa Souza | Frontend Dev | 2021-09 | 41 | mittel | mittel | Spring Boot 4 Portal |
| Leon Hoerpel | Dev | ? | 35 | 71% | mittel | KRITISCH |
| Dominik Ruecker | Backend Dev | ? | 31 | mittel | mittel | |
| Annette Halbhuber | Lead Dev | 2021-09 | 26 | niedrig | hoch | Stabil, Lead |
| Simon Reitinger | Dev | 2025-11 | 15 | 0% | 100% | Exzellenter Start |
| Marcel Hufgard | PO | 2021-12 | 8 | — | — | Product Owner |
| Luca Caracciolo | QA | 2021-09 | 5 | — | — | Wenig aktiv |
Kernproblem: Emmanuel (69% Bugs) und Leon (71% Bugs) arbeiten beide im Frontend. Das Portal-Frontend hat ein systematisches Qualitaetsproblem. QA (Luca) ist wenig aktiv — Testabdeckung unzureichend.
Bug-Rate von 36% (Jan) auf 9% (Apr) gesunken. Backend stabilisiert sich nach Go-Live.
| Person | Rolle | Seit | Issues (90d) | Bug-Anteil | Done% | Bewertung |
|---|---|---|---|---|---|---|
| Bishara Jaser | Dev | 2022-08 | 73 | niedrig | 93% | TOP — Leistungstraeger |
| Saurav Kumar | Dev | 2022-01 | 48 | 8% | 94% | TOP — niedrigste Bug-Rate |
| Jonas Koehler | Dev | ? | 34 | niedrig | 100% | Exzellent |
| Dong-Won Han | Dev | 2021-09 | 20 | mittel | mittel | Veteran |
| Hans-Henning Ramberger | Dev | 2024-05 | 16 | mittel | mittel | Auch OPs |
| Vasileios Dimitriadis | Dev | 2023-11 | 11 | mittel | mittel | Wenig aktiv |
| Christian Meins | PO | 2021-10 | 9 | — | — | Product Owner |
| Harry Braun | Dev | 2023-01 | 5 | mittel | mittel | SB4 SV |
| Olaf Becken | Business Engineer | 2024-05 | 5 | — | — | |
| Alexander Petioky | Dev | 2021-10 | 1 | — | — | Kaum aktiv |
Kern-Trio: Bishara + Saurav + Jonas (155 Issues, >93% Done). Deren Arbeitsweise sollte als Vorbild fuer andere Teams dienen.
Niedrigste Bug-Rate (15%), stabiler Output. Beste SonarQube-Qualitaet (4.2 Smells/1K, 91.8% Coverage).
| Person | Rolle | Seit | Issues (90d) | Bug-Anteil | Bewertung |
|---|---|---|---|---|---|
| Steven Meixner | Dev | 2022-07 | 64 + 27 OPs | niedrig | TOP — Allrounder (SPOF!) |
| Bing Shi | Dev | 2022-04 | 63 | niedrig | Stark |
| Frank Lemke | Dev | 2022-12 | 49 | niedrig | Auch OPs |
| Kathrin Schleich | Dev | 2021-09 | 27 | niedrig | Auch OPs |
| Michael Weisberg | Test | 2024-11 | 23 | — | 52% offen |
| Bernd Klebl | PO | 2021-09 | 16 | — | Auch OPs |
| Norbert Maurer | Dev | 2021-11 | 12 | — | 83% offen — ausgeschieden? |
Jan Lubenow = 39% aller DevOps-Issues — kritischster Single Point of Failure im gesamten Programm.
| Person | Rolle | Seit | Issues (90d) | Anteil |
|---|---|---|---|---|
| Jan Lubenow | Lead Dev | 2022-09 | 114 | 39% |
| David Steinkopff | Dev | 2023-03 | 18 | 6% |
| Henrik Scholl | Dev | 2024-10 | 10 | 3% |
| Christian Prause | Dev | ? | 7 | 2% |
| Patrick Lewandowski | Dev | ? | 6 | 2% |
| Michael Mh Jahn | Dev | ? | 6 | 2% |
| Sebastian Goendoer | Dev | ? | 3 | 1% |
| Team | Hypothese: Laenger dabei = weniger Bugs? | Ergebnis |
|---|---|---|
| Team 404 | Emmanuel (56 Monate, 69% Bugs), Simon (5 Monate, 0% Bugs) | WIDERLEGT — Systematisches Problem |
| Team CIB | Saurav (51 Monate, 8% Bugs), Bishara (44 Monate, niedrig) | BESTAETIGT — Erfahrung + gute Prozesse |
| Team Zero | Alle Veteranen niedrige Bug-Rate, beste SonarQube-Werte | BESTAETIGT — Stabiles Team + Praktiken |
Fazit: Tenure allein erklaert die Bug-Rate nicht. Team 404 hat ein systematisches Frontend-Qualitaetsproblem, das nicht durch Erfahrung geloest wird. CIB und Zero zeigen, dass gute Prozesse + Erfahrung zusammen wirken.
| Risiko | Person(en) | Impact | Massnahme |
|---|---|---|---|
| SPOF DevOps | Jan Lubenow (39%) | Deployment, CI/CD, Infra | Wissenstransfer, Dokumentation |
| SPOF Zero/OPs | Steven Meixner (91 Issues) | TAF/TAP + Infrastruktur | Entlastung, Backup aufbauen |
| Bug-Verursacher 404 | Emmanuel (69%), Leon (71%) | Portal-Qualitaet | Code-Reviews, Pair Programming |
| Risiko | Person(en) | Impact | Massnahme |
|---|---|---|---|
| QA-Engpass 404 | Luca Caracciolo (5 Issues) | Testabdeckung Portal | Aktivieren oder ersetzen |
| Test-Backlog Zero | Michael Weisberg (52% offen) | Testabdeckung TAF/TAP | Priorisierung |
| Inaktive Mitglieder | Norbert Maurer, Alexander Petioky | Offene Issues, Wissen | Status klaeren |