Documentació d'arquitectura
1. Introducció i objectius
El sistema serveix gestionar la sincronització de dades entre un GSERP central amb altres GSERP configurats en mode TPV de botiga i que treballen en mode OFFLINE del servidor central.
Objectius principals:
- Fer més eficient la sincronització.
- Separar el codi de sincronitzar del codi del GSERP.
- Donar als clients l'opció de poder treballar OFFLine i poder sincronitzar les dades quan l'usuari vulgui.
2. Restriccions de l'arquitectura
2.1. Restriccions tècniques
| Restricció | Rerefons i motivació | |
|---|---|---|
| RT1 | Sistema | Els serveis s'han de poder instal·lar en servidors Windows Server o Windows 10 o superior |
| RT2 | Base de dades | Els programes funcionen amb SQL Server 2022 o superior |
| RT3 | CI/CD | Les actualitzacions s'han d'automatitzar amb Azure DevOps |
| RT4 | Backend .NET | API REST .NET i processos programats. |
| RT5 | Documentació | La documentació es crea amb Docusaurus, Star UML i Figma. |
| RT6 | Integració ERP | El programa i l'API s'ha de poder integrar amb GSERP. |
2.2. Restriccions organitzatives
| Restricció | Rerefons i motivació | |
|---|---|---|
| RO1 | Programació | Equip de Girosystem. |
| RO2 | Control de codi font API | El codi font s'ha d'ubicar al azure DevOps: https://girosystem@dev.azure.com/girosystem/GSERP/_git/GSERP-SyncAPI |
| RO3 | Control de codi font programa desktop | El codi font s'ha d'ubicar al azure DevOps:https://girosystem@dev.azure.com/girosystem/GSERP/_git/GSERP-Sincronizacion |
| R04 | Documentació | Ha d'haver un 'site' Docusarus per la documentació del projecte http://192.168.20.13:8106/docs/documentation/Arquitectura |
2.3. Convencions
| Restricció | Rerefons i motivació | |
|---|---|---|
| C1 | Documentació d'arquitectura | Estructura basada en la plantilla arc42. |
| C2 | Codi frontend | Projecte Visual Studio amb .net Framework i C# |
| C3 | Codi backend | El projecte fa servir la guia d'estil de C# de Google (https://google.github.io/styleguide/csharp-style.html) i Microsoft (https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/identifier-names, https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions) |
| C4 | Idioma | El codi està en castellà, la documentació en català (excepte els atributs i paràmetres). |
3. Context i abast
Aquest capítol descriu l'entorn i context de l'aplicació: qui utilitza el sistema i de quins altres sistemes en depén.
3.1. Context de negoci
Aquesta sincronització es fa servir per clients que tenen botigues fora de la xarxa local a on estar el servidor o volen que la botiga pugui treballar sense dependències del servidor o OFFLine.

3.2. Context tècnic

L'arquitectura segueix un model client-servidor. El frontend (Sincronització GSERP) es comunica amb el backend amb una API REST HTTP (API de Sincronització).
Backend
El backend consisteix en una API feta amb Visual Studio C#
Frontend
El frontend consisteix en una aplicació de Windows Forms feta amb Visual Studio C#.
4. Estrategia de solucions
Aquí es descriu les decisions d'arquitectura en quant als requeriments de qualitat mes importants, mes els enllaços a la descripció detallada en la secció 8 (conceptes transversals).
- Tecnologies del Backend: S'ha triat per l'stack tecnologic .NET core 2.1 amb C#. GSERPSincronizacionAPI.
- Visual Studio 2022
- SQL server
- Tecnologies del Frontend: El frontend estar fet amb .NET Framework 4.7.2 amb C#. GSERPSincronizacion.
- Visual Studio 2019
- SQL server
5. Vista de blocs
5.1. Nivell 1 - Vista general
- El sistema te aplicacions pels administratius i pels venedors de les botigues

5.2 Nivell 2 - Vista més detallada
- API de sincronització. GSERPSincronizacionAPI
- GSERP Sincronització. GSERPSincronizacion
- GSERP. GSERP en mode de treball normal.
- GSERP_TPV. GSERP en mode de treball només TPV.

6. Vista d'execució
6.1. Modificar o crear noves dades (Articles, preus etc...), servidor => botiga
- Modificar dades o crear noves dades: Un usuari a la central entra el GSERP i modifica dades (Articles, preus, etc.), aquestes s'executa els Triggers en les taules corresponents i creen un missatge de modificació del servidor al client. Després quan un venedor de botiga fa una petició per rebre dades el GSERP Sincronització es connecta a l'API del servidor i aquest li retorna tots els canvis pendents a la botiga. En acabat aquests modifiquen o creen les dades en la botiga.

