{% 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
Nextcloud

Administrer kunde‑instanser, credentials og audit‑log

Kunde Base URL Bruger Status Sidst opdateret Handlinger
Audit‑log retention
Manuel sletning pr. kunde (tidsbaseret)
Notifikation Indstillinger
Email Skabeloner

Administrer system- og kundespecifikke email skabeloner

Navn Emne Kategori Type Sidst opdateret Handlinger
Brugere

Opret og administrer brugere og deres grupper

Bruger Email Grupper Status Oprettet Handlinger
Grupper

Opret grupper og tildel rettigheder

Gruppe Rettigheder 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
Pipeline Stages

Administrer faser i salgspipelinen

Navn Sortering Standard % Status Handling
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
Sags-typer

Administrer tilladte typer for sager

Indlæser...
{% endblock %} {% block extra_js %} {% endblock %}