From f36e94bdebe2a0bea583981b18ccc82c665e08f5 Mon Sep 17 00:00:00 2001 From: TehOPanas Date: Thu, 9 Nov 2023 10:00:59 +0800 Subject: [PATCH] Update PPP for Lian Zhi Xuan and added page break for PDF conversion --- docs/DeveloperGuide.md | 114 +++++++++++++++++++++++++++++++++++++---- docs/UserGuide.md | 6 +++ docs/team/tehopanas.md | 67 +++++++++++++++--------- docs/team/yucongkoo.md | 81 +++++++++++++++-------------- 4 files changed, 196 insertions(+), 72 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1f00e5a90ae..c01cae436fe 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -30,6 +30,7 @@ pageNav: 3 Refer to the guide [_Setting up and getting started_](SettingUp.md). -------------------------------------------------------------------------------------------------------------------- +
# **Design** @@ -58,11 +59,15 @@ The bulk of the app's work is done by the following four components: [**`Commons`**](#common-classes) represents a collection of classes used by multiple other components. +
+ **How the architecture components interact with each other** The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - + + +
Each of the four main components (also shown in the diagram above), @@ -73,6 +78,8 @@ For example, the `Logic` component defines its API in the `Logic.java` interface +
+ The sections below give more details of each component. ## UI component @@ -92,6 +99,8 @@ The `UI` component, * keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. * depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. +
+ ## Logic component **API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) @@ -100,6 +109,8 @@ Here's a (partial) class diagram of the `Logic` component: +
+ The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. @@ -116,6 +127,8 @@ How the `Logic` component works: 1. The command can communicate with the `Model` when it is executed (e.g. to delete a person). 1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. +
+ Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: @@ -124,6 +137,8 @@ How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. * All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. +
+ ## Model component **API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) @@ -138,6 +153,8 @@ The `Model` component, * stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. * does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) +
+ **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
@@ -146,6 +163,7 @@ The `Model` component,
+
## Storage component @@ -189,6 +207,8 @@ In order to integrate the command for handling tag features into the execution l we first update the `AddressBookParser` to recognise the `tag` _command word_ and will create a `TagCommandParser` subsequently. The `TagCommandParser` will then parse the _command arguments_ to create a `TagCommand` that can be executed. +
+ The sequence diagram below illustrates the interactions within the `Logic` component when executing a tag command, taking `execute("tag 1 at/tall dt/short at/handsome")` API call to `LogicManager` as an example. @@ -250,6 +270,8 @@ this feature.

+
+ ### Design considerations: ###### **Aspect: Data structure to store tags in a Person object:** @@ -279,6 +301,7 @@ Alternative 1 was chosen over alternative 2 based on the following reasons: * Repeated action signals the users' strong intention of performing that action(e.g. wanting to add the same tag twice shows the importance of that tag). * The target audience is forgetful and careless, it is common for the users to enter duplicate tags without realising it, blocking such actions brings no value to the product. +
###### **Aspect: Deletion of non-existing tags:** * **Alternative 1(current choice):** Simply ignore such deletions. @@ -301,6 +324,8 @@ ignore such additions due to the same reason stated above.

