---
# System prepended metadata

title: Jaume's Onboarding

---

# Jaume's Onboarding 

---

## Where we come. Routing manager objectives.

[Specifications document](https://docs.google.com/document/d/1kUTpmzh3Uad4SFT9Ad7Dxsu1X52yQwUFmCI7tAnxYaM/edit
)

- Providing a normalizedd routing interface to execute different algorithms.
- Store inmutable group of orders (datasets), in order to repeat the experiments.
- Provide an easy way to extract routes from the live database.

![](https://i.imgur.com/ObY3gZr.png)

---
## Explain the domain.

- A `dataset` is a group of order.
- A `config` is a group of vehicles and a serviceTime.
- An `algorithm` indicates the algorithm to be used: 
    - This include algorithm name (plotwise, graphhopper)
- An `execution` keeps the results of a routing executions which is composed of a dataset, a config and an algorithm.


![](https://i.imgur.com/Xj3Ps7V.png)

- An important concept for us is about the `hash`. Basically each dataset has hash, that is unique along all the datasets. The idea is to have uniques datasets and avoiding insterting twice the same dataset.

**Check the real domain**
**Explain that we defined some entines as orders or vehicles that are store as json in the database**

---

### Plotwise Integration

![](https://i.imgur.com/px6jczQ.png)

- Plotwise: Continues Optimization 
- Roadmap with Plotwise
    - Static routing
    - Shadow running
    - Final integration (UI)
- Challenges with Plotwise
    - We need to receive orders event.
    - We need to process and associate each event to a plotwise bucket.
    - We need to be able to create/update orders in plotwise. 
    - We need to know when to start/stop any bucket

---

### Inner Routing Manager issues

- Define a `routes` entity that normalize the routes (result) for any algorithm.
- Monitoring. We still dont have any integrationg with prometheus or grafana.
- We need to figure out how to integrate our current custom implementaion of rabbitmq with the the integration of the event bus. 
- More issues: https://github.com/PaackEng/routing-manager-system/issues 

---

### Implementaions

#### Common implementations from other Go projects

- Based on DDD
- Based on infra/app/domain separation of concerns

#### Divergence implentations

- We are not using events for changes in the domain
- We are not using middlewares
- We are using some entities as public. Since we need to store 

**Check flow to run an execution**
**Explaing that each algorithm is part of the infra layer**