From Professor Somchoke's advises and talks after advisor meeting, he recommended lots of improvements which can be made on this project, which can be summarized into these bullets:
We will have 3 services in our system: Line Bot (Frontend), Website (Frontend), API Server (Backend).
There are two kinds of user in this system:
Citizen interacts with LINE Bot as the frontend application for reporting issues.
Staff interacts with website as the frontend application for manipulating reported issues.
When user prompts a message in LINE Bot, this will initiate the conversation with LINE Bot, following by these conditions:
Issue object is constructed by these attributes: title, medias, and location (optional).
If the message is voice, convert it to text and continue process it as text.
If the message is text, check if it is the message related to inquiring user's own created issues or latest issues or not
If so, show user's own created ongoing issues or latest ongoing issues.
Otherwise, receiving more data to create an issue.
If the message is media, receiving more data to create an issue.
If the message is location, receiving more data to create an issue.
When user asks for the latest issues, they can specify the location of issue to narrow the searching area by pressing pop-up button.
User can send multiple texts/voices/medias per issue.
Issue will be created after pressing Create pop-up button. The session will be automatically cancelled if user presses Cancel pop-up button or time exceeds the limit since the last message.
After user create an issue, backend will process the issue whether it is duplicated or not. Then reply back to the user to confirm. If duplicated, that user is subscribed to that issue, otherwise, that issue is created as a new issue.
Staff can mark issues as duplicated if they found that some issues are similar to each other. And the creator of that issue is subscribed to that merged issue instead.
After user successfully creates an issue, that issue is automatically categorized by AI. AI will categorize issues into existing categories or “others” only.
There are 3 roles for website frontend:
Super Operator: Can create another user, grant or revoke operator to another user. Super operator can transfer super operator privilege to another user.
Operator: Can create another user, grant or revoke operator to another user. Operator cannot revoke operator privilege from super operator.
Staff
Issues in consideration are sorted by subscriber amount first, then sort by user rating.
If staff wants to gather information from user, they can click inquiry data button and specify the questions to the user. Then after the user sends the message back, it will be saved and showed in that issue’s comment section. Staff can select which users to inquiry.
Staffs can comment in any issues.
User with issue marked with Spam will be listed in low rating, making it barely shows at the top of In Consideration Status.
User with issue marked with In Progress will be listed in high rating, making it shows more at the top of In Consideration Status.
There are six statuses of issues:
In Consideration
In Progress
Completed; Fixed
Completed; Suspend - as not planned
Completed; Duplicated - repeating issue
Completed; Spam
Frontend website must contain these pages:
Authentication Page (Login, Register)
Change Password Page
Manual Issue Creation: User can manually create issues by accessing this page. User can define title, description, priority, location, assigned user.
Issue Overview: User can see all issues and can move each issue to particular status. User can sort issues by different methods, including by creation time, updating time, assigned user, and priority.
Issue Description: User can see the description of each issue, including comments and assigned user.
Issue Editing: User can edit information of each issue or delete issue.
This system should support Thai and English (with Chinese as alternative).
We need to report our project idea to Professor Somchoke for his approval in order to perform the next step.
Acceptance Criteria: