Challenge Overview

Welcome to Thor EAT Phase 2 Backend Updates Part 1 Code Challenge
Our client Thor likes the quality on the previous project that Topcoder delivered on Early Alert Tool project. This time they want to enhance Early Alert Tool application to make it more user-friendly and support more features.

Read more details about the features and submission requirements below.

Challenge Objectives
  • Update backend based on client requirements for the updated features.
  • Update Postman collections to follow the latest function based on current live website and this challenge requirements

Project Overview
Early Alert Tool (EAT) is a data store for all of the Codes and Standards (documents) that Thor needs to comply with when developing products. As codes and standards change, the divisions within Thor (specifically the division leaders and product managers) need to be alerted to these changes. The division leaders document the issues which arise from any of these changes along with and need to track details on the action plans for those issues. A number of different users will be using the application. There could be codes & standards committee representatives who notify other key point people (product managers or division leaders) of the changes.

The main goal of the application is three-fold:
1. Highlight the standards which have been identified by the business divisions as important
2. Notify people within divisions of standards changes (email functionality)
3. Track the internal corporate action plans issues related to standards changes

Current Demo Site
http://ec2-34-205-166-164.compute-1.amazonaws.com:8080/eat/
Current application supports multiple roles:
  • Admin role:  (full access to all pages & features, including the Data Management, User Management, and Change Requests pages)
    • username: admin  
    • password: Password123
  • Admin approver role: (basically same as Admin except can’t see the Data Management & User Management pages)
    • username: adminapprover
    • password: Password123
  • Data Manager role:  (Access to all Standard User pages plus the Data Input and C&S Issues pages.  Also access to the Actions features on the Keyword Search page - edit, clone & delete)
    • username: datamanager  
    • password: Password123
  • Standard user role:   (Access to only the Keyword Search & Divisional Search pages)
    • No username or password required

Tech Stacks
Frontend:
  • Angular

Backend:
  • Java 8
  • Maven 3+
  • SQL Server 2017
  • Spring 5+
  • JBOSS EAP 7.0

Source Code Repositories
TCX for Repo Auto Registration Link: https://x.topcoder.com/api/v1/gitlab/groups/registration/a09e9330-7b8a-4275-b030-f379ff6e62a5-1572618715783
Backend: https://gitlab.com/thor-eat-phase2/backend
Frontend: https://gitlab.com/thor-eat-phase2/frontend

Setup and running the app
  • IMPORTANT: Follow the steps explained below to running the app. Let us know if you have problem to setup the app
  • Place frontend and backend folder on same level on your environment
  • do ‘npm install’ build the angular on the frontend folder
  • do ‘mvn clean package -Dmaven.test.skip=true’ build the war.file on backend folder
  • In backend folder run `docker-compose build`
  • Then run the app by execute `docker-compose up`
  • After both `thor-db` & `thor-eat` container completely running, open new console window to this path `backend/db/build`
    • running this command to pull sample data from xlsx file 'sudo docker exec f3dc2648c615 sh -c "python3 import.py 'full example data.xlsx'"'
    • Replace f3dc2648c615 with docker container ID of backend builded image > thor-db / tea-sqlsrv. You can check the container ID using `docker ps -a`
    • This import command using python. Make sure python installed in your machine: https://www.python.org/downloads/
  • After all import success, access http://localhost:8080/eat/ to check the running Thor EAT application
  • Please validate data by access ThorEarlyAlert table in the MS SQL server of your running docker `thor-db / tea-sqlsrv`

General Requirements
  • Your updates on this backend challenge need able to use correctly in the next development phase - which is to update the frontend
  • Fix any issues while maintaining the best practice implementation for REST API application
  • You can use this Postman collections from this repo to check all REST API endpoints: https://gitlab.com/thor-eat-phase2/backend/tree/dev/docs
  • Update Postman collections to follow the latest function based on current live website and this challenge requirements
  • Your backend code updates must not break existing functionality

Individual Requirements
1). Login
  • Fix Multiple Login Session problem, check case example below:
    • Logged into the application with Chrome, and was able to perform actions (clone, delete, etc).
    • Then I also logged in under the same user name, but using IE11 (did not logout from the application in Chrome). I was able to perform actions in the application within IE11, but I could no longer take actions in Chrome, although it appeared like I was still logged in.
    • Similarly, when I logged into IE11 first and then Chrome, I could only perform actions in the application on Chrome.
    • It seems like logging in from a different browser, or possibly location, prevents any previous session from taking actions. While I think that this is appropriate, is it possible to provide an indication when a session has been rendered inoperable?
    • Action/Request: (Something like a popup window with "This session has been rendered inoperable by a newer logon by the same user"?)
2). Keyword Search
  • Ability to export & import data
    • User needs ability to export & import all data (fields) from excel or csv
    • Provide ability to import new/revised data from excel or csv
    • Imported user data needs to replace current user data in app
    • Export need render and download file as excel or csv
    • Check the exported files to make sure they return correct results
  • Associate product line to the division/subdivision
    • Associate the product line to the division & subdivision they are in, so that (when using the filters) only the product lines for the selected division(s) appear.
    • Need update the product line table to include division & sub-division
    • Also Product Line and Product Line Contact(s) filters in Keyword page should be reduced when a user selects the division filter first. (cascading filters)
    • Add new column for C&S Steering Comm member for each related division/sub-division
  • Dropdown Filters alphabetical order
    • arrange the Product Line Contact(s) filter choices in alphabetical order
    • arrange the Product Line filter choices in alphabetical order
    • arrange the Sub Divisions filter choices in alphabetical order
    • arrange the Division filter choices in alphabetical order
    • arrange the Organization filter choices in alphabetical order
    • Make sure dropdown in another pages use correct alphabetical order
  • Keyword Search Field to include Product Line Contacts
    • When doing a Keyword Search (Search field) for an email address, the search feature appears to be excluding the Product Line Contacts.
    • The search feature should include this field. (Example: try entering jimhuang@xxxxx.com in the search field.  No results appear)
    • Fix this error related to the Search field to make sure entire database is being searched (quickly)
    • Sorting Search Keyword Data After Editing
    • When users edit an existing document, currently the APP moves that updated document far down in the table results list.  We're not sure how it is currently sorting the data (by the date it was changed? Oldest to newest?) The user should have the ability to sort the results list however they desire (By Identifying #, by date, By product line, oldest to newest, newest to oldest, alphabetically, etc.)
    • Keep the sort the same after editing documents. If the item was 3rd in the table list, it should remain 3rd after editing.
  • Add new columns for Keyword Search table
    • Add the following field:
    • In the keyword search data, we need a field titled “File number”
    • There are two types of file numbers:  
      • First type will be 1-2 alphabetic letters followed by 4 to 6 numbers (i.e. E123456, or MH2344),
      • The second type would be all just numbers (i.e. 9034476).
      • Need combination of letters or numbers.
      • Need support 10 characters max.
    • Make sure field show up when Create or Edit Standard
  • Exact Search functions
    • Provide instruction/advice on how a user can use the keyword search page to find "only" the results they want.  
    • For example, if we search for UL 508 now using the search field, we get results for UL 508, UL 508A, UL 508C, UL 508E, UL 5085-2, etc. This is okay, but what if a user just wanted to see the results for UL 508 only? Is there a way to use the search field to get only these results?  If not, we need this functionality to be created in the search field.
    • Can we make it so that putting "quotes" around the search item will return only exact matched?
  • Inconsistent Division Dropdown Filter Data
    • We currently have 33 divisions as confirmed by looking at the Data Management page.  
    • However, the Division filter on the Keyword Search page is showing additional choices like "Fire accessories / Cooper CSA, Emergency Lighting Fire Notification, Fire Notification EEP, Fire, Installation material platform, Emergency Lighting Fire, Lighting & Security, and others"
    • Where are these choices being pulled from? This seems wrong. Make sure this filter and all other filters are pulling data from the correct source/tables.
    • You might need fix the import code when extract data from XLSX file.
    • Make sure you fix any inconsistent data. Check the correct data from Division dropdown filter on C&S Issue page

3). Send Email
  • Send Email function to attach doc, pdf, ppt or any files
    • Add the ability to attach any type of file (doc, pdf, ppt, or whatever) to an email.  Currently, the APP only allows for attaching a link, picture or video file in the description
    • Make sure email sends successfully when attaching those file types.
  • Sending Email Bug
    • Currently Email notifications can not be sent from the APP.  They are not working.  
    • They appeared to be working when we first deployed the APP,  but now users are getting error messages when clicking the send button.
    • This is true whether users compose an email using either the Keyword Search page or the Divisional Search page.  
    • Email failed error screenshot example is available, if needed
    • Client assumption the errors received may be because of users hitting a character limit in the email Description field.  Users type a lot or copy & paste a lot of text in the Description field, so this has to pretty much be an unlimited text field.  

4). Data Input
  • New C&S Steering Committee members email address field that correlates to each Division
    • The database and app should contain cross reference that correlates C&S Steering Committee members email addresses to each Division so they are, or can be, alerted/notified when something changes in the documents they have indicated are important/critical. This may be accomplished by:
    • Adding a column to the data management page for "Manage Division or Sub-Division". Our admin can then add the new email addresses by using the existing edit function. and then
    • automatically populate these names in each email message that is sent out for documents connected with each Division. (i.e. email is sent out for a document in the LD division, the email address appearing on the page above for the LD also gets automatically entered into the recipients list.
    • If there are no email addresses currently entered in the "Product Line Contact(s)" or "Name of Standard Participant(s) email addresses" fields, then this would be the only person who would receive the email notification message.
    • So, this also relates to Send Email page that auto-populates the recipients email addresses.
  • Add new column for related C&S Steering Committee members for related division/sub-division
    • This is related to the task of associating product line contacts to the division/subdivision in Keyword Search mentioned above
  • Create C&S Issues: In the "Standard, Directive, or Regulation Identifier" field,  add one more choice to the dropdown list: This new choice should be titled "TBD-not yet defined"
    • This also impacts the Edit CnS Issue page
  • Date show 12/31/1969 when Edit or Create New
    • When editing (or entering a new) details for a document - is the date field working and updating properly?
    • This should auto detect the date the entry or update is being made (today’s date).
    • Not default to 12/31/1969 for every one.
    • Check for Create and Edit New Standard/CnS Issues

5). C&S Issues
  • Dropdown Filters alphabetical order
    • arrange the Region filter choices in alphabetical order
    • arrange the Divisions filter choices in alphabetical order
  • Allow Data Manager role to see C&S Issues from same division/subdivision
    • App should allow data managers to allow others to see their C&S Issues if they want others to view and/or edit them.
    • Currently the "only" person who can see C&S issues is "the" single person who entered the issue originally.
    • There is currently no obvious way to assign or expand these rights. If that person leaves the company, nobody else (except the admin) would be able to see or edit the data.
    • We need to allow all Data Managers to see all of the C&S Issues that have been entered in the database.
  • Add new column for C&S Issues table
    • Add the following field:
      • In the C&S Issues data, we need a field titled “WG/JWG/AHG/MT/TF”
      • They stand for Working Group, Joint Working Group, Ad Hoc Group, Maintenance Team, Task Force, etc. Example value: MT-60204-1, WG5, or TF60947
      • You can use input type field.
      • Need support any combination of letters or numbers, (including dashes - , and slashes / ).  
      • Need support 20 characters max.
    • Make sure field show up when Create or Edit CnS Issue

6). CnS Issue Detail
  • Create new endpoint to be able Export CnS Issue details to Powerpoint file
    • Current CnS Issue detail endpoint: {{URL}}/cnSIssues/76
    • Export CnS Issue details to Powerpoint file, user needs ability to select/choose the fields that are exported
    • Create function to render and download the Powerpoint file
    • Make sure labels and values captured correct based on the selected fields

7). Data Management
  • C&S Steering Committee members email addresses tied to each Division
    • The database and app should contain cross reference that correlates C&S Steering Committee members email addresses to each Division so they are, or can be alerted when something changes in the documents they indicated are important/critical. This may be accomplished by:
    • Adding a column to the data management page for "Manage Division or Sub-Division". Our admin can then add the new email addresses by using the existing edit function. and then
    • automatically populate these names in each email message that is sent out for documents connected with each Division. (i.e. email is sent out for a document in the LD division, the email address appearing on the page above for the LD also gets automatically entered into the recipients list.
    • If there are no email addresses currently entered in the "Product Line Contact(s)" or "Name of Standard Participant(s) email addresses" fields, then this would be the only person who would receive the email message.
    • So, this also relates to Send Email page that auto-populates the recipients email addresses.
  • Add new column for related Product Line Contacts for related division/sub-division
    • This is related to the task of associating product line contacts to the division/subdivision in Keyword Search mentioned above

8). Change Request
  • On the Change Requests page, add a new column to display the "Description" field. This new column shall appear between the existing Identifying # column and the Organization column.
  • This should pull the related description when user Creates New data from Data input page


Final Submission Guidelines

Submission Deliverables
  • Updated “backend” and “architecture” repo source code that implement the challenge requirements.
  • Challenge winner need to send MR to our repos
  • Updated README in markup language (If Any)
  • Updated Verification document contains steps to verify your solution. (If Any)
  • Updated Scripts input file. (If Any)

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30105580