+
+ ## Find feature This find feature is designed to do partial search or prefix search on the customer list. @@ -310,6 +335,7 @@ Sequence diagram below shows the interactions between `Logic` components when ex +
###### **Implementing `XYZContainsKeywordsPredicate`** `XYZContainsKeywordsPredicate` = `AddressContainsKeywordsPredicate`, `NameContainsKeywordsPredicate` etc @@ -332,12 +358,15 @@ It tests each customer in the list with given `keywords`(search prompt given by This class serves as the primary predicate for testing multiple conditions. It houses various predicates such as 'NameContainsKeywordsPredicate' to check if specific criteria are met. +
+ ###### **Implementing `FindCommandParser`** `FindCommandParser` processes the input following the 'find' command, parsing it into distinct predicates based on the provided prefixes. These predicates are then combined to create a `PersonContainsKeywordsPredicate` which is used by `FincCommand` +
###### **Implementing `FindCommand`** `FindCommand` is executed on the `Model`, it will update the `Model` accordingly to @@ -345,6 +374,8 @@ reflect the changes after the `FindCommand` completes its execution. +
+ ### Design considerations: ###### **Aspect: Overall design of predicate:** @@ -372,6 +403,8 @@ Due to the Open-Closed Principle, we have opted for Alternative 1 to maintain mo * Pros: More intuitive design. * Cons: Harder to implement, required a long algorithm to do so. +
+ **Reasoning :** In this case, we chose Alternative 1 over Alternative 2 because the find feature becomes less versatile when we enforce the rule that @@ -411,6 +444,7 @@ and the use of a single prefix with multiple keywords serves this purpose effect By minimizing the number of prefixes, users can perform searches more efficiently and intuitively. Alternative 1 outweigh the potential drawbacks of limited differentiation, because it prioritizes user-friendliness and ease of use. +
## Insurance Feature This feature allows users to assign / remove insurance package(s) to / from customers in EzContact to help users keep track of customers' insurances. @@ -428,6 +462,7 @@ The implementation of the Insurance feature consists of few parts, distributed a +
**Implementing `InsuranceCommand`** @@ -437,6 +472,7 @@ Sequence diagram below shows the execution of `InsuranceCommand`. +
**Implementing `InsuranceCommandParser`** @@ -450,6 +486,8 @@ Sequence diagram below shows the execution of `InsuranceCommandParser#parse(Stri +
+ **Integrating `InsuranceCommand` and `InsuranceCommandParser`** In order to integrate them into current logic component, `AddressBookParser` has to be updated to recognise the command @@ -461,6 +499,7 @@ Sequence diagram below shows the interactions between `Logic` components when ex +
### Design Considerations: @@ -497,6 +536,8 @@ entering duplicate `Insurance`, the users' goal is still achieved, thus we think for such action. With our handling of duplicate `Insurance`, no duplicate values will be added into the model with duplicate `Insurance` entries, and thus it will not cause any error. +
+ ###### **Aspect: Deleting non-existing `Insurance`** * **Alternative 1 (Current choice)** : Allows the users to delete non-existing `Insurance` as long as no conflict exists (i.e. adding and deleting the same `Insurance`) @@ -513,6 +554,7 @@ The reasoning comes from the users' intention of deleting an `Insurance`, that i a non-existing `Insurance` does not defeat the purpose, thus we think that there is no need to purposely block the users for such action. +
## \[Proposed\] Appointment feature @@ -526,6 +568,8 @@ The appointment feature supports 5 different type of command: 4. `mark appointment` 5. `unmark appointment` +
+ ## Priority feature ### Implementation @@ -539,6 +583,8 @@ By default, each `Person` has a priority `Level` of `-` unless the user explicit +
+ **The `PriorityCommandParser` class** The class is used to parse the arguments into two information: `index` and `priority`. @@ -560,6 +606,7 @@ It will update the `Priority` of a `Person`. The `Level` enum class is chosen because our system only allows four priority level: `HIGH`, `MEDIUM`, `LOW` and `-`. The reason of choosing `-` as the default priority level is to ease the process of distinguishing having priority and not having priority. +
## Remark feature @@ -606,7 +653,7 @@ It will update the `Remark` of a `Person` and generate a `CommandResult` for the In real-life scenarios, storing empty strings as remark is unlikely, hence alternative 1 is preferred due to its user-friendliness. - +
## \[Proposed\] Undo/redo feature @@ -652,6 +699,8 @@ than attempting to perform the undo. +
+ The following sequence diagram shows how the undo operation works: @@ -738,6 +787,7 @@ Target user : Insurance agent Manage customers' contact for existing/potential insurance contracts faster than GUI driven apps, alongside helping users increase the chance of sealing deals with customers. +
## User stories @@ -769,6 +819,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*` | `*` | user | be able to export my data | have a backup of data in case of data loss | | `*` | advanced user | have multiple contact books | neatly organize my contacts based on contexts | +
+ ## Use cases (For all use cases below, the **System** is the `EzContact` and the **Actor** is the `user`, unless specified otherwise) @@ -812,6 +864,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*`   3a1. System shows an empty list with a warning message.
  Use case ends. +
