> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnilinker.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Opis konfiguracji agenta

> Wszystkie ustawienia w pliku appsettings.json agenta ERP Sync, źródła, z których agent czyta konfigurację, oraz miejsca, w których przechowuje pliki lokalne.

Większość zachowania agenta ERP Sync ustawiasz w Omnilinkerze, w konfiguracji synchronizacji połączenia, a agent ją
pobiera. Zobacz [Konfiguracja synchronizacji](/pl/erp/sync-configuration). Ustawienia lokalne opisane na tej stronie
dotyczą komputera, na którym działa agent. Rzadko trzeba je zmieniać.

## Skąd agent bierze konfigurację

| Źródło                                           | Co zawiera                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `credentials.dat`                                | Klucz API, adres API, połączenie, identyfikator organizacji, ustawienia bazy danych ERP i identyfikator firmy. Zapisywany przez [kreator konfiguracji](/pl/erp/setup-wizard) i okno **Settings...** aplikacji w zasobniku. To jedyne miejsce, z którego agent czyta klucz API, połączenie i ustawienia bazy danych. |
| Omnilinker (chmura)                              | Konfiguracja synchronizacji połączenia: co synchronizować, interwały, rozmiary paczek, mapowania pól. Agent pobiera ją co 5 minut i przechowuje kopię w `config-cache.json` na wypadek, gdyby Omnilinker był nieosiągalny.                                                                                          |
| `appsettings.json`, sekcje `ErpSync` i `Updates` | Lokalne ustawienia na poziomie komputera, opisane poniżej.                                                                                                                                                                                                                                                          |
| Zmienne środowiskowe                             | Nadpisują wartości z `appsettings.json`.                                                                                                                                                                                                                                                                            |

W przypadku ustawień z `appsettings.json` kolejność pierwszeństwa jest następująca (od najważniejszego):

1. Argumenty wiersza poleceń.
2. Zmienne środowiskowe o nazwach `<Section>__<Setting>`, na przykład `ErpSync__PollingIntervalSeconds` albo
   `Updates__Channel`.
3. `appsettings.json` w folderze instalacyjnym.
4. Wbudowane wartości domyślne podane poniżej.

Jeśli ustawienie istnieje także w konfiguracji w chmurze lub w `credentials.dat`, wygrywa tamta wartość. Przy każdym
ustawieniu poniżej jest to zaznaczone.

<Note>
  `ApiKey` i `ConnectionId` w `appsettings.json` i w zmiennych środowiskowych są ignorowane. Agent bierze klucz API
  i połączenie wyłącznie z `credentials.dat`. Ustaw je w [kreatorze konfiguracji](/pl/erp/setup-wizard).
</Note>

### Zmień ustawienie

Ustaw wartość jako zmienną środowiskową komputera, w PowerShell uruchomionym jako administrator, a potem uruchom
ponownie usługę. Usługa czyta te ustawienia tylko przy starcie:

```powershell theme={null}
[Environment]::SetEnvironmentVariable("ErpSync__PollingIntervalSeconds", "120", "Machine")
Restart-Service OmnilinkerErpSyncService
```

Możesz też jako administrator zmienić `appsettings.json` w folderze instalacyjnym, domyślnie
`C:\Program Files\Omnilinker\ErpSync\current`, i uruchomić ponownie usługę.

