{% extends "shared/frontend/base.html" %} {% block title %}Indstillinger - BMC Hub{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
System konfiguration og brugerstyring
Administrer kunde‑instanser, credentials og audit‑log
| Kunde | Base URL | Bruger | Status | Sidst opdateret | Handlinger |
|---|---|---|---|---|---|
Konfigurer URL-template til at starte opkald via telefon/PBX endpoint.
?token=... på established/terminated callback URLs.
{number} (påkrævet), {raw_number}, {extension}, {phone_ip}, {phone_username}, {phone_password}.
Generér de præcise URL-strenge til telefonernes Action URL felter (Established + Terminated).
$call_id, $remote, $local, $active_user). Ikke-dokumenterede placeholders som $callid/$caller/$callee bliver ofte ikke erstattet.
?token=... automatisk.
Administrer system- og kundespecifikke email skabeloner
| Navn | Emne | Kategori | Type | Sidst opdateret | Handlinger |
|---|---|---|---|---|---|
Opret og administrer brugere og deres grupper
| Bruger | Grupper | Status | Telefoni ext. | Telefoni IP | Telefoni bruger | Telefoni kode | Telefoni aktiv | Oprettet | Handlinger | |
|---|---|---|---|---|---|---|---|---|---|---|
Opret grupper og tildel rettigheder
| Gruppe | Rettigheder | Handlinger |
|---|---|---|
Administrer tags der bruges på tværs af hele systemet
Administrer faser i salgspipelinen
| Navn | Sortering | Standard % | Status | Handling |
|---|---|---|---|---|
Synkroniser firmaer og kontakter fra vTiger og e-conomic
Hent firmaer og kontakter fra vTiger CRM. Matcher på CVR nummer eller firma navn.
Hent kundenumre fra e-conomic. Matcher på CVR nummer eller firma navn.
Indlæser log...
Her kan du se de prompts der bruges til forskellige AI funktioner i systemet.
Dynamisk feature loading - udvikl moduler isoleret fra core systemet
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
Indlæser moduler...
mymod_customers)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
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")
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}
5 minutter guide til at komme i gang
docs/MODULE_QUICKSTART.md
Komplet reference (6000+ ord)
docs/MODULE_SYSTEM.md
Working example modul
app/modules/_template/
create_module.py CLI tool.env filesAdministrer tilladte typer for sager
Vælg hvilke moduler der vises som standard for hver sagstype. Moduler med indhold vises altid.