ok
This commit is contained in:
@@ -4,7 +4,7 @@ Test harness mínimo para probar el adapter `kumare-adapter-spring-visma-time` v
|
||||
|
||||
## Qué hace
|
||||
|
||||
Expone 6 endpoints que son passthroughs directos al API de VismaTime (GeoVictoria), usados
|
||||
Expone 7 endpoints que son passthroughs directos al API de VismaTime (GeoVictoria), usados
|
||||
para ejercitar el adapter durante desarrollo:
|
||||
|
||||
| Método | Path | Acción |
|
||||
@@ -18,6 +18,7 @@ para ejercitar el adapter durante desarrollo:
|
||||
| POST | `/time/api/clientele/clients/attendance/book` | Libro de asistencia (rango de fechas + usuarios) |
|
||||
|
||||
La colección Postman está en [`postman/visma-time.postman_collection.json`](postman/visma-time.postman_collection.json).
|
||||
Una traza de ejemplo (credenciales/tokens redactados) está en [`traces/visma-endpoints-trace.log`](traces/visma-endpoints-trace.log).
|
||||
|
||||
## Correr
|
||||
|
||||
@@ -25,8 +26,10 @@ La colección Postman está en [`postman/visma-time.postman_collection.json`](po
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
Clase main: `io.kumare.iqr.TimeApplication`.
|
||||
|
||||
No requiere Postgres ni ninguna otra base de datos — el autoconfig de JPA/DataSource está
|
||||
excluido explícitamente en `IqrApplication` porque `kumare-base-server-spring` trae
|
||||
excluido explícitamente en `TimeApplication` porque `kumare-base-server-spring` trae
|
||||
`spring-boot-starter-data-jpa` transitivamente aunque no haya entidades locales.
|
||||
|
||||
Credenciales de Visma (`visma.server`, `visma.user`, `visma.password`) en
|
||||
@@ -42,7 +45,18 @@ Con `logging.level.io.kumare=DEBUG` (ya configurado) se ven en el log:
|
||||
|
||||
## Estructura
|
||||
|
||||
Este proyecto se clonó de otra app IQR y se recortó: solo queda `io.kumare.iqr.mod.clientele.action.client`
|
||||
(las acciones Visma) más el framework base (`io.kumare.iqr.app.*`). Los módulos de negocio
|
||||
originales (authentication, biz, loyalty, pocket, taxonomy) y el CRUD local de Client/ClientRelation
|
||||
se eliminaron por no tener relación con probar el adapter.
|
||||
Este proyecto se clonó de otra app IQR y se recortó a lo mínimo: solo queda el módulo `visma`
|
||||
(`io.kumare.iqr.mod.visma`, antes `clientele`) con las acciones y endpoints de VismaTime, más
|
||||
el framework base (`io.kumare.iqr.app.*`). Los módulos de negocio originales (authentication,
|
||||
biz, loyalty, pocket, taxonomy) y el CRUD local de Client/ClientRelation se eliminaron por no
|
||||
tener relación con probar el adapter.
|
||||
|
||||
```
|
||||
io.kumare.iqr.mod.visma/
|
||||
VismaConstants.java, VismaModule.java, VismaController.java
|
||||
action/ — GvTime, PunchType, y las 7 acciones Visma*Action/Argument
|
||||
endpoint/rest/ — AbstractVismaRest, VismaRest
|
||||
```
|
||||
|
||||
Nota: los paths REST (`/clientele/clients/...`) se dejaron igual — solo se renombraron las
|
||||
clases y el paquete Java — para no romper la colección Postman ni la traza ya compartidas.
|
||||
|
||||
@@ -28,13 +28,13 @@ import io.kumare.iqr.app.App;
|
||||
HibernateJpaAutoConfiguration.class
|
||||
})
|
||||
@EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO)
|
||||
public class IqrApplication {
|
||||
public class TimeApplication {
|
||||
|
||||
// ::: cons
|
||||
//
|
||||
public static void main(String[] args) {
|
||||
|
||||
var innerContext = SpringApplication.run(IqrApplication.class, args);
|
||||
var innerContext = SpringApplication.run(TimeApplication.class, args);
|
||||
|
||||
// app
|
||||
App.getEngine().getBase().setInnerContext(innerContext);
|
||||
|
||||
@@ -11,6 +11,6 @@ public class AppConstants {
|
||||
|
||||
// ::: modules
|
||||
//
|
||||
public static final int CLIENTELE_CODE = 5;
|
||||
public static final int VISMA_CODE = 5;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package io.kumare.iqr.app.module;
|
||||
// base
|
||||
import io.kumare.lib.base.server.spring.module.BaseModules;
|
||||
// app
|
||||
import io.kumare.iqr.mod.clientele.ClienteleModule;
|
||||
import io.kumare.iqr.mod.visma.VismaModule;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -16,17 +16,17 @@ public class AppModules extends BaseModules {
|
||||
|
||||
// ::: constants
|
||||
//
|
||||
public static final ClienteleModule clientele = new ClienteleModule();
|
||||
public static final VismaModule visma = new VismaModule();
|
||||
|
||||
// ::: modules
|
||||
//
|
||||
public ClienteleModule getClientele() {
|
||||
return clientele;
|
||||
public VismaModule getVisma() {
|
||||
return visma;
|
||||
}
|
||||
|
||||
// ::: init
|
||||
//
|
||||
public void init() {
|
||||
add(clientele);
|
||||
add(visma);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele;
|
||||
|
||||
// base
|
||||
import io.kumare.iqr.app.AppConstants;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public class ClienteleConstants {
|
||||
|
||||
// ::: codes
|
||||
//
|
||||
public static final int CODE = AppConstants.CLIENTELE_CODE;
|
||||
public static final String NAME = "clientele";
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele;
|
||||
|
||||
// java
|
||||
import io.kumare.lib.base.server.spring.module.BaseModule;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public class ClienteleModule extends BaseModule {
|
||||
|
||||
// :::
|
||||
//
|
||||
public static final ClienteleController controller = new ClienteleController();
|
||||
|
||||
// ::: api
|
||||
//
|
||||
@Override
|
||||
public int getId() {
|
||||
return ClienteleConstants.CODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return ClienteleConstants.NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClienteleController getController() {
|
||||
return controller;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.visma;
|
||||
|
||||
// base
|
||||
import io.kumare.iqr.app.AppConstants;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public class VismaConstants {
|
||||
|
||||
// ::: codes
|
||||
//
|
||||
public static final int CODE = AppConstants.VISMA_CODE;
|
||||
public static final String NAME = "visma";
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele;
|
||||
package io.kumare.iqr.mod.visma;
|
||||
|
||||
// java
|
||||
import java.util.Collections;
|
||||
@@ -17,7 +17,7 @@ import io.kumare.iqr.app.module.AppModuleController;
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public class ClienteleController extends AppModuleController {
|
||||
public class VismaController extends AppModuleController {
|
||||
|
||||
// ::: api
|
||||
//
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.visma;
|
||||
|
||||
// java
|
||||
import io.kumare.lib.base.server.spring.module.BaseModule;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public class VismaModule extends BaseModule {
|
||||
|
||||
// :::
|
||||
//
|
||||
public static final VismaController controller = new VismaController();
|
||||
|
||||
// ::: api
|
||||
//
|
||||
@Override
|
||||
public int getId() {
|
||||
return VismaConstants.CODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return VismaConstants.NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VismaController getController() {
|
||||
return controller;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
/**
|
||||
*
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.AddArtificialRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// app
|
||||
import java.time.LocalDateTime;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.AddMultipleItemRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// app
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.AddMultipleRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.attendance.model.AttendanceBookRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import java.time.LocalDate;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.AddArtificialRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// app
|
||||
/**
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.user.model.UserItemResponse;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.PaginatedListByDateRequest;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// app
|
||||
import java.time.LocalDate;
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.action.client;
|
||||
package io.kumare.iqr.mod.visma.action;
|
||||
|
||||
// java
|
||||
import io.kumare.adapter.spring.vismatime.message.punch.model.PaginatedListByDateRequest;
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.endpoint.rest;
|
||||
package io.kumare.iqr.mod.visma.endpoint.rest;
|
||||
|
||||
// java
|
||||
import java.util.Map;
|
||||
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import io.kumare.iqr.app.action.AppActionArgument;
|
||||
import io.kumare.iqr.app.endpoint.rest.AppEndpointRest;
|
||||
// module
|
||||
import io.kumare.iqr.mod.clientele.action.client.*;
|
||||
import io.kumare.iqr.mod.visma.action.*;
|
||||
|
||||
/**
|
||||
* Stateless passthrough endpoints to the VismaTime adapter — no local
|
||||
@@ -25,7 +25,7 @@ import io.kumare.iqr.mod.clientele.action.client.*;
|
||||
*
|
||||
* @author afatecha
|
||||
*/
|
||||
public abstract class AbstractClientRest extends AppEndpointRest {
|
||||
public abstract class AbstractVismaRest extends AppEndpointRest {
|
||||
|
||||
// ::: EMPLOYEE LIST
|
||||
//
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
package io.kumare.iqr.mod.clientele.endpoint.rest;
|
||||
package io.kumare.iqr.mod.visma.endpoint.rest;
|
||||
|
||||
// java
|
||||
import io.swagger.v3.oas.annotations.tags.*;
|
||||
@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
//
|
||||
@RestController
|
||||
@RequestMapping("/clientele/clients")
|
||||
public class ClientRest extends AbstractClientRest {
|
||||
public class VismaRest extends AbstractVismaRest {
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user