EMPRESA_JOSESAID · documentos-cumplimiento-ms

Uso de IA · Documentos y cumplimiento

Documentos legales, vencimientos y versiones.

Cómo se usa la IA aquí. Los fragmentos son código real del repositorio.

Usuario a ser usado: legal@demo.empresa.mx (contraseña Demo2026!)

Herramientas que expone a la IA (5):

consultar_tipos_documentosolicitar_eliminacion_documentoconsultar_documentoconsultar_documentos_por_vencerbuscar_documentos

Ruta base en Nexus: /documentos-cumplimiento-ms/v1

01 Herramienta de lectura: consulta el servicio y devuelve datos

Herramienta de lectura: consulta el servicio y devuelve datos.

HerramientasDocumentos.java
    @Tool(name = "consultar_documentos_por_vencer",
          description = "Lista los documentos que vencen en los próximos N días.")
    public String consultarDocumentosPorVencer(
            @ToolParam(description = "Número de días hacia adelante, por ejemplo 30", required = true) int dias) {
        RegistroHerramientasUsadas.registrar("consultar_documentos_por_vencer");
        String cuerpo = gateway.get()
                .uri(constructor -> constructor.path(RUTA_BASE + "/documentos/por-vencer")
                        .queryParam("dias", dias)
                        .build())
                .retrieve()
                .body(String.class);
        return FiltroDatosSensibles.redactar(cuerpo).texto();
    }
Qué hace: Llama al gateway con la ruta del servicio y devuelve el resultado al modelo.

02 Herramienta de escritura: prepara la acción y NO la ejecuta

Herramienta de escritura: prepara la acción y NO la ejecuta.

HerramientasDocumentos.java
    @Tool(name = "solicitar_eliminacion_documento",
          description = "Prepara la eliminación de un documento legal. NO lo elimina: devuelve un resumen y un accion_id. "
                  + "El usuario debe confirmarlo en la aplicación. No se puede eliminar un documento dentro de su "
                  + "periodo de retención ni uno ya eliminado; en esos casos la aplicación lo rechaza al confirmar.")
    public String solicitarEliminacionDocumento(
            @ToolParam(description = "Identificador UUID del documento", required = true) String documentoId,
            @ToolParam(description = "Motivo de la eliminación, obligatorio, de hasta 300 caracteres",
                       required = true) String motivo) {
        RegistroHerramientasUsadas.registrar("solicitar_eliminacion_documento");
        if (acciones == null) {
            return NO_DISPONIBLE;
        }
        UUID id;
        try {
            id = UUID.fromString(documentoId.trim());
        } catch (IllegalArgumentException | NullPointerException e) {
            return "El identificador del documento no es válido.";
        }
        String motivoLimpio = motivo == null ? "" : motivo.trim();
        if (motivoLimpio.isEmpty()) {
            return "El motivo de la eliminación es obligatorio.";
        }
        if (motivoLimpio.length() > LIMITE_MOTIVO) {
            return "El motivo no puede tener más de " + LIMITE_MOTIVO + " caracteres.";
        }
        if (!existe(id)) {
            return "No encontré ese documento.";
        }
        Map<String, Object> cuerpo = new LinkedHashMap<>();
        cuerpo.put("documentoId", id.toString());
        cuerpo.put("motivo", motivoLimpio);
        String resumen = "Eliminar documento " + id + " (motivo: " + motivoLimpio + ")";
        AccionPendiente accion = acciones.preparar(usuarioActual(), AccionesPendientes.TIPO_DOCUMENTO_ELIMINAR,
                aJson(cuerpo), resumen);
        return FiltroDatosSensibles.redactar("Eliminación preparada, no ejecutada. " + resumen
                + ". accion_id: " + accion.id() + ". Vence en 10 minutos; el usuario debe confirmarlo en la aplicación.")
                .texto();
    }
Qué hace: La acción queda pendiente hasta que la persona confirma con el código.

03 Ruta base del servicio dentro de Nexus

Ruta base del servicio dentro de Nexus.

HerramientasDocumentos.java
    static final String RUTA_BASE = "/documentos-cumplimiento-ms/v1";
Qué hace: Todas las herramientas de este módulo se construyen sobre esta ruta.
Regla del proyecto: la IA propone o prepara; la persona confirma con el código de 8 dígitos. Ninguna herramienta de escritura cambia datos por sí sola.