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