Giter VIP home page Giter VIP logo

charge-your-travel's People

Contributors

domingolopez avatar

Watchers

 avatar  avatar

charge-your-travel's Issues

[HU 4] Como estación de servicio quiero saber cuales son los conectores eléctricos más usados por los usuarios particulares del sistema, así como los más usados por los usuarios particulares que repostan cerca de mi estación y que no acaban repostando en mi estación de servicio.

Quiero saber cuales son los tipos de dispensadores/conectores eléctricos predominantes de los usuarios del sistema, con lo que podré incorporar estos dispensadores en el futuro si observo tendencia de uso al alza en alguno de ellos.

Criterios de aceptación:

Se debe poder obtener los siguientes agrupados:

  • Agrupado por tipo de conector utilizado en mi estación de servicio o de forma global en todas las estaciones de servicio.
  • Agrupado por tipo de conector utilizado por los usuarios con Impresiones de la estación solicitante o de forma global.
  • Agrupado por tipo de conector de aquellos usuarios a los que no se les ha mostrado la estación solicitante en la búsqueda de la ruta.

[HU 2] Como usuario particular quiero saber la ruta más óptima de viaje hacia mi destino teniendo en cuenta las estaciones de servicio con el precio más bajo durante el trayecto, así como la distancia a las mismas y el nivel de batería actual de mi vehículo, encontrando la ruta óptima en mínima distincia recorrida y máximo ahorro.

Al realizar trayectos continuos con coche eléctrico y sabiendo que los precios de las estaciones de servicio cambian continuamente necesito minimizar costes de recarga en desplazamientos largos.

Criterios de aceptación:

  • Si no existe ruta hacia el destino (por ausencia de estaciones de recarga) debe indicarlo.
  • Si existen varias rutas óptimas en ahorro se debe elegir aquella que reduzca distancia.

Corregir título de los PMV

Corregir el título del PMV1 por PMV 0 - Interno ya que no es realmente un PMV que se le pueda aportar a un cliente, simplemente un producto interno.

Refactorizar tests

Refactorizar tests y posibles errores de escritura para que el código use buenas prácticas de Typescript.

Referencia #7

Se deben relacionar los tests con la lógica de negocio. [Corrección Hito 2]

Los tests escritos deben testar la lógica de negocio que se ha desarrollado. Aunque sí que se prueba cierta lógica de negocio, los tests se han de vincular con las historias de usuario y los criterios de aceptación de las mismas.

En el PMV 1 se desarrolla la HU 1 : #7.

Debe comprobarse en los tests que:

  • Las estaciones de servicio que recibe el usuario no pueden estar más lejos que la autonomía del vehículo.
  • Las estaciones de servicio que recibe el usuario deben disponer del tipo de conector.

Para ello se deben realizar los tests del Agrupado de las estaciones de servicio que contiene la entidad EstacionServicio y los objetos de valor FiltroPrecio y Coordenadas. Se realizarán tests unitarios para cada una de estas clases, siendo EstacionServicio la más relevante a la hora de testar la HU 1.

Para una correcta implementación de la lógica deben seguirse las siguientes pautas:

  • Las estaciones de servicio deben estar ordenadas en función de el menor (precio_total)*(distancia_estación).
  • Descartar estaciones de servicio sin el tipo de conector solicitado o más lejanas a la autonomía actual del vehículo.

Referencia #7

[HU 1] Como usuario particular quiero conocer las estaciones de servicio más cercanas a mi posición gps con el precio más bajo en el momento, teniendo en cuenta el nivel de batería actual de mi vehículo.

Necesito conocer las estaciones de servicio más cercanas a mi posición que dispongan de cargadores eléctricos con el tipo de conector de mi vehículo eléctrico sin que el coche me deje tirado, intentando minimizar el coste que tendrá la recarga.

Criterios de aceptación:

  • Las estaciones de servicio que muestre el sistema no pueden estar más lejos en distancia que la autonomía actual del vehículo.
  • Las estaciones de servicio que muestre el sistema deben disponer el mismo tipo de conector que el vehículo del usuario que solicita la consulta.

Recopilar en el log del proyecto el Hito 1

