Přeskočit obsah

Debugging

TI4M365 podporuje lokální debugování, které umožňuje spouštět API lokálně, načítat konfiguraci z lokálních souborů a zpracovávat workflow události bez závislosti na cloudových službách.

Lokální API

SPFx frontend lze přesměrovat na lokálně běžící API přidáním parametru ?localApi=true do URL stránky SharePoint. Všechny API volání ze SPFx komponent se poté směrují na http://localhost:7183/api.

Spuštění lokálního API

  1. Spusťte Azure Functions API lokálně:
    cd TI4M365.API
    func start
    
  2. Otevřete SharePoint stránku s parametrem localApi=true:
    https://tenant.sharepoint.com/sites/mysite/Lists/MyList/DispForm.aspx?ID=1&localApi=true
    

Vlastní URL API

Parametr localApiUrl umožňuje přesměrovat na jiný port nebo server:

https://tenant.sharepoint.com/sites/mysite/Lists/MyList/DispForm.aspx?ID=1&localApi=true&localApiUrl=http://localhost:8080/api

Poznámka: Parametr localApiUrl má efekt pouze pokud je současně nastaven localApi=true.

Lokální data overlay

Systém lokálního data overlay nahrazuje čtení z Cosmos DB čtením z lokálních JSON souborů. Zápisové operace jsou vždy předávány do Cosmos DB.

Konfigurace

V souboru TI4M365.API/local.settings.json:

{
  "Values": {
    "LocalData__Enabled": "true",
    "LocalData__BasePath": "../../../local-data",
    "LocalData__Dataset": "default",
    "LocalData__OverlayContainers__0": "Templates",
    "LocalData__OverlayContainers__1": "Wf_Definitions"
  }
}
Vlastnost Popis Výchozí
Enabled Zapnutí overlay. Automaticky se zapne při nastavení BasePath. Vypnuto
BasePath Cesta ke kořenové složce s lokálními daty. local-data
Dataset Název aktivní podsložky (datasetu) pod BasePath. default
OverlayContainers Názvy kontejnerů servírovaných z lokálních souborů. Ostatní kontejnery se čtou z Cosmos DB. Templates

Struktura složek

local-data/
├── default/                      # Výchozí dataset
│   ├── templates/                # Šablony (Print, Text, Task, Email)
│   ├── wf_definitions/           # Workflow definice
│   └── form_config_overrides/    # Přepisovací konfigurace formulářů
├── v1/                           # Vlastní dataset
│   ├── templates/
│   └── form_config_overrides/
└── fixtures/                     # Testovací dataset
    └── templates/

Přepínání mezi datasety se provádí změnou hodnoty LocalData:Dataset.

Form config override

Soubory v form_config_overrides/ se pojmenovávají podle názvu content type (např. Faktura.json). Obsahují parciální JSON, který se sloučí s konfigurací formuláře ze SharePoint.

Lokální fronta workflow událostí

Lokální fronta nahrazuje Azure Service Bus in-memory frontou a zpracovává workflow události přímo v procesu API.

Konfigurace

{
  "Values": {
    "LocalQueue__Enabled": "true"
  }
}
Vlastnost Popis Výchozí
Enabled Zapnutí in-memory fronty a in-process workeru. Vypnuto
ChannelCapacity Maximální počet událostí ve frontě. 1000

Ruční spouštění událostí

Endpoint POST /api/dev/trigger-event umožňuje ručně odeslat workflow událost:

{
  "eventType": "ItemAdded",
  "itemId": "22",
  "listId": "a2d6f181-477d-4818-8122-07dc0daffbbf",
  "webUrl": "https://tenant.sharepoint.com/sites/mysite",
  "tenantId": "6e2d1a6e-9bc4-4306-bc0b-e9bb5f6e9b14"
}

Typy událostí: ItemAdded, ItemUpdated, ItemDeleted.

Poznámka: Endpoint je dostupný pouze v Development režimu.

E-maily

V lokálním režimu se e-maily nezasílají — pouze se zaznamenávají do logu. Workflow s notifikacemi tak lze testovat bez skutečného odesílání.

Srovnání produkce a lokálního režimu

Aspekt Produkce Lokální režim
Fronta událostí Azure Service Bus In-memory fronta
Worker proces Samostatný TI4M365.Worker BackgroundService v API procesu
Šablony Cosmos DB Lokální JSON soubory s Cosmos DB fallback
E-maily Skutečné odesílání Pouze logování
SharePoint webhooky Automatické Ruční trigger přes /dev/trigger-event

Časté problémy

SPFx nevolá lokální API

  • Ověřte přítomnost ?localApi=true v URL (zkontrolujte window.ENV.API_BASE_URL v konzoli prohlížeče).
  • Ověřte, že API běží na portu 7183 (func start v TI4M365.API/).
  • Zkontrolujte CORS: v local.settings.jsonHost.CORS musí být "*".

Lokální data se nenačítají

  • Zkontrolujte výstup konzole pro zprávu Local data overlay ENABLED.
  • Ověřte, že LocalData:BasePath ukazuje na správnou cestu.
  • Ověřte existenci podsložky datasetu (např. local-data/default/).

Šablony se stále načítají z Cosmos DB

  • Ověřte, že Templates je v seznamu OverlayContainers.
  • Zkontrolujte, že JSON soubor šablony má isActive: true.

Workflow události se nezpracovávají

  • Ověřte LocalQueue:Enabled na true v local.settings.json.
  • Zkontrolujte konzoli pro zprávu LocalQueueWorkerService started.

Endpoint /dev/trigger-event vrací 404

  • Ověřte, že API běží v Development režimu (ASPNETCORE_ENVIRONMENT=Development).