# Setările, serviciile și tabelele bazei de date OpenPlatform

> Cheile de configurare pe care le citește OpenPlatform, ce fac serviciile sale în fundal și la ce folosește fiecare tabel al schemei op.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: ro
Content-SHA256: d80ace8a89ba49c01ecb6b5943033ef933b14c61886555683ab8a9f780b581ec
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Setările

OpenPlatform își păstrează configurația în tabelul `cl_config` și o încarcă în `CONF` din Total.js la pornire și la fiecare opt ore (`definitions/init.js`). Ecranul de configurare citește și salvează aceste chei (`plugins/setup/schemas/settings.js`):

| Cheie | Semnificație |
|---|---|
| `name`, `icon`, `color` | numele, sigla și culoarea platformei |
| `url` | adresa publică a platformei (fără `/` final). Schimbarea ei golește linkurile de notificare și sesiunile de aplicație deschise |
| `language` | limba implicită |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | serverul SMTP, opțiunile lui (JSON) și expeditorul; ecranul de configurare le poate testa |
| `$tms`, `secret_tms` | publică evenimentele prin TMS și secretul acelei conexiuni |
| `allow_token`, `token` | activează API-ul public `GET /users/` și token-ul lui |
| `newtab` | deschide fiecare aplicație într-o filă nouă |
| `sync`, `sync_token` | acceptă socket-ul `/sync/` al altor instanțe, cu token-ul lui |

Prima pornire (`database.sql`) generează în `cl_config` și valori pe care ecranul de configurare nu le editează: `id` al instalației, `secret` al autentificării, numele `cookie`, `salt` al parolelor, `saltchecksum` al sumelor de control și secretul conexiunii TMS. Creează cheile cu aceste valori implicite:

| Cheie | Implicit | Semnificație |
|---|---|---|
| `auth_cookie_expire` | `1 month` | cât trăiește cookie-ul de sesiune |
| `auth_expire` | `5 minutes` | cât timp este ținut în memorie utilizatorul autentificat înainte de a fi citit din nou |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | opțiunile cookie-ului de sesiune |
| `auth_strict` | `false` | sesiuni stricte |
| `app_session_expire` | `1 day` | cât durează o sesiune de aplicație |
| `cdn` | `https://cdn.componentator.com/` | CDN-ul interfeței |
| `language` | `eu` | limba implicită |
| `token`, `sync_token` | generat | token-ul API-ului utilizatorilor și al socket-ului de sincronizare (ambele funcții sunt dezactivate implicit) |

Cheia `servicetoken`, cu care endpoint-ul de încărcare a imaginilor își compară token-ul de interogare, **nu** este creată de script, iar ecranul de configurare nu o editează: există doar dacă o adaugi tu însuți în `cl_config`.

Scriptul creează și grupul **Admin** și primul utilizator (`info@totaljs.com`, administrator, confirmat) care îi aparține; vezi [instalarea](/en/openplatform/install-openplatform/).

## Serviciile din fundal

Total.js rulează un serviciu în fiecare minut. OpenPlatform îl folosește (`definitions/init.js`) pentru:

- golirea cache-ului din memorie al verificărilor (la fiecare 2 minute);
- salvarea statisticilor zilnice: utilizatori online, maximul și numărul pe dispozitiv (la fiecare 3 minute);
- reîncărcarea configurației din baza de date (la fiecare 8 ore);
- ștergerea sesiunilor de aplicație și de platformă expirate (la fiecare 12 ore);
- trimiterea rezumatelor prin e-mail ale notificărilor necitite (la fiecare 11 minute, când poșta este configurată).

## Baza de date

Totul se află în schema PostgreSQL `op`:

| Tabel | Ce conține |
|---|---|
| `cl_config` | configurația (cheie, valoare, tip) |
| `tbl_user` | utilizatorii: profil, hash-ul parolei, indicatori, contoare și permisiunile din cache |
| `tbl_group` | grupurile |
| `tbl_user_group` | ce utilizator aparține cărui grup |
| `tbl_session` | sesiunile utilizatorilor în portal (dispozitiv, adresă, expirare) |
| `tbl_app` | aplicațiile: adresă, secrete, indicatori și adrese permise |
| `tbl_app_permission` | permisiunile pe care le declară fiecare aplicație |
| `tbl_group_permission` | ce permisiuni (sau doar ce aplicații) acordă fiecare grup |
| `tbl_app_session` | sesiunile de lansare ale aplicațiilor și token-urile lor derivate |
| `tbl_user_app` | pe utilizator și aplicație: linkurile de notificare și dacă acceptă notificări |
| `tbl_notification` | notificările |
| `tbl_visitor` | statisticile zilnice ale vizitatorilor |
| `tbl_feedback` | feedback-ul pe care utilizatorii îl trimit din portal |

Fișierele cu dată `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` și `database-2024-10-30.sql` din depozit sunt modificările schemei în timp, iar `database.sql` este scriptul complet pe care îl rulează prima pornire. Fă copii de siguranță ale acestei scheme ca pentru orice altă bază de date PostgreSQL.
