Skip to main content

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ó
RT1SistemaEls serveis s'han de poder instal·lar en servidors Windows Server o Windows 10 o superior
RT2Base de dadesEls programes funcionen amb SQL Server 2022 o superior
RT3CI/CDLes actualitzacions s'han d'automatitzar amb Azure DevOps
RT4Backend .NETAPI REST .NET i processos programats.
RT5DocumentacióLa documentació es crea amb Docusaurus, Star UML i Figma.
RT6Integració ERPEl programa i l'API s'ha de poder integrar amb GSERP.

2.2. Restriccions organitzatives​

RestriccióRerefons i motivació
RO1ProgramacióEquip de Girosystem.
RO2Control de codi font APIEl codi font s'ha d'ubicar al azure DevOps: https://girosystem@dev.azure.com/girosystem/GSERP/_git/GSERP-SyncAPI
RO3Control de codi font programa desktopEl codi font s'ha d'ubicar al azure DevOps:https://girosystem@dev.azure.com/girosystem/GSERP/_git/GSERP-Sincronizacion
R04Documentació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ó
C1Documentació d'arquitecturaEstructura basada en la plantilla arc42.
C2Codi frontendProjecte Visual Studio amb .net Framework i C#
C3Codi backendEl 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)
C4IdiomaEl 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.

Context negoci

3.2. Context tècnic​

Context tecnic

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).

  1. Tecnologies del Backend: S'ha triat per l'stack tecnologic .NET core 2.1 amb C#. GSERPSincronizacionAPI.
  • Visual Studio 2022
  • SQL server
  1. 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

Vista blocs general

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.

Vista blocs detallat

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.

Rebre dades

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.

Enviar dades

7. Vista de desplegament​

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

Arxius generateOutputDescripció
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

EntornDescripció
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 generateOutputDescripció
Logs errors del GSERP i el GSERP_TPVc:\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​

CategoriaQualitatDescripcióEscenari

10.2. Escenaris de qualitat​

IdEscenari

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​

RiscDescripcióMesures

11.3. Riscs tècnics​

RiscDescripcióMesures

11.3. Riscs de domini​

RiscDescripcióMesures

12. Glossari​

TermeDefinició
VenedorUsuari que utilitza el GSERP en mode TPV i fa vendes al públic
AdministratiuAdministratiu que s'encarrega de la part de la web de manteniment