<Warning>
  Każda aktualizacja zastępuje plik `appsettings.json`, a agent [aktualizuje się sam](/pl/erp/install-agent#zaktualizuj-agenta)
  w nocy. Zmiana wprowadzona w pliku przepada wtedy bez ostrzeżenia. Aktualizacje nie wpływają na zmienne
  środowiskowe, więc lepiej z nich korzystać.
</Warning>

Dostarczany plik wygląda tak (bez sekcji `Logging`):

```json appsettings.json theme={null}
{
  "ErpSync": {
    "ApiUrl": "https://omnilinker.pl",
    "LocalApiPort": 5555,
    "PollingIntervalSeconds": 60,
    "OutboxBatchSize": 100,
    "OutboxPublishIntervalSeconds": 5,
    "MaxRetryAttempts": 5,
    "AutoUpdateEnabled": true,
    "ConnectionId": null,
    "ApiKey": null,
    "PluginsPath": "plugins"
  },
  "Updates": {
    "FeedUrl": "https://releases.omnilinker.com/erpsync",
    "Channel": "stable"
  }
}
```

## Ustawienia

„Domyślnie” to wartość, której agent używa, gdy ustawienia brakuje w `appsettings.json`.

### Połączenie z chmurą

| Ustawienie     | Typ    | Domyślnie               | Znaczenie                                                                                                                                                                                                       |
| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ApiUrl`       | string | `https://omnilinker.pl` | Adres Omnilinkera. Adres API zapisany przez kreator konfiguracji w `credentials.dat` ma pierwszeństwo, więc ta wartość jest używana tylko przed uruchomieniem kreatora. Adres zmieniaj w oknie **Settings...**. |
| `ApiKey`       | string | `null`                  | Ignorowane. Zobacz uwagę powyżej.                                                                                                                                                                               |
| `ConnectionId` | GUID   | `null`                  | Ignorowane. Zobacz uwagę powyżej.                                                                                                                                                                               |

### Lokalne API

| Ustawienie     | Typ     | Domyślnie | Znaczenie                                                                        |
| -------------- | ------- | --------- | -------------------------------------------------------------------------------- |
| `LocalApiPort` | integer | `5555`    | Port [lokalnego API](/pl/erp/local-api) agenta. Nasłuchuje tylko na `localhost`. |

<Warning>
  Pozostaw `LocalApiPort` na wartości `5555`. Aplikacja webowa Omnilinkera i zapasowe połączenie aplikacji
  w zasobniku oczekują lokalnego API na porcie 5555 i nie czytają tego ustawienia.
</Warning>

### Wykrywanie zmian

| Ustawienie                     | Typ     | Domyślnie | Znaczenie                                                                                                                                                 |
| ------------------------------ | ------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PollingIntervalSeconds`       | integer | `60`      | Jak często działa cykl odpytywania, w sekundach. W trybie skanowania skrótów określa, jak szybko agent odbiera żądanie **Sync Now**.                      |
| `HashCheckIntervalSeconds`     | integer | `900`     | Liczba sekund między weryfikacjami hash, używana tylko do czasu wczytania konfiguracji z chmury. Potem obowiązuje interwał weryfikacji hash z połączenia. |
| `HashCheckInitialDelaySeconds` | integer | `120`     | Liczba sekund oczekiwania po starcie usługi przed pierwszą weryfikacją hash.                                                                              |
| `HashCheckFetchBatchSize`      | integer | `100`     | Ile zmienionych rekordów weryfikacja hash czyta z ERP naraz.                                                                                              |

### Wysyłanie do Omnilinkera

Agent umieszcza każdą zmianę w lokalnej kolejce wychodzącej (outbox) i wysyła ją do Omnilinkera w paczkach.

| Ustawienie                     | Typ     | Domyślnie | Znaczenie                                                                                                                                                                    |
| ------------------------------ | ------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OutboxBatchSize`              | integer | `500`     | Maksymalna liczba zdarzeń w paczce. Dostarczany `appsettings.json` ustawia `100`. Jeśli konfiguracja synchronizacji połączenia określa rozmiar paczki, ma ona pierwszeństwo. |
| `CloudApiBatchHardLimit`       | integer | `1000`    | Górny limit zdarzeń w jednym żądaniu, niezależnie od pozostałych ustawień. Omnilinker przyjmuje najwyżej 1000 zdarzeń na żądanie, więc nie zwiększaj tej wartości.           |
| `OutboxDrainThreshold`         | integer | `1000`    | Gdy czeka więcej zdarzeń niż ta liczba, agent wysyła paczki jedna po drugiej, bez przerwy między nimi, aż zaległości znikną.                                                 |
| `OutboxPublishIntervalSeconds` | integer | `5`       | Liczba sekund między cyklami wysyłania, używana tylko do czasu wczytania konfiguracji z chmury. Potem obowiązuje wartość z połączenia.                                       |
| `MaxRetryAttempts`             | integer | `5`       | Ile razy agent próbuje wysłać zdarzenie, zanim oznaczy je jako nieudane.                                                                                                     |

### Wtyczki

| Ustawienie    | Typ    | Domyślnie | Znaczenie                                                                                                                     |
| ------------- | ------ | --------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `PluginsPath` | string | `plugins` | Zarezerwowane. Na razie nie ma żadnego efektu: agent nie wczytuje dostawców z folderu wtyczek. Dostawca Wapro jest wbudowany. |

### Aktualizacje

Jak agent [aktualizuje się sam](/pl/erp/install-agent#zaktualizuj-agenta). `AutoUpdateEnabled` jest w sekcji
`ErpSync`. Pozostałe są w sekcji `Updates`, więc ich zmienne środowiskowe zaczynają się od `Updates__`.

| Ustawienie          | Typ             | Domyślnie  | Znaczenie                                                                                                                                                 |
| ------------------- | --------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AutoUpdateEnabled` | boolean         | `true`     | `false` wyłącza automatyczne aktualizacje. Wtedy aktualizujesz agenta ręcznie.                                                                            |
| `FeedUrl`           | string          | brak       | Gdzie agent szuka nowych wersji. Dostarczany plik ustawia `https://releases.omnilinker.com/erpsync`. Pusta wartość wyłącza aktualizacje. Nie zmieniaj go. |
| `Channel`           | string          | brak       | Które wydania pobiera agent. Dostarczany plik ustawia `stable`.                                                                                           |
| `CheckEvery`        | przedział czasu | `04:00:00` | Jak często agent sprawdza, czy jest nowa wersja.                                                                                                          |
| `FirstCheckAfter`   | przedział czasu | `00:05:00` | Po jakim czasie od startu usługi agent sprawdza to pierwszy raz.                                                                                          |
| `ApplyFrom`         | godzina         | `01:00`    | Początek nocnego okna, w którym pobrana wersja jest instalowana, w czasie lokalnym komputera.                                                             |
| `ApplyUntil`        | godzina         | `05:00`    | Koniec tego okna. Okno może przechodzić przez północ, na przykład od `22:00` do `04:00`.                                                                  |

Wersja jest instalowana tylko w tym oknie i tylko wtedy, gdy nie trwa żadna synchronizacja. Jeśli instalacja się
nie powiedzie, agent próbuje ponownie następnej nocy.

### Wartości stałe

Agent ma te ustawienia wewnętrznie, ale nie czyta ich z `appsettings.json` ani ze zmiennych środowiskowych. Zawsze
mają podane wartości. Wymieniamy je, żeby ułatwić interpretację logów agenta.

| Ustawienie                             | Wartość  | Znaczenie                                                                                                                                                               |
| -------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OutboxPublisherStartupDelaySeconds`   | `10`     | Liczba sekund od startu do pierwszego cyklu wysyłania.                                                                                                                  |
| `PhaseAdvanceFailedGraceMinutes`       | `30`     | Przy śledzeniu zmian WFM\_INT: jak długo faza synchronizacji czeka na zdarzenia, które nie powiodły się mimo wszystkich ponowień, zanim przejdzie dalej z ostrzeżeniem. |
| `ChangeConsumptionIntervalSeconds`     | `60`     | Przy śledzeniu zmian WFM\_INT: liczba sekund między cyklami odczytu zmian z ERP.                                                                                        |
| `ChangeConsumptionStartupDelaySeconds` | `5`      | Liczba sekund od startu do pierwszego cyklu WFM\_INT.                                                                                                                   |
| `ChangeConsumptionCycleBudgetSeconds`  | `45`     | Limit czasu na strumień zmian w jednym cyklu WFM\_INT, aby jeden obciążony strumień nie blokował pozostałych.                                                           |
| `HeartbeatIntervalSeconds`             | `60`     | Liczba sekund między sygnałami kontrolnymi (heartbeat) wysyłanymi do Omnilinkera.                                                                                       |
| `CapabilitiesRefreshIntervalSeconds`   | `600`    | Jak często agent ponownie sprawdza, co obsługuje ERP, w sekundach.                                                                                                      |
| `ReferenceSyncIntervalSeconds`         | `86400`  | Jak często dane słownikowe ERP są ponownie przesyłane: raz dziennie.                                                                                                    |
| `ReferenceChunkSize`                   | `500`    | Liczba elementów słownikowych w jednym przesłaniu.                                                                                                                      |
| `BundleCompositionSyncIntervalSeconds` | `21600`  | Jak często składy zestawów są odczytywane w całości: co 6 godzin.                                                                                                       |
| `ReconciliationIntervalSeconds`        | `604800` | Przy śledzeniu zmian WFM\_INT: jak często działa pełne uzgodnienie danych: co 7 dni.                                                                                    |

## Logowanie

Usługa zapisuje jeden plik logu dziennie w folderze `%ProgramData%\Omnilinker\ErpSync\logs` (zobacz
[Pliki lokalne](#pliki-lokalne)) i przechowuje ostatnie 30 plików. Każdy wiersz zawiera znacznik czasu, poziom,
komponent i komunikat.

Instalator, aktualizacje i odinstalowanie dopisują do pliku `setup.log` w tym samym folderze: `done` albo po jednym
wierszu dla każdego kroku, którego nie udało się wykonać.

Poziom logowania jest stały: `Information` dla agenta i `Warning` dla komponentów frameworka. Sekcja `Logging`
w `appsettings.json` nie ma wpływu na pliki logów.

## Pliki lokalne

Agent korzysta z trzech folderów na komputerze.

**Folder instalacyjny**: `C:\Program Files\Omnilinker\ErpSync\current`, jeśli instalujesz tak, jak opisuje
[Instalacja agenta](/pl/erp/install-agent). Instalator zastępuje jego zawartość przy każdej aktualizacji.

| Plik                                           | Zawartość                                                                                               |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `Omnilinker.ErpSync.Service.exe`               | Usługa Windows.                                                                                         |
| `tray\Omnilinker.ErpSync.Tray.exe`             | Aplikacja w zasobniku, w osobnym podfolderze.                                                           |
| `appsettings.json`                             | Ustawienia opisane na tej stronie. Zastępowany przy każdej aktualizacji.                                |
| `install-service.ps1`, `uninstall-service.ps1` | Tylko dla [kopii przenośnej](/pl/erp/install-agent#kopia-przenośna-zip). Instalator ich nie potrzebuje. |

**Folder danych**: `%ProgramData%\Omnilinker\ErpSync`, zwykle `C:\ProgramData\Omnilinker\ErpSync`. Usługa i każdy,
kto korzysta z aplikacji w zasobniku, widzą ten sam folder. Instalator pozwala go zmieniać tylko kontu SYSTEM
i administratorom. Pozostali użytkownicy mogą go odczytywać.

| Plik                          | Zawartość                                                                                                                                                                                                                                                                |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `credentials.dat`             | Klucz API, adres API, połączenie, identyfikator organizacji, ustawienia bazy danych ERP i identyfikator firmy. Zaszyfrowany za pomocą Windows DPAPI w zakresie komputera: można go odszyfrować tylko na tym komputerze. Otworzyć go mogą tylko SYSTEM i administratorzy. |
| `logs\erpsync-<yyyyMMdd>.log` | Pliki logów usługi, jeden dziennie, przechowywanych jest 30. Na przykład `erpsync-20260927.log`.                                                                                                                                                                         |
| `logs\setup.log`              | Czego nie udało się zrobić instalatorowi, aktualizacji i odinstalowaniu.                                                                                                                                                                                                 |

**Folder profilu usługi**: `C:\Windows\System32\config\systemprofile\AppData\Local\Omnilinker\ErpSync`, folder
lokalnych danych aplikacji konta Lokalny system, na którym działa usługa.

| Plik                | Zawartość                                                                                                                                                                                                                     |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `erpsync.db`        | Lokalna baza danych SQLite: kolejka wychodząca ze zdarzeniami czekającymi na wysłanie, lokalny log synchronizacji i stan wykrywania zmian agenta. Należą do niej także leżące obok pliki `erpsync.db-wal` i `erpsync.db-shm`. |
| `config-cache.json` | Ostatnia konfiguracja z chmury, jaką otrzymał agent. Używana, gdy Omnilinker jest nieosiągalny przy starcie.                                                                                                                  |

<Warning>
  Nie usuwaj `erpsync.db`, dopóki agent jest zainstalowany. Zdarzenia, które nie zostały jeszcze wysłane, przepadną,
  a agent będzie musiał odbudować stan wykrywania zmian.
</Warning>
