-
Notifications
You must be signed in to change notification settings - Fork 231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113-T11-2] Flirt & Fork #42
base: master
Are you sure you want to change the base?
[CS2113-T11-2] Flirt & Fork #42
Conversation
…ent-1 Updated UserGuide.md
…yao-categoriseBooks Update developer guide
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good Job! The developer guide is quite detailed. Some parts of the diagrams can be improved.
|
||
The following sequence diagram shows how `idea` causes various entities to interact with one another: | ||
|
||
<img src="images/GenerateIdeaCommandSequenceDiagram.png"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the class header format correct? Should it be :GenerateIdeaCommand?
|
||
The following sequence diagram shows how `idea` causes various entities to interact with one another: | ||
|
||
<img src="images/GenerateIdeaCommandSequenceDiagram.png"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the lifeline suppose to continue after the X (end of lifeline)?
|
||
Step 3. The execute method of ```GenerateSmartItineraryCommand``` is invoked. It retrieves the user's preferred location and cuisine from the ```UserDetails``` object. The method then filters the ```FoodList``` to find food options matching the user's preferences, ensures the selected food options are distinct, and randomly selects two activities from the ```ActivityList```. The generated itinerary, consisting of the selected food and activity options, is then output to the user. | ||
|
||
![Smart Itinerary Generation Sequence Diagram](images/GenerateSmartItineraryCommandSequenceDiagram.png) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the method is called, should there be a activation bar?
|
||
Step 3. The execute method of ```GenerateSmartItineraryCommand``` is invoked. It retrieves the user's preferred location and cuisine from the ```UserDetails``` object. The method then filters the ```FoodList``` to find food options matching the user's preferences, ensures the selected food options are distinct, and randomly selects two activities from the ```ActivityList```. The generated itinerary, consisting of the selected food and activity options, is then output to the user. | ||
|
||
![Smart Itinerary Generation Sequence Diagram](images/GenerateSmartItineraryCommandSequenceDiagram.png) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the return arrow be a dashed arrow?
docs/DeveloperGuide.md
Outdated
|v1.0|busy user|effortlessly generate date ideas|not waste time endlessly searching for ideas| | ||
|v1.0|budget conscious user|generate a date itinerary based on price|choose when to splurge and when to save| | ||
|v1.0|user looking for variety|view a variety of date activities|enjoy diverse date experiences| | ||
|v1.0|experienced user of the platform|save some of my preferred activities|reference back to them in future| | ||
|
||
## Non-Functional Requirements | ||
|
||
{Give non-functional requirements} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should there be explanation for non-functional requirements?
|
||
The following sequence diagram shows how `idea` causes various entities to interact with one another: | ||
|
||
<img src="images/GenerateIdeaCommandSequenceDiagram.png"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe can add in the the methods called and instances created in the diagram?
This can make the callings of such methods clearer for the developer
Step 2. The user enters the `"smart"` command to generate a personalized itinerary. The `"smart"` command is parsed by the ```parseCommand``` method in the ```Parser``` class, which creates a ```GenerateSmartItineraryCommand``` instance, passing the ```UserDetails``` object. | ||
|
||
Step 3. The execute method of ```GenerateSmartItineraryCommand``` is invoked. It retrieves the user's preferred location and cuisine from the ```UserDetails``` object. The method then filters the ```FoodList``` to find food options matching the user's preferences, ensures the selected food options are distinct, and randomly selects two activities from the ```ActivityList```. The generated itinerary, consisting of the selected food and activity options, is then output to the user. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it better to create a class diagram here to visualise it?
The execute method of this command interacts with other components like `Ui` for input/output and `Storage` for persisting user data. | ||
Below is the sequence of actions performed by the `UserDetailsCommand` to collect user information. | ||
|
||
![User Details Collection Sequence Diagram](images/UserDetailsCommandSequenceDiagram.png) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps c:UserDetailsCommand could be moved to the left, while u:UI be in the middle, such that the diagram can flow from left to right
docs/DeveloperGuide.md
Outdated
|
||
### Feature Components and Interaction | ||
|
||
The feature comprise several key components: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps a sequence diagram could be added here?
docs/DeveloperGuide.md
Outdated
|
||
- Changes to gift selections are persisted back to the `GiftList.txt` file via `Storage`, ensuring user choices are saved across different sessions. | ||
|
||
#### Detailed Implementation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a class diagram can be added?
<img src="images/GenerateIdeaActivityDiagram.png" height = "375"> | ||
|
||
The following sequence diagram shows how `idea` causes various entities to interact with one another: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Below is the sequence of actions performed by the `UserDetailsCommand` to collect user information. | ||
|
||
![User Details Collection Sequence Diagram](images/UserDetailsCommandSequenceDiagram.png) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is straight lines the correct way to show return values instead of dotted lines?
|
||
#### Design Considerations | ||
|
||
- Using a class hierarchy where `Gift` extends `Favourites` allows for easy addition of new types of favourites in the future. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Possibly add in class diagram?
docs/DeveloperGuide.md
Outdated
- `GenerateGiftCommand` modifications: Revise this command to accept and process additional arguments for gender, altering the random gift selection logic to utilise the updated `getRandomGift` method in `GiftList`. | ||
|
||
**User Interaction Flow** | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps add in sequence diagram?
|
||
## User Stories | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
|v1.0|first-time user|see a help message|know how to use the features within the app & its parameters| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good job in adding in the user stories!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, very detailed DG with mostly correct diagrams!
|
||
The following sequence diagram shows how `idea` causes various entities to interact with one another: | ||
|
||
<img src="images/GenerateIdeaCommandSequenceDiagram.png"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
Step 3. The execute method of ```GenerateSmartItineraryCommand``` is invoked. It retrieves the user's preferred location and cuisine from the ```UserDetails``` object. The method then filters the ```FoodList``` to find food options matching the user's preferences, ensures the selected food options are distinct, and randomly selects two activities from the ```ActivityList```. The generated itinerary, consisting of the selected food and activity options, is then output to the user. | ||
|
||
![Smart Itinerary Generation Sequence Diagram](images/GenerateSmartItineraryCommandSequenceDiagram.png) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Personal details such as name, age, and gender are stored in a `UserDetails` object, which is then serialized to a file by `Storage`. | ||
These operations are exposed in the system as follows: | ||
|
||
The `UserDetailsCommand` is instantiated and called when the user chooses to enter or update their personal details. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great descriptive explanation of the implemented feature and the relevant classes and methods!
docs/DeveloperGuide.md
Outdated
The above sequence diagram depicts the interaction between UserDetailsCommand, the UI, and the Storage component, which highlights the flow of data collection and storage. | ||
|
||
|
||
### [Proposed] History Tracking feature |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good job listing out your proposed features as well in addition to your existing implemented ones!
The execute method of this command interacts with other components like `Ui` for input/output and `Storage` for persisting user data. | ||
Below is the sequence of actions performed by the `UserDetailsCommand` to collect user information. | ||
|
||
![User Details Collection Sequence Diagram](images/UserDetailsCommandSequenceDiagram.png) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps "M" or "R" or "D" could be made more obvious to the reader of the DG, maybe mention what M, R or D means under the diagram?
The above sequence diagram depicts the interaction between UserDetailsCommand, the UI, and the Storage component, which highlights the flow of data collection and storage. | ||
|
||
|
||
### [Implemented] History Tracking feature |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regarding the "history" command, perhaps this is not I what I would expect the command to do. Maybe "history" should show the user whole date that was generated together from generate idea?
|
||
Smart Itinerary Generation Feature: A proposed feature that creates personalized itineraries based on user preferences, ensuring variety and suitability. | ||
|
||
History Tracking Feature: A proposed feature that keeps a record of past date activities, allowing users to track their date history and preferences. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned above, I don't think it tracks each date history, it seems to just track which activities are completed?
|
||
Given below is an example usage scenario of how the History Tracking mechanism behaves at each step. | ||
|
||
Step 1. The user launches the application and executes the `idea`/`itinerary`/`smart`/`gift` command. The relevant command is parsed by the `parseCommand` method in the `Parser` class, which creates a `GenerateIdeaCommand`/ `GenerateItineraryCommand`/`GenerateSmartItineraryCommand`/`GenerateGiftCommand` instance |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its good to have this much detail! But I do think it might be a bit excessive to go through the geneate command here again?
Refactor itinerary generation and history function
Edit smart command portion in User Guide
Refactor loadUserDetails command
Add Q&A section and legend for cuisine in User Guide
Add lines to FAQ section
Fix error display messages, and add 'cancel' function to certain commands
Add clearer error handlings to parser class
Update yiting PPP
Add additional line for UG command summary
…orUserDetails Make integer inputs for user detail fields stricter
Fix minor cosmestics on display messages
Attempt to fix broken User Guide hyperlinks
update UG to standardise input format
Fix features hyperlink
Fix database for correct history
Flirt & Fork helps generate creative and enjoyable date itineraries that fit within a specified budget, and are easily accessible from your current location