bmc_hub/MDfile/NEXTCLOUD_MODULE_PLAN.md
Christian a604a3cc44 Add comprehensive test suite for vTiger integration and ticket module
- Implemented test scripts for vTiger account retrieval, contact data, and modules.
- Created a detailed test suite for the ticket module, covering database schema validation, ticket number generation, prepaid card constraints, and service logic.
- Added tests for vTiger field inspection and various queries related to accounts and sales orders.
- Introduced SQL migration scripts for the ALSO Cloud Billing foundation, including import jobs, lines, and mapping tables with necessary constraints and indices.
- Enhanced workflow columns in the import lines table to support matching and validation timestamps.
2026-06-20 03:29:51 +02:00

6.4 KiB
Raw Blame History

Nextcloud-modul – BMC Hub

1. Formål og rolle i Hubben

Nextcloud-modulet gør det muligt at sælge, administrere og supportere kunders Nextcloud‑løsninger direkte i Hubben.

Hubben er styrende system. Nextcloud er et eksternt drifts‑ og brugersystem, som Hubben taler med direkte (ingen gateway).

2. Aktivering af modulet

Modulet er kontekstbaseret og aktiveres via tag:

  • Når Firma, Kontakt eller Sag har tagget nextcloud, vises en Nextcloud‑fane i UI.
  • Uden tag vises ingen Nextcloud‑funktioner.

3. Kunde → Nextcloud‑fane (overblik)

Fanen indeholder:

  1. Drifts‑ og systeminformation (read‑only)
  2. Handlinger relateret til brugere
  3. Historik (hvad Hubben har gjort mod instansen)

Fanen må aldrig blokere kundevisningen, selv hvis Nextcloud er utilgængelig.

4. Systemstatus og driftsinformation

Datakilde: Nextcloud Serverinfo API

  • GET /ocs/v2.php/apps/serverinfo/api/v1/info
  • Direkte kald til Nextcloud
  • Autentificeret
  • Read‑only
  • Cached i DB med global TTL = 5 min

4.1 Overblik

Vises øverst i fanen:

  • Instans‑status (Online / Offline / Ukendt)
  • Sidst opdateret
  • Nextcloud‑version
  • PHP‑version
  • Database‑type og ‑version

4.2 Ressourceforbrug

Vises som simple værdier/badges:

  • CPU
  • Load average (1 / 5 / 15 min)
  • Antal kerner
  • RAM (total + brug i %)
  • Disk (total + brug i % + fri plads)

Ved kritiske værdier vises advarsel.

4.3 Nextcloud‑nøgletal

Hvor API tillader det:

  • Antal brugere
  • Aktive brugere
  • Antal filer
  • Samlet datamængde
  • Status på: database, cache/Redis, cron/background jobs

5. Handlinger i Nextcloud‑fanen

Knapper:

  • Tilføj ny bruger
  • Reset password
  • Luk bruger
  • Gensend guide

Alle handlinger:

  • udføres direkte mod Nextcloud
  • logges i Hub
  • kan spores i historik
  • kan knyttes til sag

6. Tilføj ny bruger (primær funktion)

6.1 Start af flow

  • Ved “Tilføj ny bruger” oprettes automatisk en ny Sag
  • Sagstype: Nextcloud – Brugeroprettelse
  • Ingen Nextcloud‑handling udføres uden en sag

6.2 Sag – felter og logik

Firma

  • Vælg eksisterende firma
  • Hub slår tilknyttet Nextcloud‑instans op i DB og vælger automatisk
  • Instans kan ikke ændres manuelt

Kontaktperson

  • Vælg eksisterende kontakt eller opret ny
  • Bruges til kommunikation, velkomstmail og ejerskab af sag

Grupper

  • Multiselect
  • Hentes live fra Nextcloud (OCS groups API)
  • Kun gyldige grupper kan vælges

Velkomstbrev

  • Checkbox: skal velkomstbrev sendes?
    • Hvis ja: bruger oprettes, password genereres, guide + logininfo sendes
    • Hvis nej: bruger oprettes uden mail, sag forbliver åben til manuel opfølgning

7. Øvrige handlinger

Reset password

  • Vælg eksisterende Nextcloud‑bruger
  • Nyt password genereres
  • Valg: send mail til kontakt eller kun log i sag

Luk bruger

  • Bruger deaktiveres i Nextcloud
  • Data bevares
  • Kræver eksplicit bekræftelse
  • Logges i sag og historik

