{% extends "shared/frontend/base.html" %} {% block title %}Indstillinger - BMC Hub{% endblock %} {% block extra_css %}
{% endblock %} {% block content %}

## Indstillinger

System konfiguration og brugerstyring

##### Firma Oplysninger

##### vTiger CRM

##### e-conomic

##### Notifikation Indstillinger

##### Brugerstyring

Bruger | Email | Status | Sidst Login | Oprettet | Handlinger
--- | --- | --- | --- | --- | ---

##### Tag Administration

Administrer tags der bruges på tværs af hele systemet

0
Total Tags
0
Workflow
0
Status
0
Category
0
Priority
0
Billing
Alle Workflow Status Category Priority Billing
Vis inaktive

##### Data Synkronisering

Synkroniser firmaer og kontakter fra vTiger og e-conomic

Firmaer i Hub
-
Med vTiger ID
-
Med e-conomic ID
-

###### Sync fra vTiger

Hent firmaer og kontakter fra vTiger CRM. Matcher på CVR nummer eller firma navn.

Sidst synkroniseret: Aldrig

###### Sync fra e-conomic

Hent kundenumre fra e-conomic. Matcher på CVR nummer eller firma navn.

Sidst synkroniseret: Aldrig

###### Synkroniserings Log

Indlæser log...

##### AI System Prompts

Her kan du se de prompts der bruges til forskellige AI funktioner i systemet.

##### 📦 Modul System

Dynamisk feature loading - udvikl moduler isoleret fra core systemet

API ikke implementeret endnu

###### Quick Start

Opret nyt modul på 5 minutter:

    # 1. Opret modul
    python3 scripts/create_module.py invoice_scanner "Scan fakturaer"

    # 2. Kør migration
    docker-compose exec db psql -U bmc_hub -d bmc_hub \\
      -f app/modules/invoice_scanner/migrations/001_init.sql

    # 3. Enable modul (rediger module.json)
    "enabled": true

    # 4. Restart API
    docker-compose restart api

    # 5. Test
    curl http://localhost:8000/api/v1/invoice_scanner/health

###### Aktive Moduler

Indlæser moduler...

###### Safety First

- ✅ Moduler starter disabled
- ✅ READ_ONLY og DRY_RUN defaults
- ✅ Error isolation - crashes påvirker ikke core
- ✅ Graceful degradation

###### Database Isolering

- ✅ Table prefix pattern (fx `mymod_customers`)
- ✅ Separate migration tracking
- ✅ Helper functions til queries
- ✅ Core database uberørt

###### Modul Struktur

    app/modules/my_module/
    ├── module.json          # Metadata og konfiguration
    ├── README.md            # Dokumentation
    ├── backend/
    │   ├── __init__.py
    │   └── router.py        # FastAPI endpoints (API)
    ├── frontend/
    │   ├── __init__.py
    │   └── views.py         # HTML view routes
    ├── templates/
    │   └── index.html       # Jinja2 templates
    └── migrations/
        └── 001_init.sql     # Database migrations

###### Konfiguration

Modul-specifik konfiguration i `.env`:

    # Pattern: MODULES__{MODULE_NAME}__{KEY}
    MODULES__MY_MODULE__API_KEY=secret123
    MODULES__MY_MODULE__READ_ONLY=false
    MODULES__MY_MODULE__DRY_RUN=false

I kode:

    from app.core.config import get_module_config

    api_key = get_module_config("my_module", "API_KEY")
    read_only = get_module_config("my_module", "READ_ONLY", "true")

###### Eksempel: API Endpoint

    from fastapi import APIRouter, HTTPException
    from app.core.database import execute_query, execute_insert
    from app.core.config import get_module_config

    router = APIRouter()

    @router.post("/my_module/scan")
    async def scan_document(file_path: str):
        """Scan et dokument"""

        # Safety check
        read_only = get_module_config("my_module", "READ_ONLY", "true")
        if read_only == "true":
            return {"error": "READ_ONLY mode enabled"}

        # Process document
        result = process_file(file_path)

        # Gem i database (bemærk table prefix!)
        doc_id = execute_insert(
            "INSERT INTO mymod_documents (path, result) VALUES (%s, %s)",
            (file_path, result)
        )

        return {"success": True, "doc_id": doc_id}

###### Dokumentation

###### Quick Start

5 minutter guide til at komme i gang

`docs/MODULE_QUICKSTART.md`

###### Full Guide

Komplet reference (6000+ ord)

`docs/MODULE_SYSTEM.md`

###### Template

Working example modul

`app/modules/_template/`

###### ✅ DO

- Brug `create_module.py` CLI tool
- Brug table prefix konsistent
- Enable safety switches i development
- Test isoleret før enable i production
- Log med emoji prefix (🔄 ✅ ❌)
- Dokumenter API endpoints
- Version moduler semantisk

###### ❌ DON'T

- Skip table prefix
- Hardcode credentials
- Disable safety uden grund
- Tilgå andre modulers tabeller direkte
- Glem at køre migrations
- Commit `.env` files
- Enable direkte i production

##### System Indstillinger

##### Opret Ny Bruger

Brugernavn *
Email *
Fulde Navn
Adgangskode *
{% endblock %} {% block extra_js %}

##### Opret Tag

Navn *
Type *
Beskrivelse Forklaring af hvad tagget gør eller betyder
Farve *
Hex color code (fx #0f4c75)
Ikon (valgfrit) Bootstrap Icons navn (fx: bi-star, bi-flag, bi-check-circle)
Aktiv
{% endblock %}