---
# System prepended metadata

title: Videotron Dashboard Release Notes
tags: [Release Notes, Documentation]

---

---
title: 'Videotron Dashboard Release Notes'
author: 'Thong Nguyen'
---

Videotron Dashboard v1.0 - Release Notes 
===
[Demo](https://dev.myhealthhub.rally.ca/)


## Table of Contents

[TOC]

## Test Credentials

If you are a total beginner to this, start here!

1. admin@rally.ca/Rallyadmin1@
2. viewer@rally.ca/Rallyviewer1@
3. admin@videotron.com/Videotronadmin1@
4. viewer@videotron.com/Videotronviewer1@

User story
---

```gherkin=
Feature: Authorization
  The system has to be able to identify user from different companies and give them the right access to the system.
  eg: Videotron users can only have access to their records.
    
  # Case 1:
  Scenario: Authorize an user
    When user signs in to the system
    Then the backend will clarify which company the user is from and give the appropriate records and rights for users

```

```gherkin=
Feature: View data from mux.js
  As a dashboard user
  I want to view data that fetched directly from mux.js
  Because I want to have a better understanding about the insights of data
    
  # Case 1:
  Scenario: User is a viewer in the system
    When the user is succesfully authenticated
    Then the system routes user to see the latest data from mux.js 
    within 24 hours

  # Case 2:
  Scenario: User is an admin in the system
    When the user is succesfully authenticated 
    Then the system routes user to see the latest data from mux.js 
    within 24 hours just like case #1. However, admin has more control to the data in other parts of the system.
```


```gherkin=
Feature: View usage data of the application
  As a dashboard user
  I want to view all the usage data from the system like most active site,
  total viewed channel, most viewed channel, most active terminal, etc.
  Because I want to have a better understanding about the insights of data.
    
  # When users are Rally employees
  Scenario: User clicks the Usage section from the side bar
    Given I'm a logged-in User
    And I'm an Rally employee
    When I click the Usage section from the side bar
    Then and the report cards should show up 
    And the backend should response with the data that is the summary of
    all records in the system
    
    # When users are Videotron employees
  Scenario: User clicks the Usage section from the side bar
    Given I'm a logged-in User
    And I'm an Videotron employee
    When I click the Usage section from the side bar
    Then and the report cards should show up 
    And the backend should response with the data that is the summary of
    ONLY MY COMPANY's records in the system
```

```gherkin=
Feature: Configure channel section
  As a dashboard user
  I want to create/read/update/delete all channels in the system
  Because I want to manage all channels better

  # When user is an admin from Rally
  Scenario: User clicks the Channel section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Rally
    When I click the Channel section from the side bar
    Then I should be able to add/edit/delete/update ALL channels 
    in the system.
    
  # When user is a viewer from Rally
  Scenario: User clicks the Channel section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Rally
    When I click the Channel section from the side bar
    Then I can only view ALL channels in the system.
    
  # When user is an admin from Videotron
  Scenario: User clicks the Channel section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Videotron
    When I click the Channel section from the side bar
    Then I should be able to add/edit/delete/update ALL channels that are
    assigned to Videotron by Rally.
    
  # When user is a viewer from Videotron
  Scenario: User clicks the Channel section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Videotron
    When I click the Channel section from the side bar
    Then I can only view ALL channels that are assigned to Videotron 
    by Rally.
```

```gherkin=
Feature: Configure Site section
  As a dashboard user
  I want to create/read/update/delete all sites in the system
  Because I want to manage all sites better

  # When user is an admin from Rally
  Scenario: User clicks the Site section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Rally
    When I click the Site section from the side bar
    Then I should be able to add/edit/delete/update ALL sites 
    in the system.
    
  # When user is a viewer from Rally
  Scenario: User clicks the Site section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Rally
    When I click the Site section from the side bar
    Then I can only view ALL sites in the system.
    
  # When user is an admin from Videotron
  Scenario: User clicks the Site section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Videotron
    When I click the Site section from the side bar
    Then I should be able to add/edit/delete/update ALL sites that are
    assigned to Videotron by Rally.
    
  # When user is a viewer from Videotron
  Scenario: User clicks the Site section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Videotron
    When I click the Site section from the side bar
    Then I can only view ALL sites that are assigned to Videotron 
    by Rally.
```

```gherkin=
Feature: Configure Terminal section
  As a dashboard user
  I want to create/read/update/delete all terminals in the system
  Because I want to manage all terminals better

  # When user is an admin from Rally
  Scenario: User clicks the Terminal section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Rally
    When I click the Terminal section from the side bar
    Then I should be able to add/edit/delete/update ALL terminals 
    in the system.
    
  # When user is a viewer from Rally
  Scenario: User clicks the Terminal section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Rally
    When I click the Terminal section from the side bar
    Then I can only view ALL terminals in the system.
    
  # When user is an admin from Videotron
  Scenario: User clicks the Terminal section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Videotron
    When I click the Terminal section from the side bar
    Then I should be able to add/edit/delete/update ALL terminals that are
    assigned to Videotron by Rally.
    
  # When user is a viewer from Videotron
  Scenario: User clicks the Terminal section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Videotron
    When I click the Terminal section from the side bar
    Then I can only view ALL terminals that are assigned to Videotron 
    by Rally.
```

```gherkin=
Feature: Configure Account section
  As a dashboard user
  I want to create/read/update/delete all accounts in the system
  Because I want to manage all accounts better

  # When user is an admin from Rally
  Scenario: User clicks the Account section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Rally
    When I click the Account section from the side bar
    Then I should be able to add/edit/delete/update ALL accounts 
    in the system.
    
  # When user is a viewer from Rally
  Scenario: User clicks the Account section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Rally
    When I click the Account section from the side bar
    Then I can only view ALL accounts in the system.
    
  # When user is an admin from Videotron
  Scenario: User clicks the Account section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Videotron
    When I click the Account section from the side bar
    Then I should be able to add/edit/delete/update ALL accounts in 
    MY COMPANY ONLY.
    
  # When user is a viewer from Videotron
  Scenario: User clicks the Account section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Videotron
    When I click the Account section from the side bar
    Then I can only view ALL accounts in MY COMPANY ONLY.
```

```gherkin=
Feature: Configure Company section
  As a dashboard user
  I want to create/read/update/delete all accounts in the system
  Because I want to manage all accounts better

  # When user is an admin from Rally
  Scenario: User clicks the Company section from the side bar
    Given I'm a logged-in User
    And My role is admin
    And I'm from Rally
    When I click the Company section from the side bar
    Then I should be able to add/edit/delete/update ALL companies 
    in the system.
    
  # When user is a viewer from Rally
  Scenario: User clicks the Company section from the side bar
    Given I'm a logged-in User
    And My role is viewer
    And I'm from Rally
    When I click the Company section from the side bar
    Then I can only view ALL companies in the system.
    
  # When user is from Videotron
  Scenario: User clicks the Account section from the side bar
    Given I'm a logged-in User
    And I'm from Videotron
    When I click the Account section from the side bar
    Then I shouldn't be able to access this route
```

User Flow
---
> Data Flow when user login
```sequence
Frontend->Backend: User credentials
Note right of Backend: Backend validates user credentials
Backend->Frontend: Response with 200 status and user info
Backend->Mux API: API User and Password
Mux API->Backend: Mux data in the last 24 hours
Backend->Frontend: Mux data in the last 24 hours
```

## API Endpoint
#### BASE URL: https://dev.myhealthhub.rally.ca/api/v1
- Running on PORT: 6001
- Tech stack: Python 3, Flask, Nginx reserve proxy
- Deploy guide

```bash
cd backend/api
source api/bin/activate
screen -m -d python3 run.py
# check if app is running
lsof -t -i:6001
```

### 1. Authentication
- URL: https://dev.myhealthhub.rally.ca/api/v1/authentication

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------- | ---------- |
| Register | /register | POST |full_name, email, password, company_id, access_level_id |
| Validate User | /validate | POST | access_token |
| Login | /login | POST | email, password |


### 2. Mux Data
- URL: https://dev.myhealthhub.rally.ca/api/v1/mux_data
- Example: https://dev.myhealthhub.rally.ca/api/v1/mux_data/errors?period=30:days&current_site=all&current_provider=0


| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------- | ---------- |
| Get total errors | /errors   | GET | period, current_site, current_provider |
| Get video startup time | /video_startup_time | GET | period, current_site, current_provider | 
| Get rebuffer duration | /rebuffer_duration | GET | period, current_site, current_provider | 
| Get total errors | /app_crash | GET | period, current_site, current_provider | 
| Get mbps consumption | /mbps_consumption | GET | period, current_site, current_provider | 
| Get total watch time | /total_watch_time | GET | period, current_site, current_provider | 
| Get viewer experience score | /viewer_experience_score | GET | period, current_site, current_provider | 
| Get smoothness score| /smoothness_score| GET | period, current_site, current_provider | 
| Get playback success score | /playback_success_score | GET | period, current_site, current_provider | 
| Get viewer experience chart | /viewer_experience_chart | GET | period, current_site, current_provider |
| Get smoothness score chart | /smoothness_score_chart | GET | period, current_site, current_provider |
| Get playback success chart | /playback_success_chart | GET | period, current_site, current_provider |


### 3. Usage Report
- URL: https://dev.myhealthhub.rally.ca/api/v1/view
- Example: https://dev.myhealthhub.rally.ca/api/v1/view/usage-report?period=24:hours&provider=0&site=0


| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get usage report data | /usage-report   | GET | period, current_site, current_provider |
| Get available sites | /available-sites | GET | period, current_site, current_provider | 
| Get all views | /all | GET | period, current_site, current_provider | 
| Get all by channel | /by-channel | GET | |

### 4. Channel
- URL: https://dev.myhealthhub.rally.ca/api/v1/channel
- Example: https://dev.myhealthhub.rally.ca/api/v1/channel/all?company=Videotron

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all channels | /all | GET |  |
| Get channels by company | /all | GET | company |
| Get channels by site name | /all | GET | site_name |
| Get one channel | /get/${id} | GET |  |
| Add channel | /create | POST | channel_info |
| Edit Channel | /update/${id} | PUT | newChannel |
| Delete Channel | /delete/${id} | DELETE |

### 5. Site
- URL: https://dev.myhealthhub.rally.ca/api/v1/site
- Example: https://dev.myhealthhub.rally.ca/api/v1/site/all?company=Videotron

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all sites | /all | GET |  |
| Get sites by company | /all | GET | company |
| Get one site | /get/${id} | GET |  |
| Add site | /create | POST | site_info |
| Edit site | /update/${id} | PUT | newSite |
| Delete site | /delete/${id} | DELETE |

### 6. Terminal
- URL: https://dev.myhealthhub.rally.ca/api/v1/terminal
- Example: https://dev.myhealthhub.rally.ca/api/v1/terminal/all?company=Videotron

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all terminals | /all | GET |  |
| Get terminals by company | /all | GET | company |
| Get one terminal | /get/${id} | GET |  |
| Add terminal | /create | POST | terminal_info |
| Edit terminal | /update/${id} | PUT | newTerminal |
| Delete terminal | /delete/${id} | DELETE |

### 7. User
- URL: https://dev.myhealthhub.rally.ca/api/v1/authentication
- Example: https://dev.myhealthhub.rally.ca/api/v1/authentication/all?company=Videotron

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all users | /all | GET |  |
| Get users by company | /all | GET | company |
| Get one user | /get/${id} | GET |  |
| Add user | /create | POST | user_info |
| Edit user | /update/${id} | PUT | newUser |
| Delete user | /delete/${id} | DELETE |

### 8. Company
- URL: https://dev.myhealthhub.rally.ca/api/v1/company
- Example: https://dev.myhealthhub.rally.ca/api/v1/company/all

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all companies | /all | GET |  |
| Get one company | /get/${id} | GET |  |
| Add company | /create | POST | user_info |
| Edit company | /update/${id} | PUT | newUser |
| Delete company | /delete/${id} | DELETE |


### 9. Access Level
- URL: https://dev.myhealthhub.rally.ca/api/v1/access-level
- Example: https://dev.myhealthhub.rally.ca/api/v1/access-level/all

| Function | API Endpoint | Method | Parameters | 
| -------- | ------------ | ------ | ---------- |
| Get all access level | /all | GET |  |
| Get one access level | /get/${id} | GET |  |
| Add access level | /create | POST | access_level_info |
| Edit access level | /update/${id} | PUT | new access level |
| Delete access level | /delete/${id} | DELETE |


## Appendix and FAQ

:::info
**Find this document incomplete?** Leave a comment!
:::

###### tags: `Release Notes` `Documentation`