Gensend guide

  • Gensender velkomstmail og guide
  • Password ændres ikke
  • Kan udføres uden ny sag, men logges

8. Arkitekturprincipper

  • Hub ejer: firma, kontakt, sag, historik
  • Nextcloud ejer: brugere, filer, rettigheder
  • Integration er direkte (ingen gateway)
  • Per‑instans auth ligger krypteret i DB
  • Global DB‑cache (5 min) for read‑only statusdata

9. Logning og sporbarhed

For hver handling gemmes:

  • tidspunkt
  • handlingstype
  • udførende bruger
  • mål (bruger/instans)
  • teknisk resultat (success/fejl)

Audit‑log er separat pr. kunde, med manuel retention og tidsbaseret partitionering.

10. Afgrænsninger (v1)

Modulet indeholder ikke:

  • ændring af server‑konfiguration
  • håndtering af apps
  • ændring af kvoter
  • direkte admin‑login

11. Klar til udvidelse

Modulet er designet til senere udvidelser:

  • overvågning → automatisk sag
  • historiske grafer
  • offboarding‑flows
  • kvote‑styring
  • SLA‑rapportering

12. Sikkerhed og drift

  • Credentials krypteres med settings.NEXTCLOUD_ENCRYPTION_KEY
  • Safety switches: NEXTCLOUD_READ_ONLY og NEXTCLOUD_DRY_RUN (default true)
  • Ingen credentials i UI eller logs
  • TLS‑only base URLs

13. Backend‑struktur (plan)

Placering: app/modules/nextcloud/

  • backend/router.py
  • backend/service.py
  • backend/models.py

Alle eksterne kald går via service‑laget, som:

  • loader instans fra DB
  • dekrypterer credentials
  • bruger global DB‑cache (5 min)
  • skriver audit‑log pr. kunde

14. Database‑model (plan)

nextcloud_instances

  • customer_id FK
  • base_url
  • auth_type
  • username
  • password_encrypted
  • is_enabled, disabled_at
  • created_at, updated_at, deleted_at

nextcloud_cache

  • cache_key (PK)
  • payload (JSONB)
  • expires_at
  • created_at

nextcloud_audit_log

  • customer_id, instance_id
  • event_type
  • request_meta, response_meta
  • actor_user_id
  • created_at

Partitionering: månedlig range på created_at. Retention er manuel via admin‑UI.

15. API‑endpoints (v1)

Instanser (admin)

  • GET /api/v1/nextcloud/instances
  • POST /api/v1/nextcloud/instances
  • PATCH /api/v1/nextcloud/instances/{id}
  • POST /api/v1/nextcloud/instances/{id}/disable
  • POST /api/v1/nextcloud/instances/{id}/enable
  • POST /api/v1/nextcloud/instances/{id}/rotate-credentials

Status + grupper

  • GET /api/v1/nextcloud/instances/{id}/status
  • GET /api/v1/nextcloud/instances/{id}/groups

Brugere (handlinger)

  • POST /api/v1/nextcloud/instances/{id}/users (opret)
  • POST /api/v1/nextcloud/instances/{id}/users/{uid}/reset-password
  • POST /api/v1/nextcloud/instances/{id}/users/{uid}/disable
  • POST /api/v1/nextcloud/instances/{id}/users/{uid}/resend-guide

Alle endpoints skal:

  • validere is_enabled = true
  • håndhæve kundeejerskab
  • skrive audit‑log
  • respektere READ_ONLY/DRY_RUN

16. UI‑krav (plan)

Nextcloud‑fanen i kundevisning skal vise:

  • Systemstatus
  • Nøgletal
  • Handlinger
  • Historik

Admin‑UI (Settings) skal give:

  • Liste over instanser
  • Enable/disable
  • Rotation af credentials
  • Retentionstyring af audit‑log pr. kunde

17. Migrations (plan)

  1. migrations/0XX_nextcloud_instances.sql
  2. migrations/0XX_nextcloud_cache.sql
  3. migrations/0XX_nextcloud_audit_log.sql (partitioneret)

18. Næste skridt

  1. Opret migrationsfiler
  2. Implementer kryptering helper
  3. Implementer service‑lag
  4. Implementer routere og schemas
  5. Implementer UI‑fanen + admin‑UI
  6. Implementer audit‑log viewer/export