6.2 Enviar les vendes de les botigues, botiga => servidor.
- Enviar les vendes d'una botiga al servidor: Un venedor ha fet una o vàries vendes i les vol enviar al servidor central. En fer una venda es crea un registre de venda que s'ha de sincronitzar al servidor a través d'un Trigger. Després el venedor executa el programa per enviar les vendes de la botiga al servidor. El GSERP Sincronització es connecta amb l'API del servidor i li envia les vendes pendents de sincronitzar.

7. Vista de desplegament
En el servidor de preproducció de GiroSystem tenim un desplegament d'exemple.

| Arxius generateOutput | Descripció |
|---|---|
| Arxius de regularització de la sincronitzacio del GSERP_Sincronització | C:\girosystem\Regularitzacio\BotigaSATCaixa2 log a on es guarden les dades sincronitzades |
7.1. Entorns
Taula descriptiva dels entorns que tenim i per que serveixen
| Entorn | Descripció |
|---|---|
| Preproducció | 192.168.20.13 |
7.4. Actualització
En ser un entorn de preproducció no hi ha un desplegament automàtic quan es fan canvis. S'ha d'actualitzar a mà.
8. Conceptes transversals (Cross-cutting)
8.1. Persistència
Les dades es guarden a la base de dades SQL Server versió 2022..
8.2. Interfície d'usuari
- La interfície de l'usuari administratiu de la central és de Window Forms amb .net Framework.
- La interfície de l'usuari venedor tant a l'hora de fer les vendes com per executar la sincronització és amb Windows Forms amb .net Framework.
8.3. Transaccions
- Tant el GSERP com el GSERP_TPV utilitzen les transaccions de SQL i les transaccions distribuïdes de Windows.
- Tant el GSERPSincronizacion i el GSERPSincronizacionAPI no utilitzen transaccions.
8.4. Seguretat
- Per entrar el GSERP es necessita un usuari GSERP loginat al SQL Server i que l'usuari posi el Password amb una pantalla de login inicial.
- Per entrar el GSERP_TPV s'ha de configurar el ConfiguracionERP.xml perquè es posi usuari i el password per defecte i entri sense pantalla de login.
- Pel GSERPSincronizacion no es necessiten credencials.
- Per l'API s'ha de cridar el endPoint authenticate i aquest et retorna un token que utilitzes per autenticar.
8.5. Gestió d'errors
- El backend retorna els codis d'error estàndard d'HTTP. En concret el grup d'errors de client (400-499) i el d'errors del servidor (500-599)
8.6. Logging
| Arxius generateOutput | Descripció |
|---|---|
| Logs errors del GSERP i el GSERP_TPV | c:\girosystem log d'errors del GSERP i del GSERP_TPV |
| Log4net del API Sincronització | C:\Girosystem\sincronizacion\ log a on es guarden els errors i informació del log4net |
| Logs de la API Sincronització | C:\girosystem\LOG_SINCRONIZACION_TPV log a on es guarden les dades sincronitzades |
| Log4net del GSERP_Sincronització | C:\Girosystem\LogSincronizacion\BotigaSATCaixa2 log a on es guarden els errors i informació del log4net |
8.7. Configuracions
Per veure les contrasenyes s'ha d'anar al Passbolt.
8.7.1 Configuració
8.7.1.1 GSERP
- ConfiguracionERP.xml. Configuració de la connexió a la base de dades i empresa.
8.7.1.2 GSERP_TPV
- ConfiguracionERP.xml. Configuració de la connexió a la base de dades i empresa.
- ConfiguracionTPVVentas.xml. Configuracions de la botiga.
8.7.1.3 GSERPSincronizacion
- GSERPSincronizacion.PL.WinForms.exe.config. Configuració de la connexió al a base de dades, a l'API i directoris d'arxius.
8.7.1.4 GSERPSincronizacionAPI
- web.config. Configuracions de l'API.
- appsettings.json. Configuració de la connexió al a base de dades i dels arxius resultants.
8.9. Testing
No es fa testing en aquestes aplicacions.
8.10. Reporting
No es fan reports.
8.11. Enviament d'emails
No es fan correus electronics.
9.4. Codificació de versions
Descriure nomenclatura de les versions de les apps.
10. Requeriments de qualitat
10.1. Arbre de qualitat
| Categoria | Qualitat | Descripció | Escenari |
|---|
10.2. Escenaris de qualitat
| Id | Escenari |
|---|
11. Riscs i deute tècnic
11.1. Deute tècnic
El projecte es construeix de zero però ha d'estar configurat per enllaçar-se amb el GSERP i el GSERPSincronizacionAPI.
11.2. Riscs de seguretat
| Risc | Descripció | Mesures |
|---|
11.3. Riscs tècnics
| Risc | Descripció | Mesures |
|---|
11.3. Riscs de domini
| Risc | Descripció | Mesures |
|---|
12. Glossari
| Terme | Definició |
|---|---|
| Venedor | Usuari que utilitza el GSERP en mode TPV i fa vendes al públic |
| Administratiu | Administratiu que s'encarrega de la part de la web de manteniment |