--- 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`