Agregar a la carpeta del proyecto doc/project_log el README actual correspondiente al Hito 1. Tener en cuenta los enlaces que apuntan a otras zonas del proyecto

Referencia a #7

Arreglar Gruntfile.js

Tras el cambio en los directorios del proyecto se hace necesario hacer un fix de las rutas que utiliza el Gruntfile.js y que no transpile los tests por ejemplo

Referencia #7

Implementar la funcionalidad básica de la clase EstacionServicio

Implementar la funcionalidad de la clase EstacionServicio. Esta, junto con la clase FiltroPrecio y el enumerado TipoConector formarán un agregado para la gestión de Estaciones de Servicio y sus precios. Este agregado podrá ofrecer información referente a las estaciones de servicio próximas a unas coordenadas dadas, así como la referente a los precios de las distintas Estaciones.

Métodos como agregarFitroPrecio(...) o métodos de clase como obtenerEstacionesServicio(radio_km, lat_actual, long_actual) (que obtiene las estaciones de servicio en un radio a la redonda desde la posición actual) son necesarios.

Referencia a #7 #8 #9 #10

Implementar la funcionalidad básica de la clase Coordenadas

La clase Coordenadas es un objeto de valor que sirve a distintas entidades del sistema. Nos servirá para validar las latitudes y longitudes de las entidades así como para aplicar algunas operaciones como cálculo de distancia entre dos puntos geográficos.

Los métodos calculaDistanciaEuclidea y calculaDistanciaManhattan son primordiales.

Referencia a #7 #8

Implementar la funcionalidad básica de la clase FiltroPrecio

La clase FiltroPrecio es un objeto de valor de la entidad EstacionServicio que define el filtro o descuento que debemos aplicar al precio. Es un filtro porque podría dar lugar a concatenar distintos descuentos.

Al ser un objeto de valor la implementación se resume a obtener y actualizar los valores de este objeto, salvo por métodos como applyFilters(..) que aplica los filtros activos en función del tiempo de recarga, la fidelidad del usuario (recurrente o esporádico) tipo de conector (El conector de carga rápida es un 50% más caro), y si el filtro se encuentra activo y en las fechas de activación indicadas.

Referencia a #7 #8 #9

Implementar clase Ruta

Implementación de la clase Ruta, clase que permitirá obtener la ruta óptima de viaje.

Referencia a #8

Creación del Dockerfile para lanzar los tests del proyecto

Se debe crear un Dockerfile que permita la instalación de las distintas dependencias del proyecto, siguiendo para ello las mejores prácticas en cuanto a la creación de este archivo. Es muy importante aplicar buenas prácticas en la creación del Dockerfile ya que conseguiremos una imagen mucho más mantenible y de menor tamaño.

Añadir fichero cc.yaml

Añadir fichero .yaml donde se identificación las entidades para las cuales se ha creado el esqueleto durante el PMV 1.

Referencia a #7 #8 #9 #10

Instalación de Grunt y Jest en el proyecto

Instalar y jugar un poco con Grunt y Jest para saber qué se está haciendo y coger soltura. Obtener experiencia para automatizar tareas de tests, transpilado de .ts a .js y creación de tareas para build y clean

[HU 3] Como estación de servicio quiero ofrecer descuentos automáticos variables a aquellos usuarios particulares que más recarguen en la estación durante un período de tiempo concreto.

Necesito fidelizar clientes a través de un sistema de descuentos para aquellos que recargan asiduamente en mi estación de servicio. Ejemplo: Quisiera poder ofertar un 5% de descuento en la primera recarga y que esa cantidad se incremente un 3% por cada recarga adicional hasta un máximo de un 20% durante un periodo de tiempo concreto. Este ejemplo refleja perfectamente lo que se necesita realizar.

Criterios de aceptación:

  • Si se introducen fechas incorrectas al crear el descuento se debe indicar el error al usuario.
  • Los descuentos siempre son valores positivos en porcentaje. Si se introducen valores negativos se debe indicar el error al usuario.
  • Si se solicita precio a la estación de servicio fuera de las fechas del descuento se debe aportar el precio base de la estación.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.