HeaderSIS.jpg

IS480 Team wiki: 2017T1 ELIXIR FinalWiki

From IS480
Jump to navigation Jump to search
Elixirlogo.png


HOME

 

ABOUT US

 

PROJECT OVERVIEW

 

PROJECT MANAGEMENT

 

DOCUMENTATION

 

Project Progress Summary

Elixir finalsprojectsumamry.jpg

Elixir midtermsslides.png      

Project Highlights:

  • User Acceptance Test 3 was completed on 2 November
  • Implemented Voting module (Up vote/Down vote for each post) in Sprint 11 (2 Oct - 15 Oct)
  • Implemented Client Reporting module for TSL Facebook, Instagram and YouTube page in Sprint 12 (16 Oct - 29 Oct)
  • Implemented Telegram Bot to send daily reports containing new posts and Top 10 Viral posts across platforms and in Sprint 12-13 (16 Oct - 12 Nov)
  • Integrated Telegram Bot to automatically send daily reports to 90 employees at the end of Sprint 13
  • Integrated Google Analytics to track user activities at the end of Sprint 13

Project Management

Project Status:

Elixir finalsheader.jpg


Elixir finalsprogress.jpg

Project Schedule:

Elixir finalizedschedule.png


Project Schedule has no changes since Mid Terms.

Project Metrics:

Bug Management

Elixir finalsbug.png

Project Management

Elixir finalspm.png

Burndown Charts after Mid Terms to Finals

  • Y-axis: Number of story points remaining
Elixir finals3sprints.png


Sprint 12 has a larger deviance between Target and Ideal Burndown because the team was implementing a relatively complex module with a larger scope - Client Reporting module. The module involves the integration of retrieving post and video statistics from TSL pages (across Facebook, Instagram and YouTube), which took the team a longer time to implement than expected. However, the team still managed to deliver client reporting on time by the end of Sprint 12.

Overview of all Burndown Charts
Sprint 3 - 7: Before Acceptance
Sprint 8 - 10: Before MidTerms
Sprint 10 - 13: Before Finals

Elixir finalsscrum.png


Change Management
We had no major change(s) after Mid Terms.
Changes After Mid Terms

Sprint No. Date Category Change Request Issuer Description Decision Action Taken Status
11 4 Oct User Interface For client reporting module, retrieve data and group them under to Reach, Engagement and Views. Sponsor This is important as we have consider the right parameters when retrieving information from TSL pages. Accept Implementation to take place in Sprint 12. Closed
13 2 Nov User Experience At the client reporting page, highlight to user if the URL entered is correct or wrong, according to the chosen platform Sponsor This is for users to realise if their input are possibly valid or invalid (red: wrong, yellow: warning, green: correct) Accept Implementation to take place in Sprint 13 and assigned to Jia Kai. Closed


Significant Changes in Project Athena

Sprint No. Date Category Change Request Issuer Description Decision Action Taken Status
7 19 August Functionality Crawler Module (Advanced): Enhancement of Instagram & Website Crawler to enable pagination crawl Jia Kai This enhancement will enable a larger number of posts to be crawled at one time Accept Updated project schedule to take in this change. Features to be implemented in Sprint 8. Closed
7 28 August Functionality Crawler Module: Facebook crawler will be dropped from project scope Sponsor Unable to get Facebook Access Token for authorised use of Graph API for Facebook crawling Accept Updated project scope take in this change. Informed Supervisor about this change. Closed
8 28 August Functionality Crawler Module (Advanced): Implement batch call for RSS websites Jia Kai This is to reduce number of calls on Graph API Accept Updated project schedule to take in this change. Task will take place in Sprint 9. Closed

Project Risks:

Top 3 Risks


S/N Risk Type Risk Event Likelihood Impact Level Mitigation
1 Resource Risk API Failure Low High B Check for API updates across all platforms and legacy issues regularly
2 Technical Risk Overloading of crawler when there are too many sites which crawler is unable to support. Medium Medium B Implement multithreading and a effective queue management where server prioritises sites to crawl
3 Technical Risk Benchmarking being set too high which will lead to viral post being missed out on Medium High A Threshold is set to be lower initially. (10%) so that we do not miss out on viral post. Subsequent adjustments will be made to the threshold.

Technical Complexity:

In our Mid Terms wiki, we introduced technical complexity regarding the Instagram API, YouTube API, Websites RSS Standardisation, Web Site Job Batching and using SQL statements for calculating statistics. For Finals wiki, the technical complexity for Telegram Bot and Client Reporting will be highlighted.

Telegram Bot
Requirement: Send a Daily Posts Summary Report on the top 10 viral posts and new posts for each platform in the last 24 hours (i.e. Telegram Report) on Telegram in PDF at 9.00 AM.
Problem Statement: While we want to create user friendly reports, we were faced with unfamiliar APIs (Telegram Bot API, iTextPDF, J2HTML).


We decided that we want to include tables, headings, content page, and links so that reader can read each posts more easily, know which part of the report they are looking at, and able to visit the post with a click on the title on the PDF. There is only 1 mature Java library that is used to generate PDF, i.e. iTextPDF. Due to our unfamiliarity in the library, it would be very time consuming to even change the alignment of texts let alone adding tables and positioning the tables. Hence, we decided to format out report using HTML before converting the HTML code into a PDF.

Victor1.png

It was tedious, error-prone, and time consuming to use Strings to write HTML code as we need to consider the syntax. We decided to use a mature Java library, J2HTML, to write HTML file so that we rely on the library for the syntax and focus solely on the content formatting.

Elixir2.png

We needed to include a content page in the Telegram Report as most of the time the number of daily new posts can go up to hundreds. Having a content page allows reader to click on the section and goes to the selected page.

Elixir3.png


To generate this content page, we need to generate the sections as reports before merging all into one final report. The relevant data (viral posts and new posts in the last 24 hours) is retrieved from the database before formatting these information on HTML for each of the sections.

Elixir4.png

The technical challenges of our unfamiliarity with iTextPDF makes this implementation complex as we need to use the specific method to get the number of pages of the sub-sections and to implement the function to link a click on the sections on the content page to the specified page number.

Elixir5.png


Elixir6.png

Another implementation we must make is to send the report via a Telegram Bot. Telegram requires us to follow their set of Telegram HTTP APIs to do so. We coded our own class object that make use of the HTTP APIs to send the report via a POST request.

Elixir7.png

Client Reporting
Requirement: Based on the different media campaigns, gather the required statistics demonstrating the overall media reach and engagement. These statistics are required to be formatted into a report for user to download as a PDF file (most used document format). This file could then be easily shared with TSL clients, showing the result of the client campaigns.
Problem Statement: Retrieving statistics of posts and videos from TSL Facebook Page using the Facebook Graph API was new to the team. For user experience, a dynamic form field was required as a client can have multiple campaigns, each advertised on a different platform from another.

The complexity faced is highly related to the user experience with the input forms and the PDF report. We wanted to provide dynamic fields allowing users to add and remove fields as needed. We used a looping method to create multiple fields with different item id. However, problems arise when users try to delete fields in the middle of the list after adding. In this case, it is easy to replace all the ids of all the field items on the screen. The team finds this methodology to be inefficient as a lot of operations will be triggered every time a user deletes a field in the middle. After much research, we figured that the best solution is to use a field array, which allows provides easy manipulation of the fields in the array. With this, we are able to achieve an input form which minimises chances of entering wrong fields to the wrong platforms and also allow users the flexibility to use shortcuts.
Dynamic field arrays:

Elixir8.png
Elixir9.png

Quality of product

Intermediate Deliverables:

User Testing:

Reflection