79 lines
6.5 KiB
Markdown
79 lines
6.5 KiB
Markdown
# Spol workflowændringen tilbage
|
||
|
||
CLI-værktøjet gælder kun lokal test: Docker-container `bmc-hub-postgres`, database og bruger `bmc_hub`. Intet i værktøjet ændrer produktion. Afvikling af afinstallation er ikke udført som del af implementeringen.
|
||
|
||
## Hurtig deaktivering – bevar alle data
|
||
|
||
Sæt `WORKFLOWS_ENABLED=false` og `WORKFLOW_AI_ENABLED=false` i den lokale konfiguration. Genstart API og kontrollér at `bmc_workflow_runtime.enabled` er false. Kontrollér også schedulerlog og at nye tidsregistreringer ikke skaber workflowevents. Bevar definitioner, historik, tags, sager, korttransaktioner og ordrekladder. Dette er den normale tilbagevej.
|
||
|
||
Gennemførte korttræk og ordrekladder tilbageføres ikke ved deaktivering. Korrektion af gennemførte afregninger kræver den normale økonomiproces.
|
||
|
||
## Lav og verificér checkpoint
|
||
|
||
Kør fra repositoryroden. Vis først handlingen:
|
||
|
||
```zsh
|
||
./.venv/bin/python scripts/workflow_backup.py backup
|
||
```
|
||
|
||
Opret derefter checkpoint, når det ønskes:
|
||
|
||
```zsh
|
||
./.venv/bin/python scripts/workflow_backup.py backup --apply --confirm BACKUP-LOCAL-BMC
|
||
```
|
||
|
||
Værktøjet skriver en privat mappe under `/private/tmp/bmc-workflow-backup-*` med PostgreSQL custom dump, ZIP af den aktuelle kildekode og SHA-256-manifest. Dumpet valideres med `pg_restore --list`. Det er ikke en fuld gendannelsestest. Kildefiler med følsomme filnavne og konfigurationsmapper udelades; ZIP er ikke en backup af lokale credentials. Databasedump kan indeholde kundedata og credentials og skal opbevares privat.
|
||
|
||
`/tmp` kan blive ryddet. Flyt checkpoint til et varigt privat backupområde uden for repository, før permanent afinstallation. Placering uden for tilladte skriveområder kræver separat godkendelse. Commit aldrig backupfiler. Stop lokale skriverprocesser under checkpoint og afinstallation, så kode og data er konsistente.
|
||
|
||
Det oprindelige implementeringscheckpoint ligger i `/private/tmp/bmc-workflow-backup-20261008/` med `bmc_hub.dump` og `source.tar`. Det er et separat baselineformat, ikke værktøjets `manifest.json`-format, og kan derfor ikke gives direkte til `--backup-dir`. Bevar denne baseline til gendannelse af tilstanden før ændringen. Lav et nyt, verificeret checkpoint med værktøjet inden afinstallation.
|
||
|
||
## Gendan kode uden at miste øvrige ændringer
|
||
|
||
Startpunktet for denne implementering er Git-commit `4871dd2d9ec961de584a293f713a51ccc8f80543`. Bevar først den aktuelle arbejdsmappe i checkpoint. Opret en separat worktree fra startpunktet:
|
||
|
||
```zsh
|
||
git worktree add /private/tmp/bmc-hub-before-workflows 4871dd2d9ec961de584a293f713a51ccc8f80543
|
||
```
|
||
|
||
Kør den tidligere kode fra den worktree med særskilt lokal konfiguration efter deaktivering. Startpunktet indeholder ikke nødvendigvis ændringer, der var ucommittede før implementeringen; brug det oprindelige arbejdsmappe-checkpoint til disse filer. Brug ikke `git reset --hard`, og overskriv ikke den nuværende arbejdsmappe. Sammenlign eksisterende ændringer og flyt kun de workflowændringer, der skal fjernes. Ældre kode kan køre med de additive tabeller liggende.
|
||
|
||
## Permanent afinstallation af workflowdata
|
||
|
||
Dette fjerner workflowdefinitioner, beslutninger, audit, AI-forslag, nyt taghierarki og nye metadatakolonner. Eksisterende kunder, sager, tidsregistreringer, konkrete tagtildelinger, ordrekladder og korttransaktioner bevares. Catch words fra det oprindelige tag-API bevares; avancerede keywordregler fjernes. Nye workflowspecifikke rettigheder fjernes.
|
||
|
||
1. Stop API og scheduler. Verificér featureflags er slået fra. Bevar backupmappe og kontrolsum-manifest.
|
||
2. Gennemgå SQL og den planlagte handling:
|
||
|
||
```zsh
|
||
./.venv/bin/python scripts/workflow_backup.py uninstall
|
||
```
|
||
|
||
3. Hvis fjernelsen er ønsket, giv en verificeret checkpointmappe og den eksplicitte token:
|
||
|
||
```zsh
|
||
./.venv/bin/python scripts/workflow_backup.py uninstall --apply --confirm UNINSTALL-LOCAL-BMC --backup-dir /private/tmp/bmc-workflow-backup-DIT-CHECKPOINT
|
||
```
|
||
|
||
Værktøjet tager en ny fuld backup og eksporterer audit før fjernelse. SQL er én transaktion uden `CASCADE`; ukendte afhængigheder stopper fjernelsen. Bevar også den nye backup. Fjern kodefunktionerne eller start ældre kode inden API startes; ny kode må ikke bruges mod den afinstallerede schema. Kontrollér migrationsmekanismen: migrationer 1062–1066 må ikke automatisk genanvendes, mens funktionaliteten ønskes fjernet.
|
||
|
||
## Fuld databasegendannelse
|
||
|
||
Gendan først dumpet i en isoleret database og test sag-/tids-/økonomidata samt relevante API’er. En fuld gendannelse overskriver hele databasen og **fjerner også alle nye sager, tidsregistreringer og øvrige ændringer oprettet efter backuppen**. Derfor udfører værktøjet aldrig automatisk fuld databasegendannelse. Produktionsgendannelse kræver særskilt vurdering, vedligeholdelsesvindue og godkendelse. Deaktivering eller selektiv afinstallation bevarer de nye forretningsdata og er standardvalget.
|
||
|
||
SQL-downgraden tillader også særskilte databaser med navnepræfikset `bmc_workflow_test` til integrationstests. CLI-værktøjet forbliver låst til den lokale database `bmc_hub`. `tests/test_workflow_uninstall.py` afprøver fjernelse i den eksisterende disposable testdatabase i en transaktion, kontrollerer bevarelse af forretningsdata og ruller testtransaktionen tilbage.
|
||
|
||
## Lokal opstart og kontrol
|
||
|
||
Standarderne er `WORKFLOWS_ENABLED=false`, `WORKFLOW_AI_ENABLED=false` og `WORKFLOWS_MODE=shadow`. Aktivér kun lokale testindstillinger i den lokale miljøkonfiguration. Genstart API efter ændring. Produktionsindstillinger må ikke kopieres til test, og credentials må ikke skrives i vejledninger eller commits.
|
||
|
||
Administrationen findes på `/workflows`, taghierarki og forslag på `/tags/classification`. Brug en bruger med de relevante administrationsrettigheder. Kontrollér først simulator og skyggeresultater. Aktiv tilstand og økonomigodkendelse aktiveres særskilt efter lokal verificering.
|
||
|
||
Kør fokuserede tests fra repositoryroden:
|
||
|
||
```zsh
|
||
PYTHONPYCACHEPREFIX=/private/tmp/bmc_workflow_pycache ./.venv/bin/python -m pytest tests/test_workflow_tags.py tests/test_workflow_uninstall.py -q
|
||
```
|
||
|
||
Databaseafinstallationstesten kræver `BMC_WORKFLOW_TEST_DSN` til en disposable database med navnet `bmc_workflow_test*`; uden den springes testen over. Brug eksisterende lokal testkonfiguration, og del ikke DSN med credentials i log eller commits. Eksporten før permanent fjernelse omfatter workflowdefinitioner og versioner, aktivering, ressourcehistorik, events, handlinger, udførelser, afregningsbeslutninger, settlementreferencer, taghistorik, forslag og AI-jobs.
|