bmc_hub/docs/workflow-rollback.md

6.5 KiB
Raw Permalink Blame History

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:

./.venv/bin/python scripts/workflow_backup.py backup

Opret derefter checkpoint, når det ønskes:

./.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:

 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 samt kundernes workflowtilvalg og deres historik 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:
./.venv/bin/python scripts/workflow_backup.py uninstall
  1. Hvis fjernelsen er ønsket, giv en verificeret checkpointmappe og den eksplicitte token:
./.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–1067 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:

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.