Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Pusht die Roadmap-Tabelle als Confluence-Seite
|
||||
#>
|
||||
$ConfluenceUrl = "https://arija-confluence.jaas.service.deutschebahn.com"
|
||||
$SpaceKey = "BES"
|
||||
$ParentPageId = "581013135"
|
||||
$ApiBase = "$ConfluenceUrl/rest/api"
|
||||
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
|
||||
$SecretsPath = Join-Path $ScriptDir "..\.secrets"
|
||||
$PAT = $null
|
||||
if (Test-Path $SecretsPath) {
|
||||
Get-Content $SecretsPath | ForEach-Object {
|
||||
if ($_ -match "^CONFLUENCE_TOKEN=(.+)$") {
|
||||
$val = $Matches[1].Trim()
|
||||
if ($val -ne "HIER_TOKEN_EINTRAGEN") { $PAT = $val }
|
||||
}
|
||||
}
|
||||
}
|
||||
if (-not $PAT) { $PAT = Read-Host "Confluence PAT" }
|
||||
$Headers = @{ "Authorization" = "Bearer $PAT"; "Content-Type" = "application/json" }
|
||||
|
||||
$Title = "24. Roadmap-Tabelle (alle Themen)"
|
||||
Write-Host ">> Push: $Title" -ForegroundColor Yellow
|
||||
|
||||
$Html = @"
|
||||
<h2>Roadmap-Tabelle — Alle Themen nach Team</h2>
|
||||
<p><strong>Stand:</strong> $(Get-Date -Format 'yyyy-MM-dd') | 77 Themen | Quellen: Technische Roadmap, PO-Input, BO-Input, Jira TTTSol, Risiko-Radar</p>
|
||||
<p><strong>Legende Prio:</strong> MUSS = regulatorisch/vertraglich | HOCH = geschaeftskritisch | MITTEL = wichtig | NIEDRIG = nice-to-have</p>
|
||||
<p><strong>Legende Dauer:</strong> S = Sprint (2W) | M = Monat | Q = Quartal | L = Langfristig (>Q)</p>
|
||||
|
||||
<h3>Kritischer Pfad (harte Deadlines)</h3>
|
||||
<table>
|
||||
<tr style="background:#f8cecc;"><th>Deadline</th><th>Thema</th><th>Team</th><th>Konsequenz bei Versaeumnis</th></tr>
|
||||
<tr style="background:#f8cecc;"><td><strong>Jun 2026</strong></td><td>Spring Boot 4</td><td>Alle</td><td>Kein Security-Support mehr</td></tr>
|
||||
<tr style="background:#fff2cc;"><td><strong>Aug 2026</strong></td><td>SL Silber Plus</td><td>OPs</td><td>Vertragsverletzung</td></tr>
|
||||
<tr style="background:#fff2cc;"><td><strong>Dez 2026</strong></td><td>FplJ 28</td><td>Alle</td><td>Fahrplanwechsel gefaehrdet</td></tr>
|
||||
<tr><td>Laufend</td><td>Abrechnung TTT</td><td>CIB</td><td>Falsche Rechnungen an Kunden</td></tr>
|
||||
<tr><td>Laufend</td><td>NAÄ implizite Annahme</td><td>CIB</td><td>Kundenversprechen gebrochen</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Team CIB (17 Themen)</h3>
|
||||
<table>
|
||||
<tr><th>#</th><th>Thema</th><th>Kurzfassung</th><th>Prio</th><th>Dauer</th><th>Deadline</th><th>Status</th></tr>
|
||||
<tr style="background:#f8cecc;"><td>C1</td><td><strong>Implizite Annahme NAÄ</strong></td><td>Kundenversprechen: Standard-Prozess fuer NAÄ. O2CCIB-6931 unassigned.</td><td>MUSS</td><td>M</td><td>PI 41</td><td>⚠ Geschoben</td></tr>
|
||||
<tr style="background:#f8cecc;"><td>C2</td><td><strong>Spring Boot 4 (SV, AV, IFP)</strong></td><td>EOL 3.5 Juni 2026. SV (Saurav), Archivierung (Hans-Henning), IFP aktiv.</td><td>MUSS</td><td>M</td><td><strong>Jun 2026</strong></td><td>🔄 In Arbeit</td></tr>
|
||||
<tr style="background:#f8cecc;"><td>C3</td><td><strong>Abrechnung TTT/AC</strong></td><td>41 offene Tickets, 8 Highest. Grundrisiko: Nicht korrekt abrechnen.</td><td>MUSS</td><td>Q</td><td>Laufend</td><td>🔄 Taskforce</td></tr>
|
||||
<tr style="background:#f8cecc;"><td>C4</td><td><strong>20h Zug Abrechnung</strong></td><td>TTTSOL-2149 BLOCKED. Loesung funktioniert nicht.</td><td>MUSS</td><td>M</td><td>PI 41</td><td>❌ Blocked</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>C5</td><td>Vertragskorrektur rueckwirkend</td><td>TTTSOL-1956 Highest. Konzernreporting.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>C6</td><td>NEP2 Funktionalitaet</td><td>Aktueller TTT-Meilenstein. Laeuft stabil.</td><td>HOCH</td><td>Q</td><td>Laufend</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>C7</td><td>Aenderungswesen finalisieren</td><td>Parallele Aenderungsbestellungen validieren.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>C8</td><td>Vorpruefung Portal</td><td>Validierung VOR Absenden. Verhindert Haengenbleiben.</td><td>HOCH</td><td>M</td><td>PI 41/42</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>C9</td><td>Click&Ride Anbindung</td><td>ADR-72. SUBP arbeitet an Teilen.</td><td>HOCH</td><td>Q</td><td>PI 41</td><td>Teilweise</td></tr>
|
||||
<tr><td>C10</td><td>Camunda 8.9</td><td>Support-Zeitraeume beachten.</td><td>MITTEL</td><td>S</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>C11</td><td>Full-Table-Scans AV</td><td>Performance-Problem.</td><td>MITTEL</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>C12</td><td>RouteUpdate-Prozess</td><td>Noch nicht implementiert. Nachlieferung.</td><td>MITTEL</td><td>Q</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>C13</td><td>§22 ERegG</td><td>Eintritt Drittunternehmen in Vertrag.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>C14</td><td>Leistungsverweigerung</td><td>Durchsetzung Stufe 2.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>C15</td><td>Rahmenvertraege aufraeumen</td><td>Reduziert Pflegeaufwand.</td><td>NIEDRIG</td><td>S</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>C16</td><td>Mehrfach-Beanstandung Fix</td><td>Nur erste wird weitergeleitet.</td><td>NIEDRIG</td><td>S</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>C17</td><td>SV-Smells abbauen</td><td>2214 Smells. Sprint-weise.</td><td>NIEDRIG</td><td>L</td><td>Laufend</td><td>Offen</td></tr>
|
||||
</table>
|
||||
"@
|
||||
|
||||
$Html += @"
|
||||
|
||||
<h3>Team 404 (17 Themen)</h3>
|
||||
<table>
|
||||
<tr><th>#</th><th>Thema</th><th>Kurzfassung</th><th>Prio</th><th>Dauer</th><th>Deadline</th><th>Status</th></tr>
|
||||
<tr style="background:#fff2cc;"><td>P1</td><td><strong>Portal-Bug-Rate senken</strong></td><td>33% Bug-Rate. Emmanuel 69%, Leon 71%. Systematisch.</td><td>HOCH</td><td>L</td><td>Laufend</td><td>⚠ Kritisch</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P2</td><td><strong>Entkopplung Zuglaufpunkte</strong></td><td>Vererbungslogik entfernen — Hauptquelle vieler Bugs.</td><td>HOCH</td><td>Q</td><td>PI 41/42</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P3</td><td>Fehlermeldungen-Konzept</td><td>Verstaendliche Meldungen. BO-Prioritaet.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P4</td><td>Uebersichtsseite Vorgaenge</td><td>Gruppiert nach RouteID.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P5</td><td>E2E-Tests ausbauen</td><td>Playwright/Cypress. Coverage gut, Testqualitaet nicht.</td><td>HOCH</td><td>L</td><td>Laufend</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P6</td><td>Testumgebung mit TPN</td><td>Dauerhaft verfuegbar.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>P7</td><td>Vorab-Validierung (BEP)</td><td>Zusammen mit CIB C8.</td><td>HOCH</td><td>M</td><td>PI 41/42</td><td>Offen</td></tr>
|
||||
<tr><td>P8</td><td>Benachrichtigungen E-Mail</td><td>Bei NAÄ oder Angebotseingang.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P9</td><td>Expertenmodus</td><td>Kompakte Maske fuer Erfahrene.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P10</td><td>Massenkopie Taktbestellungen</td><td>Mehrere Takte kopieren.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P11</td><td>Suchfunktion</td><td>Leistungsfaehige Suche.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P12</td><td>Kalenderfunktion</td><td>Kunden tun sich schwer.</td><td>MITTEL</td><td>S</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P13</td><td>Verknuepfungslogik</td><td>Planned/RelatedPlanned IDs.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>P14</td><td>Vorlagen ueberarbeiten</td><td>Fehleranfaellig. Konzept noetig.</td><td>MITTEL</td><td>M</td><td>PI 43</td><td>Offen</td></tr>
|
||||
<tr><td>P15</td><td>Auslands-/NE-Strecken</td><td>Hilfe beim Anlegen.</td><td>NIEDRIG</td><td>M</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>P16</td><td>TPN-Import optimieren</td><td>Zu komplex.</td><td>NIEDRIG</td><td>Q</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>P17</td><td>Nutzerfuehrung</td><td>Verkehrsart zu Beginn.</td><td>NIEDRIG</td><td>S</td><td>—</td><td>Offen</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Team Zero (16 Themen)</h3>
|
||||
<table>
|
||||
<tr><th>#</th><th>Thema</th><th>Kurzfassung</th><th>Prio</th><th>Dauer</th><th>Deadline</th><th>Status</th></tr>
|
||||
<tr style="background:#f8cecc;"><td>Z1</td><td><strong>Spring Boot 4 (CI, AV)</strong></td><td>AV-Trasse Test-Branch aktiv.</td><td>MUSS</td><td>M</td><td><strong>Jun 2026</strong></td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>Z2</td><td>NEP2 Schnittstellen</td><td>Aktueller TTT-Meilenstein.</td><td>HOCH</td><td>Q</td><td>Laufend</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>Z3</td><td>Workarounds TTK aufraeumen</td><td>Technische Schuld.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>Z4</td><td>Performance AV</td><td>Auftrags-Verwaltung.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>Z5</td><td>Verschluesselung</td><td>Security-Anforderung.</td><td>HOCH</td><td>S</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>Z6</td><td>Monitoring Grafana</td><td>Boards nutzbar machen.</td><td>MITTEL</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>Z7</td><td>Stationsportal</td><td>Fertigstellen.</td><td>MITTEL</td><td>M</td><td>PI 41/42</td><td>Offen</td></tr>
|
||||
<tr><td>Z8</td><td>LuP VNP Versand</td><td>Last- und Performance.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>Z9</td><td>PCS aufraeumen</td><td>Gestaltung Rueckweg. Gross.</td><td>MITTEL</td><td>Q</td><td>PI 42/43</td><td>Offen</td></tr>
|
||||
<tr><td>Z10</td><td>Runbook</td><td>Aktualisieren.</td><td>NIEDRIG</td><td>M</td><td>Laufend</td><td>Offen</td></tr>
|
||||
<tr><td>Z11</td><td>Click&Ride</td><td>Mit CIB.</td><td>NIEDRIG</td><td>Q</td><td>PI 43+</td><td>Offen</td></tr>
|
||||
<tr><td>Z12</td><td>Infrastruktur Revisionen</td><td>Verarbeiten.</td><td>NIEDRIG</td><td>M</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>Z13</td><td>Ersatz Message Routing ID</td><td>SenderReference. Gross.</td><td>NIEDRIG</td><td>Q</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>Z14</td><td>XSD 3.5.2</td><td>Kann gross werden.</td><td>NIEDRIG</td><td>Q</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>Z15</td><td>LuP neu</td><td>Komplett neu.</td><td>NIEDRIG</td><td>L</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>Z16</td><td>TDM aufraeumen</td><td>Datenmodell.</td><td>NIEDRIG</td><td>M</td><td>—</td><td>Offen</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>OPs / DevOps (14 Themen)</h3>
|
||||
<table>
|
||||
<tr><th>#</th><th>Thema</th><th>Kurzfassung</th><th>Prio</th><th>Dauer</th><th>Deadline</th><th>Status</th></tr>
|
||||
<tr style="background:#f8cecc;"><td>O1</td><td><strong>Netcool-Anbindung</strong></td><td>Betriebsueberwachung. UKA.</td><td>MUSS</td><td>M</td><td>PI 40/41</td><td>🔄</td></tr>
|
||||
<tr style="background:#f8cecc;"><td>O2</td><td><strong>Monitoring-Konzept</strong></td><td>Umsetzung seit PI 40.</td><td>MUSS</td><td>M</td><td>PI 41</td><td>🔄</td></tr>
|
||||
<tr style="background:#f8cecc;"><td>O3</td><td><strong>SL Silber Plus</strong></td><td>Vertragliche Verpflichtung.</td><td>MUSS</td><td>Q</td><td><strong>Aug 2026</strong></td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>O4</td><td>DR-Test 3</td><td>SL-Voraussetzung.</td><td>HOCH</td><td>M</td><td>PI 40/41</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>O5</td><td>Secret-Rotation</td><td>Security-Konzept.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>O6</td><td>Deployment-Automatisierung</td><td>Smoketests. Seit 03/2026.</td><td>HOCH</td><td>Q</td><td>PI 41/42</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>O7</td><td>K8s-Cluster/Namespaces</td><td>Umstellung. UKA.</td><td>HOCH</td><td>M</td><td>PI 40</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>O8</td><td>Jan Lubenow entlasten</td><td>SPOF 39%. Wissenstransfer.</td><td>HOCH</td><td>L</td><td>Laufend</td><td>⚠</td></tr>
|
||||
<tr><td>O9</td><td>AppMesh-Alternative</td><td>AWS EOL 2026.</td><td>MITTEL</td><td>Q</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>O10</td><td>Umgebungen konsolidieren</td><td>17+ reduzieren.</td><td>MITTEL</td><td>Q</td><td>PI 42/43</td><td>Offen</td></tr>
|
||||
<tr><td>O11</td><td>Keycloak konsolidieren</td><td>5+ Repos.</td><td>NIEDRIG</td><td>M</td><td>—</td><td>Offen</td></tr>
|
||||
<tr><td>O12</td><td>ECR statt Artifactory</td><td>Laufzeit-Artefakte. UKA.</td><td>MITTEL</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>O13</td><td>Security-Groups egress</td><td>Netzwerk-Security.</td><td>MITTEL</td><td>M</td><td>PI 41</td><td>Offen</td></tr>
|
||||
<tr><td>O14</td><td>Runbook beschleunigen</td><td>DevOps-Doku.</td><td>MITTEL</td><td>L</td><td>Laufend</td><td>🔄</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Uebergreifend / Programm (13 Themen)</h3>
|
||||
<table>
|
||||
<tr><th>#</th><th>Thema</th><th>Kurzfassung</th><th>Prio</th><th>Dauer</th><th>Deadline</th><th>Status</th></tr>
|
||||
<tr style="background:#fff2cc;"><td>U1</td><td><strong>Hypercare beenden</strong></td><td>Normalbetrieb.</td><td>HOCH</td><td>—</td><td>Jul 2026</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U2</td><td><strong>GelV Erweiterungen</strong></td><td>TTT-Meilenstein.</td><td>HOCH</td><td>Q</td><td>Sep 2026</td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U3</td><td>ujBau Funktionalitaet</td><td>TTT-Meilenstein.</td><td>HOCH</td><td>Q</td><td>Laufend</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U4</td><td>FplJ 28 Vorbereitung</td><td>Fahrplanwechsel Dez 2026.</td><td>HOCH</td><td>Q</td><td><strong>Dez 2026</strong></td><td>Offen</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U5</td><td>DB Cargo Eskalation CIO</td><td>TTTSOL-2186. PCS + VNP.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U6</td><td>OTN-Vergabe Fpl 2027</td><td>Muss vor FplW geloest sein.</td><td>HOCH</td><td>M</td><td>Dez 2026</td><td>🔄</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U7</td><td>Ad-hoc Verkehre <1h</td><td>BLOCKED. TopThema. FV.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>❌</td></tr>
|
||||
<tr style="background:#fff2cc;"><td>U8</td><td>Mittiger Teilausfall SEV</td><td>Fernverkehr. Taskforce.</td><td>HOCH</td><td>M</td><td>PI 41</td><td>🔄</td></tr>
|
||||
<tr><td>U9</td><td>Team-Reorganisation</td><td>Subdomaenen-Schnitt.</td><td>MITTEL</td><td>Q</td><td>Q1 2027</td><td>Offen</td></tr>
|
||||
<tr><td>U10</td><td>Support-Enablement</td><td>Tools, Zugang, Prozesse.</td><td>MITTEL</td><td>M</td><td>PI 42</td><td>Offen</td></tr>
|
||||
<tr><td>U11</td><td>Contract Testing</td><td>Cross-Team Qualitaet.</td><td>NIEDRIG</td><td>Q</td><td>PI 43</td><td>Offen</td></tr>
|
||||
<tr><td>U12</td><td>TPN abloesen</td><td>Parallelbetrieb beenden.</td><td>NIEDRIG</td><td>L</td><td>Q2 2027</td><td>Offen</td></tr>
|
||||
<tr><td>U13</td><td>Daten-Partitionierung</td><td>Performance wachsende Daten.</td><td>MITTEL</td><td>Q</td><td>Dez 2026</td><td>Offen</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Zusammenfassung</h3>
|
||||
<table>
|
||||
<tr><th>Team</th><th>MUSS</th><th>HOCH</th><th>MITTEL</th><th>NIEDRIG</th><th>Gesamt</th></tr>
|
||||
<tr><td><strong>CIB</strong></td><td>4</td><td>5</td><td>5</td><td>3</td><td>17</td></tr>
|
||||
<tr><td><strong>404</strong></td><td>0</td><td>7</td><td>7</td><td>3</td><td>17</td></tr>
|
||||
<tr><td><strong>Zero</strong></td><td>1</td><td>4</td><td>4</td><td>7</td><td>16</td></tr>
|
||||
<tr><td><strong>OPs/DevOps</strong></td><td>3</td><td>5</td><td>4</td><td>2</td><td>14</td></tr>
|
||||
<tr><td><strong>Uebergreifend</strong></td><td>0</td><td>8</td><td>3</td><td>2</td><td>13</td></tr>
|
||||
<tr style="background:#f5f5f5;"><td><strong>GESAMT</strong></td><td><strong>8</strong></td><td><strong>29</strong></td><td><strong>23</strong></td><td><strong>17</strong></td><td><strong>77</strong></td></tr>
|
||||
</table>
|
||||
"@
|
||||
|
||||
# Create or Update
|
||||
$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: $($_.Exception.Message)" -ForegroundColor Red; exit 1 }
|
||||
|
||||
if ($SearchData.results -and $SearchData.results.Count -gt 0) {
|
||||
$PageId = $SearchData.results[0].id
|
||||
$VerResp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId`?expand=version" -Headers $Headers -UseBasicParsing
|
||||
$VerData = $VerResp.Content | ConvertFrom-Json
|
||||
$Version = $VerData.version.number + 1
|
||||
Write-Host " Aktualisiere (ID: $PageId, v$Version)..." -NoNewline
|
||||
$Body = @{ version = @{ number = $Version }; title = $Title; type = "page"; body = @{ storage = @{ value = $Html; representation = "storage" } } } | ConvertTo-Json -Depth 10
|
||||
$Resp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId" -Method Put -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing
|
||||
Write-Host " OK" -ForegroundColor Green
|
||||
$ResultId = ($Resp.Content | ConvertFrom-Json).id
|
||||
} else {
|
||||
Write-Host " Erstelle neue Seite..." -NoNewline
|
||||
$Body = @{ type = "page"; title = $Title; space = @{ key = $SpaceKey }; ancestors = @(@{ id = $ParentPageId }); body = @{ storage = @{ value = $Html; representation = "storage" } } } | ConvertTo-Json -Depth 10
|
||||
$Resp = Invoke-WebRequest -Uri "$ApiBase/content" -Method Post -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing
|
||||
Write-Host " OK" -ForegroundColor Green
|
||||
$ResultId = ($Resp.Content | ConvertFrom-Json).id
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "============================================================" -ForegroundColor Green
|
||||
Write-Host " Seite: $ConfluenceUrl/pages/viewpage.action?pageId=$ResultId" -ForegroundColor Green
|
||||
Write-Host "============================================================" -ForegroundColor Green
|
||||
Reference in New Issue
Block a user