+ #### Deleting a customer **Use Case: UC03 - delete a customer** @@ -844,6 +898,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*`   3a1. System shows an error message to alert User about the invalid command.
  Use case ends. +
+ #### Searching for a customer **Use Case: UC05 - search for a customer** @@ -881,6 +937,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*`   3a1. System shows an error message to alert User about the invalid command.
  Use case ends. +
+ #### Assigning insurance to customer **Use Case: UC07 - assign insurance to a customer** @@ -915,6 +973,7 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*`   3a1. System shows an error message to alert User about the invalid command.
  Use case ends. +
#### Updating tags of a customer @@ -957,6 +1016,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*`   3b1. Systems displays an error message to alert the User.
  Use case ends.
+
+ ## Non-Functional Requirements 1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. @@ -975,6 +1036,8 @@ Priorities: High - `* * *`, Medium - `* *`, Low - `*` * **Command word:** The first word of a user command(e.g. `tag` is the command word of the command `tag 1 at/tall dt/short`) * **Command arguments:** The remaining input of a user command(e.g. `1 at/tall dt/short` is the command arguments of the command `tag 1 at/tall dt/short`) +
+ -------------------------------------------------------------------------------------------------------------------- # **Appendix: Planned Enhancements** @@ -988,6 +1051,8 @@ This section covers the enhancements we plan to implement in the future. (explain how enhancement fixes the flaws... ) -------------------------------------------------------------------------------------------------------------------- +
+ # **Appendix: Effort** This section gives an overview of the challenges, we as a team faced and the effort we have put in to make this project work. @@ -1005,6 +1070,7 @@ This section gives an overview of the challenges, we as a team faced and the eff (results achieved with this implementation... ) -------------------------------------------------------------------------------------------------------------------- +
# **Appendix: Instructions for manual testing** @@ -1065,13 +1131,43 @@ _{ more test cases …​ }_ Prerequisite : - 1. Test case : `tag 1 at/tall at/fat dt/short dt/skinny`
- Expected :
The tags assigned to the customer at index 1 will be updated accordingly(adds `tall` and `fat` tag, deletes `short` and `skinny` tag). -1. Test case : `tag 0 at/tall` - Expected:
No customer is updated. Error details shown in the status message(format error since the index is not a positive integer). -1. Test case : `tag 1` - Expected:
No customer is updated. Error details shown in the status message(format error since no tag to update is provided). -1. Test case: `tag 1 at/tall dt/tall` - Expected:
No customer is updated. Error details shown in the status message(conflicting tags). + Expected : The tags assigned to the customer at index 1 will be updated accordingly(adds `tall` and `fat` tag, deletes `short` and `skinny` tag). + +1. Test case : `tag 0 at/tall`
+ Expected : No customer is updated. Error details shown in the status message(format error since the index is not a positive integer). + +1. Test case : `tag 1`
+ Expected : No customer is updated. Error details shown in the status message(format error since no tag to update is provided). + +1. Test case: `tag 1 at/tall dt/tall`
+ Expected : No customer is updated. Error details shown in the status message(conflicting tags). + +
+ +
+ +## Update insurance of a customer + +**Updating the insurances of a customer** + +Prerequisite : - + +1. Test case : `insurance 2 ai/AIA ai/cars di/health di/ABC`
+ Expected : Customer is updated, `health` and `ABC` insurance are removed and `AIA` and `cars` insurance are added + +1. Test case : `insurance 0 ai/AIA ai/cars di/health di/ABC` ``
+ Expected : Customer is not updated. Error details shown in the status message (format error since the index is not a positive integer). + +1. Test case : `insur 3 ai/EFG ai/JFK`
+ Expected : Customer is not updated. Error details shown in the status message (Incorrect command word). + +1. Test case : `insurance 4 ai/ABC di/ABC`
+ Expected : Customer is not updated. Error details shown in the status message (conflicting changes). + +1. Test case : `insurance 1 `
+ Expected : No customer is updated. Error details shown in the status message(format error since no insurances to update is provided). + +
## Feature to show diff --git a/docs/UserGuide.md b/docs/UserGuide.md index fa2af11899d..f2fb4caf177 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -320,6 +320,8 @@ After: +
+ **Example:** * `insurance 2 ai/AIA Insurance di/Great Eastern Insurance`
@@ -370,6 +372,8 @@ Before: ![priorityBefore](images/priority-command-example/priority-before.png) +
+ After: ![priorityAfter](images/priority-command-example/priority-after.png) @@ -417,6 +421,8 @@ After: ![remarkAfter](images/remark-command-example/remarkAfter.png) +
+ * `remark 4` Removes the remark from the second customer in the displayed list. Before : diff --git a/docs/team/tehopanas.md b/docs/team/tehopanas.md index 541e570db34..7f374bb9955 100644 --- a/docs/team/tehopanas.md +++ b/docs/team/tehopanas.md @@ -3,33 +3,50 @@ layout: default.md title: "TehOPanas's Project Portfolio Page" --- -### Project: AddressBook Level 3 +## Project EzContact -`to be added soon` +EzContact is a desktop app made for insurance agents to manage customer details, +optimized for usage via Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). +If you can type fast, EzContact can get your contact management tasks done faster than traditional GUI apps. Given below are my contributions to the project. +
+ +###### **New Feature**: +* Implemented `Insurance` feature that includes a new `insurance` command and a new attribute to the customers in our EzContact. + * What it does: User can assign or remove insurances associated with a customer on EzContact, by providing the name of the insurance. + * Justification: Given that our users are insurance agents, our users have to constantly keep track of what insurances each customer +currently holds, has interest in or plans to cancel. With this feature, our users can efficiently keep track of these information and make the +correct decisions and moves when interacting with their customers, subsequently increasing their efficiency and chances of securing deals. + * Highlights: Implementation of this feature requires in-depth analysis of the model component, different data structures to handle the information +and handling of user behaviours (e.g. duplicate, conflicting insurances). These analysis determine our design choices from all the possible alternatives. + + +###### **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=tehopanas&breakdown=false&sort=groupTitle%20dsc&sortWithin=title&since=2023-09-22&timeframe=commit&mergegroup=&groupSelect=groupByRepos) + +###### **Enhancements to existing features**: + * Improve validation of input value for customer's information (e.g. name, phone, email...) + * Change the definition of duplicate entries, allowing same name, but phone and email must be unique + * Make command words and prefixes case-insensitive, giving users more flexibility in using the product + +###### **Documentation**: +* User Guide: + * Added documentation for `insurance` feature + * Standardise formatting and layout of the entire User Guide + * Added introduction to the User Guide + * Added examples for `find` and `remark` feature + * Improve description for `find` feature's documentation + * Update the glossary + * Ensure that all parts of the documentation are consistent and correct +* Developer Guide: + * Added documentation for `Insurance` feature (i.e. Implementation, design choices, UML diagrams...) + * Standardise the formatting and layout for Developer Guide + * Standardise the format for Appendix: Effort, Appendix: Planned Enhancement,Appendix: Instruction for Manual Testing and Acknowledgement + * Added uses cases for `Insurance` feature + * Updated product scope to be focused on insurance agents + * Update and improve user stories to become more targeted towards insurance agents + +###### **Community**: +* `to be added soon` -* **New Feature**: `to be added soon` - * What it does: `to be added soon` - * Justification: `to be added soon` - * Highlights: `to be added soon` -* **New Feature**: `to be added soon` - -* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=tehopanas&breakdown=false&sort=groupTitle%20dsc&sortWithin=title&since=2023-09-22&timeframe=commit&mergegroup=&groupSelect=groupByRepos) - -* **Project management**: - * `to be added soon` - -* **Enhancements to existing features**: - * `to be added soon` - -* **Documentation**: - * User Guide: `to be added soon` - * Developer Guide: `to be added soon` - -* **Community**: - * `to be added soon` - -* **Tools**: - * `to be added soon` diff --git a/docs/team/yucongkoo.md b/docs/team/yucongkoo.md index 700f8f5f649..145147566f2 100644 --- a/docs/team/yucongkoo.md +++ b/docs/team/yucongkoo.md @@ -3,7 +3,7 @@ title: "Yucongkoo's Project Portfolio Page" --- -### Project: EzContact +## Project: EzContact EzContact is a desktop app made for insurance agents to manage customer details, optimized for usage via Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). @@ -11,56 +11,61 @@ If you can type fast, EzContact can get your contact management tasks done faste Given below are my contributions to the project.
-* **New Feature**: Added a `tag` command that allows users to update tags of a specific customer in EzContact. - * What it does: Users can update tags associated to a specific customer, by providing tags to add and tags to delete + +###### **New Feature**: + +* Added a `tag` command that allows users to update tags of a specific customer in EzContact. + * **What it does:** Users can update tags associated to a specific customer, by providing tags to add and tags to delete through the tag command. - * Justification: This feature significantly improved the product to make it a better fit to our target audience. + * **Justification:** This feature significantly improved the product to make it a better fit to our target audience. Through associating descriptive tags to a customer, our users will be more likely to remember their customers and will also be helpful in identifying their customers. - * Highlights: This enhancement required an in-depth analysis of design alternatives, from choice of data structure to hold the + * **Highlights:** This enhancement required an in-depth analysis of design alternatives, from choice of data structure to hold the tags, to handling of certain user behaviours such as handling of duplicate tags provided, conflicting tags provided and addition(deletion) of existing(non-existing). - * Credits: The association between the `Tag` class and `Person` class was originally implemented in AB-3, - there was not much modification done to this association. -
+ * **Credits:** The association between the `Tag` class and `Person` class was originally implemented in AB-3, + there was not much modification done to this association
-* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=yucongkoo&breakdown=false&sort=groupTitle%20dsc&sortWithin=title&since=2023-09-22&timeframe=commit&mergegroup=&groupSelect=groupByRepos)
+###### **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=yucongkoo&breakdown=false&sort=groupTitle%20dsc&sortWithin=title&since=2023-09-22&timeframe=commit&mergegroup=&groupSelect=groupByRepos)
-* **Project management**: - * Managed releases `v1.2` - `v1.3b` (4 releases) on GitHub - * Managed the issue tracker and ensured team members' timely delivery of deliverables and team tasks - * Distributed team tasks on a weekly basis. Hosted the features brainstorming session (Issues [#101](https://github.com/AY2324S1-CS2103T-W16-2/tp/issues/101), [141](https://github.com/AY2324S1-CS2103T-W16-2/tp/issues/141)) - * Managed bugs reported in PE-D, identified and filtered out duplicate bugs, while assigning each bug to the responsible developer. + +###### **Project management**: +* Managed releases `v1.2` - `v1.3b` (4 releases) on GitHub +* Managed the issue tracker and ensured team members' timely delivery of deliverables and team tasks +* Distributed team tasks on a weekly basis. Hosted the features brainstorming session (Issues [#101](https://github.com/AY2324S1-CS2103T-W16-2/tp/issues/101), [141](https://github.com/AY2324S1-CS2103T-W16-2/tp/issues/141)) +* Managed bugs reported in PE-D, identified and filtered out duplicate bugs, while assigning each bug to the responsible developer.
+
-* **Enhancements to existing features**: - * Made the address field of a customer optional (PRs [#68](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/68), [#83](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/83),[#102](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/102), [#197](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/197)) - * Refactored the `JsonAdaptedPerson` structure, introduced JsonAdaptedAttributes(`JsonAdaptedName`, `JsonAdaptedPhone` etc.) to facilitate - conversion between json format and model type(PR [#103](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/103)). Throughout the process of refactoring,discovered and solved a bug in original AB-3 conversion[PR [#204](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/204)]. - * Created UI componenet `FlowPaneLabel` used to display priority, tags and insurances associated to a customer (PRs [#162](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/162), [#208](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/208)). - * Updated the GUI color scheme and overall design (PR [#189](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/189)) - * Added the functionality of secondary prefix, that is every prefix now has a shorthand representation and a full name representation (PR [#238](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/238)) +###### **Enhancements to existing features**: +* Made the address field of a customer optional (PRs [#68](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/68), [#83](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/83),[#102](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/102), [#197](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/197)) +* Refactored the `JsonAdaptedPerson` structure, introduced JsonAdaptedAttributes(`JsonAdaptedName`, `JsonAdaptedPhone` etc.) to facilitate +conversion between json format and model type(PR [#103](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/103)). Throughout the process of refactoring,discovered and solved a bug in original AB-3 conversion[PR [#204](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/204)]. +* Created UI componenet `FlowPaneLabel` used to display priority, tags and insurances associated to a customer (PRs [#162](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/162), [#208](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/208)). +* Updated the GUI color scheme and overall design (PR [#189](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/189)) +* Added the functionality of secondary prefix, that is every prefix now has a shorthand representation and a full name representation (PR [#238](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/238))

-* **Documentation**: - * User Guide: - * Updated the `Quick Start` section and created the `UI Layout Description` section. - * Added documentation for the features `add`, `tag` and also the `Advanced Features` section. - * Drafted the overall structure and formatting for features section to be used across team members. - * Added the `Prefix to full-name prefix translation table` section. - * Tweaked the UG to make it pdf-version friendly. - * Developer Guide: - * Added the implementation details of the `tag` feature (including all the UML diagrams used in the explanation). - * Added the manual testing instructions for the `tag` feature. - * Identified and fixed a bug of UML diagram in the `Design - Model Component` section. + +###### **Documentation**: +* User Guide: + * Updated the `Quick Start` section and created the `UI Layout Description` section. + * Added documentation for the features `add`, `tag` and also the `Advanced Features` section. + * Drafted the overall structure and formatting for features section to be used across team members. + * Added the `Prefix to full-name prefix translation table` section. + * Tweaked the UG to make it pdf-version friendly. +* Developer Guide: + * Added the implementation details of the `tag` feature (including all the UML diagrams used in the explanation). + * Added the manual testing instructions for the `tag` feature. + * Identified and fixed a bug of UML diagram in the `Design - Model Component` section.

-* **Community**: - * PRs reviewed(with non-trivial review comments): [#77](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/77/files/c7bff1718ed1ad97f10a426a26ddbd38c7f9d88f), - [#110](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/110/files/21f6f6890e91e85acba38fe4b4c6924dc4dda5e8), - [#120-1](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/120/files/14f6a08e3141168016ea041cf8a1c440f69b3d2d), [#120-2](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/120/files/14f6a08e3141168016ea041cf8a1c440f69b3d2d), - [#119](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/119/files/737161d463230bae517c56e3e339fc9594c1565e), - [#148](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/148/files/140747789d7932a9f5f9382bd39d56577f6c1bd7) +###### **Community**: +* PRs reviewed(with non-trivial review comments): [#77](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/77/files/c7bff1718ed1ad97f10a426a26ddbd38c7f9d88f), +[#110](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/110/files/21f6f6890e91e85acba38fe4b4c6924dc4dda5e8), +[#120-1](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/120/files/14f6a08e3141168016ea041cf8a1c440f69b3d2d), [#120-2](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/120/files/14f6a08e3141168016ea041cf8a1c440f69b3d2d), +[#119](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/119/files/737161d463230bae517c56e3e339fc9594c1565e), +[#148](https://github.com/AY2324S1-CS2103T-W16-2/tp/pull/148/files/140747789d7932a9f5f9382bd39d56577f6c1bd7) * Reported bugs and suggestions for other teams in the class (examples can be found [here](https://github.com/yucongkoo/ped/issues))