<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Slides | Diego Castro | Pandora Box</title><link>https://diegocastroviadero.com/es/slides/</link><atom:link href="https://diegocastroviadero.com/es/slides/index.xml" rel="self" type="application/rss+xml"/><description>Slides</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>es-es</language><lastBuildDate>Fri, 14 Aug 2020 00:00:00 +0000</lastBuildDate><item><title>TimeHammer</title><link>https://diegocastroviadero.com/es/slides/timehammer/</link><pubDate>Fri, 14 Aug 2020 00:00:00 +0000</pubDate><guid>https://diegocastroviadero.com/es/slides/timehammer/</guid><description>&lt;img style="border: none; box-shadow: none; margin-bottom: 30px" data-src="./timehammer_title_revealjs.png" width="800"&gt;
&lt;h3 id="sistema-de-automatización-de-fichajes"&gt;Sistema de automatización de fichajes&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id="objetivo"&gt;Objetivo&lt;/h2&gt;
&lt;p&gt;El principal objetivo es &lt;strong&gt;simplificar el proceso de fichajes&lt;/strong&gt; de una empresa&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Un objetivo secundario es el de utilizar tecnologías para &lt;strong&gt;seguir creciendo como profesional de la Informática&lt;/strong&gt;.&lt;/small&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Contexto
- Recordar cada una de las acciones a realizar &lt;!-- .element: class="fragment" --&gt;
- Para ciertas acciones hay que escribir un texto adicional &lt;!-- .element: class="fragment" --&gt;
- Login requerido para realizar cada una de las acciones &lt;!-- .element: class="fragment" --&gt;
- Intranet no adaptada al uso desde el móvil &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Requisitos
- Fichaje lo más fiel posible a la realidad &lt;!-- .element: class="fragment" --&gt;
- El usuario no tiene que recordar realizar ninguna acción &lt;!-- .element: class="fragment" --&gt;
- Las acciones manuales por parte del usuario serán muy sencillas &lt;!-- .element: class="fragment" --&gt;
- Se tendrán en cuenta los fichajes realizados directamente en la intranet &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;h2 id="solución"&gt;Solución&lt;/h2&gt;
&lt;p&gt;La solución desarrollada es un &lt;strong&gt;chatbot de telegram&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TimeHammerBot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Lo único necesario para poder utilizarla será disponer de un smartphone y tener instalada la aplicación de mensajería &lt;em&gt;Telegram&lt;/em&gt;. También compatible con la versión web de &lt;em&gt;Telegram&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Funcionamiento
#### Trabajador
1. Registro en el chatbot &lt;!-- .element: class="fragment" --&gt;
- Hora de inicio y final de la jornada &lt;!-- .element: class="fragment" --&gt;
- Hora de inicio y final de la comida &lt;!-- .element: class="fragment" --&gt;
- Lugar de trabajo &lt;!-- .element: class="fragment" --&gt;
1. Se olvida de volver a fichar &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Funcionamiento
#### Chatbot
1. Llegada la hora de una determinada acción &lt;!-- .element: class="fragment" --&gt;
- Comprueba el estado del trabajador &lt;!-- .element: class="fragment" --&gt;
- Si procede, notifica al trabajador &lt;!-- .element: class="fragment" --&gt;
1. El trabajador recibe la notificación &lt;!-- .element: class="fragment" --&gt;
- Confirma/Postpone/Cancela la acción &lt;!-- .element: class="fragment" --&gt;
2. El chatbot recibe la respuesta &lt;!-- .element: class="fragment" --&gt;
- Ejecuta la acción en la intranet &lt;!-- .element: class="fragment" --&gt;
- Se queda a la espera &lt;!-- .element: class="fragment" --&gt;
- Ignora la acción hasta el día siguiente &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Ejemplo 1
Trabajador &gt;&gt; lunes | comienzo jornada | 8:00
- A las 8:00 recibirá un mensaje preguntándole si ya ha comenzado a trabajar &lt;!-- .element: class="fragment" --&gt;
- Debajo del mensaje aparecerán una serie de botones: Sí, +5m, +10m, +15m, +20m, No &lt;!-- .element: class="fragment" --&gt;
- Con solo pulsar un botón el chatbot actuará en consecuencia &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Ejemplo 2
Trabajador &gt;&gt; vienes | comienzo jornada | 8:00
- Comienza a trabajar antes de lo normal &lt;!-- .element: class="fragment" --&gt;
- Fichaje manual en la intranet a las 7:30 &lt;!-- .element: class="fragment" --&gt;
- A las 8:00 el chatbot comprobará el estado y verá que no tiene nada que notificar &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;h2 id="extra-i"&gt;Extra I&lt;/h2&gt;
&lt;p&gt;El chatbot busca &lt;strong&gt;molestar lo menos posible&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fines de semana&lt;/li&gt;
&lt;li&gt;Festivos
&lt;ul&gt;
&lt;li&gt;Ciudad de trabajo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vacaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="extra-ii"&gt;Extra II&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;No se persiste la contraseña&lt;/strong&gt; de los usuarios, se guardan en memoria.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Si se reinicia el contenedor que tiene en memoria las contraseñas, se enviará un mensaje a los trabajadores para que vuelvan a introducir su contraseña.&lt;/small&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="demo"&gt;DEMO&lt;/h1&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Objetivos cumplidos
- Todos los fichajes requieren de una confirmación y son fieles a la realidad &lt;!-- .element: class="fragment" --&gt;
- El usuario ya no tiene que recordar realizar una determinada acción &lt;!-- .element: class="fragment" --&gt;
- La única acción manual del usuario consiste en pulsar un botón&lt;!-- .element: class="fragment" --&gt;
- El usuario ya no tiene que conectarse a una intranet &lt;!-- .element: class="fragment" --&gt;
- Al recuperar siempre el estado del usuario de la intranet, se posibilita combinar el uso de ambos sistemas para situaciones excepcionales &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;h2 id="stack-tecnológico"&gt;Stack tecnológico&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Quarkus&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Telegram Bots&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="event-driven-architecture-i"&gt;Event Driven Architecture I&lt;/h2&gt;
&lt;img style="border: none; box-shadow: none; margin-bottom: 30px" data-src="./timehammer_event_driven-architecture_01_slide.png" title="Flujo de actualización de estado de trabajadores"&gt;
&lt;hr&gt;
&lt;h2 id="event-driven-architecture-ii"&gt;Event Driven Architecture II&lt;/h2&gt;
&lt;img style="border: none; box-shadow: none; margin-bottom: 30px" data-src="./timehammer_event_driven-architecture_02_slide.png" title="Flujo de procesamiento de un comando"&gt;
&lt;hr&gt;
&lt;h2 id="roadmap-i"&gt;Roadmap I&lt;/h2&gt;
&lt;h4 id="reducción-de-llamadas-a-comunytek"&gt;Reducción de llamadas a Comunytek&lt;/h4&gt;
&lt;p&gt;En la versión actual se realizan:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;30 * 12 + 6 * 12 + 4 = 436 llamadas/usuario/día&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Con la versión mejorada se realizarían:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;3 llamadas/acción * 4 acciones/día/usuario = 12 llamadas/usuario/día&lt;/small&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="roadmap-ii"&gt;Roadmap II&lt;/h2&gt;
&lt;h4 id="kubernetes-i"&gt;Kubernetes I&lt;/h4&gt;
&lt;img style="border: none; box-shadow: none;" data-src="./kubernetes_cluster_01.jpg" title="Caja cluster" width="60%"&gt;
&lt;hr&gt;
&lt;h2 id="roadmap-ii-1"&gt;Roadmap II&lt;/h2&gt;
&lt;h4 id="kubernetes-ii"&gt;Kubernetes II&lt;/h4&gt;
&lt;img style="border: none; box-shadow: none;" data-src="./kubernetes_cluster_02.jpg" title="Raspberry Pi y PoE Hat" width="60%"&gt;
&lt;hr&gt;
&lt;h2 id="roadmap-ii-2"&gt;Roadmap II&lt;/h2&gt;
&lt;h4 id="kubernetes-iii"&gt;Kubernetes III&lt;/h4&gt;
&lt;img style="border: none; box-shadow: none;" data-src="./kubernetes_cluster_03.jpg" title="Bandeja Raspberry Pi" width="60%"&gt;
&lt;hr&gt;
&lt;h2 id="roadmap-iii"&gt;Roadmap III&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Anular el registro&lt;/li&gt;
&lt;li&gt;Modificar la configuración&lt;/li&gt;
&lt;li&gt;Mejorar validaciones en el registro&lt;/li&gt;
&lt;li&gt;Añadir tests&lt;/li&gt;
&lt;li&gt;Tunear configuración Kafka&lt;/li&gt;
&lt;li&gt;Añadir monitorización de módulos&lt;/li&gt;
&lt;li&gt;NLP&lt;/li&gt;
&lt;li&gt;Modulo de administración&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Chatbots I
- Los chatbots son una herramienta mucho potencial que permite aplicar un nuevo enfoque para resolver ciertos problemas &lt;!-- .element: class="fragment" --&gt;
- Los usuarios están cada vez más acostumbrados a las aplicaciones de mensajería &lt;!-- .element: class="fragment" --&gt;
- Tienen peor fama de la que se merecen porque muchos de los que se hacen llamar chatbots, hacen un mal (o nulo) procesamiento del lenguaje natural y realmente se trata de una sucesión de condiciones lógicas que ejecutan ciertas acciones &lt;!-- .element: class="fragment" --&gt;
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section data-markdown&gt;
&lt;script type="text/template"&gt;
## Chatbots II
- Con este proyecto se muestra un **enfoque diferente** de chatbot, basado en el uso de **comandos**. Que mediante el uso de diferentes **teclados** que se **adaptan** al tipo de respuesta que esperas del usuario, **mejora** mucho la **usabilidad**
&lt;/script&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;h2 id="caso-de-uso"&gt;Caso de Uso&lt;/h2&gt;
&lt;p&gt;Nuevo canal de comunicación para la realización de guardias&lt;/p&gt;</description></item></channel></rss>