bmc_hub/MIGRATION_GUIDE_v2.0.0.md

249 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

# Migration Guide - Supplier Invoice Enhancements (v2.0.0)
## 🎯 Hvad migreres:
### Database Changes:
-`supplier_invoice_lines`: Nye kolonner (contra_account, line_purpose, resale_customer_id, resale_order_number)
-`economic_accounts`: Ny tabel til e-conomic kontoplan cache
### Backend Changes:
- ✅ e-conomic accounts API integration
- ✅ Line item update endpoint med modkonto support
### Frontend Changes:
- ✅ 3 nye faneblade (Til Betaling, Klar til Bogføring, Varelinjer)
- ✅ Inline redigering af modkonto og formål
- ✅ Backup version på /billing/supplier-invoices2
---
## 📋 Pre-Migration Checklist:
- [ ] Commit alle ændringer til git
- [ ] Test på lokal udvikling fungerer
- [ ] Backup af production database
- [ ] Tag ny version (v2.0.0)
- [ ] Push til Gitea
---
## 🚀 Migration Steps:
### Step 1: Commit og Tag Release
```bash
cd /Users/christianthomas/DEV/bmc_hub_dev
# Commit ændringer
git add .
git commit -m "Supplier invoice enhancements v2.0.0
- Added modkonto (contra_account) support per line
- Added line_purpose tracking (resale, internal, project, stock)
- Added e-conomic accounts API integration
- Redesigned frontend with 3 tabs: Payment, Ready for Booking, Line Items
- Database migration 1000 included
- Backup version available at /billing/supplier-invoices2"
# Opdater VERSION fil
echo "2.0.0" > VERSION
git add VERSION
git commit -m "Bump version to 2.0.0"
# Tag release
git tag v2.0.0
git push origin main
git push origin v2.0.0
```
### Step 2: Backup Production Database
```bash
# SSH til production
ssh bmcadmin@172.16.31.183
# Backup database
cd /srv/podman/bmc_hub_v1.0
podman exec bmc-hub-postgres-prod pg_dump -U bmc_hub bmc_hub > backup_pre_v2.0.0_$(date +%Y%m%d_%H%M%S).sql
# Verificer backup
ls -lh backup_pre_v2.0.0_*.sql
```
### Step 3: Deploy ny Version
Fra lokal Mac:
```bash
cd /Users/christianthomas/DEV/bmc_hub_dev
# Kør deployment script
./deploy_to_prod.sh v2.0.0
```
Dette script:
1. Opdaterer RELEASE_VERSION i .env
2. Stopper containers
3. Bygger nyt image fra Gitea tag v2.0.0
4. Starter containers igen
### Step 4: Kør Migration på Production
```bash
# SSH til production
ssh bmcadmin@172.16.31.183
cd /srv/podman/bmc_hub_v1.0
# Kør migration SQL
podman exec -i bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub < migrations/1000_supplier_invoice_enhancements.sql
# ELLER hvis migrationen ikke er mounted:
# Kopier migration til container først:
podman cp migrations/1000_supplier_invoice_enhancements.sql bmc-hub-postgres-prod:/tmp/migration.sql
podman exec bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub -f /tmp/migration.sql
```
### Step 5: Sync e-conomic Accounts
```bash
# Trigger initial sync af kontoplan
curl -X GET "http://172.16.31.183:8001/api/v1/supplier-invoices/economic/accounts?refresh=true"
# Verificer at konti er cached
curl -s "http://172.16.31.183:8001/api/v1/supplier-invoices/economic/accounts" | jq '.accounts | length'
# Skal returnere antal konti (fx 20)
```
### Step 6: Verificer Migration
```bash
# Tjek database kolonner
podman exec bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub -c "\d supplier_invoice_lines"
# Skal vise: contra_account, line_purpose, resale_customer_id, resale_order_number
# Tjek economic_accounts tabel
podman exec bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub -c "SELECT COUNT(*) FROM economic_accounts;"
# Skal returnere antal accounts (fx 20)
# Test frontend
# Åbn: http://172.16.31.183:8001/billing/supplier-invoices
# Skal vise: Til Betaling, Klar til Bogføring, Varelinjer tabs
# Test backup version
# Åbn: http://172.16.31.183:8001/billing/supplier-invoices2
# Skal vise: Original version med Fakturaer, Mangler Behandling tabs
```
---
## 🔄 Rollback Plan (hvis noget går galt):
### Option 1: Rollback til forrige version
```bash
ssh bmcadmin@172.16.31.183
cd /srv/podman/bmc_hub_v1.0
# Opdater til forrige version (fx v1.3.123)
sed -i 's/^RELEASE_VERSION=.*/RELEASE_VERSION=v1.3.123/' .env
# Rebuild og restart
podman-compose down
podman-compose build --no-cache
podman-compose up -d
```
### Option 2: Restore database backup
```bash
ssh bmcadmin@172.16.31.183
cd /srv/podman/bmc_hub_v1.0
# Stop API for at undgå data ændringer
podman stop bmc-hub-api-prod
# Restore database
podman exec -i bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub < backup_pre_v2.0.0_XXXXXXXX.sql
# Restart API
podman start bmc-hub-api-prod
```
---
## 📊 Post-Migration Validation:
### Test Cases:
1. **Upload Invoice**
- Upload PDF faktura
- Verificer Quick Analysis virker
- Tjek vendor auto-match
2. **Process Invoice**
- Klik "Behandl" på uploaded fil
- Verificer template extraction
- Tjek at linjer oprettes
3. **Assign Modkonto**
- Gå til "Varelinjer" tab
- Vælg modkonto fra dropdown (skal vise 20 konti)
- Vælg formål (Videresalg, Internt, osv.)
- Gem og verificer
4. **Check Ready for Booking**
- Gå til "Klar til Bogføring" tab
- Skal kun vise fakturaer hvor ALLE linjer har modkonto
- Test "Send til e-conomic" knap
5. **Payment View**
- Gå til "Til Betaling" tab
- Verificer sortering efter forfaldsdato
- Test bulk selection
---
## 🎯 Success Criteria:
- ✅ Migration SQL kørt uden fejl
- ✅ 20+ e-conomic accounts cached i database
- ✅ Nye faneblade vises korrekt
- ✅ Modkonto dropdown virker
- ✅ Inline editing af linjer fungerer
- ✅ Backup version tilgængelig på /supplier-invoices2
- ✅ Send til e-conomic virker med nye modkonti
---
## ⚠️ Known Issues & Workarounds:
### Issue 1: Accounts endpoint timeout
**Symptom**: Første kald til accounts endpoint er langsomt (2-3 sek)
**Reason**: Første gang syncer fra e-conomic API
**Workaround**: Pre-trigger sync efter deployment (Step 5)
### Issue 2: Eksisterende fakturaer har ingen modkonto
**Symptom**: Gamle fakturaer vises ikke i "Klar til Bogføring"
**Expected**: Kun nye fakturaer (efter migration) vil have modkonti
**Solution**: Manuel assignment via "Varelinjer" tab for gamle fakturaer hvis nødvendigt
### Issue 3: Browser cache
**Symptom**: Gamle faneblade vises stadig
**Solution**: Ctrl+Shift+R (hard refresh) i browser
---
## 📞 Support:
Ved problemer, tjek:
1. Container logs: `podman logs bmc-hub-api-prod --tail 100`
2. Database logs: `podman logs bmc-hub-postgres-prod --tail 100`
3. Migration status: `podman exec bmc-hub-postgres-prod psql -U bmc_hub -d bmc_hub -c "SELECT * FROM economic_accounts LIMIT 5;"`
---
**Version**: 2.0.0
**Date**: 2026-01-07
**Migration File**: 1000_supplier_invoice_enhancements.sql