diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e28cb63d719..54624874919 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -45,6 +45,7 @@ * [Updating the status of an internship application](#updating-the-status-of-an-internship-application) * [Saving data](#saving-data) * [Exit HireMe](#exit-hireme-application) + * [**Appendix: Planned Enhancements**](#appendix-planned-enhancements) @@ -69,7 +70,7 @@ Given below is a quick overview of main components and how they interact with ea **Main components of the architecture** -**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down. +**`Main`** (consisting of classes [`Main`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/Main.java) and [`MainApp`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/MainApp.java)) is in charge of the app launch and shut down. * At app launch, it initializes the other components in the correct sequence, and connects them up with each other. * At shut down, it shuts down the other components and invokes cleanup methods where necessary. @@ -103,13 +104,13 @@ The sections below give more details of each component. ### UI component -The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java). +The **API** of this component is specified in [`Ui.java`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/ui/Ui.java). The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `InternshipApplicationListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. -The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml). +The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/resources/view/MainWindow.fxml). The `UI` component, @@ -126,7 +127,7 @@ The `ChartWindow` component is shown when you execute a chart command. It contai ### Logic component -**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) +**API** : [`Logic.java`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/logic/Logic.java) Here's a (partial) class diagram of the `Logic` component: @@ -151,7 +152,7 @@ How the parsing works:

### Model component -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) +**API** : [`Model.java`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/model/Model.java) @@ -167,7 +168,7 @@ The `Model` component: ### Storage component -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) +**API** : [`Storage.java`](https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master/src/main/java/seedu/hireme/storage/Storage.java) @@ -414,14 +415,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu **System**: HireMe application -**Use Case: UC01 - Add a new internship entry** +**Use Case: UC01 - Add a new internship application** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to add a new internship entry. -2. HireMe creates a new entry. +1. The user requests to add a new internship application. +2. HireMe creates a new internship application. Use case ends. @@ -447,20 +448,21 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC02 - List all internship entries** +**Use Case: UC02 - List all internship applications** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to list all internship entries. -2. HireMe shows all internship entries. +1. The user requests to list all internship applications. +2. HireMe shows all internship applications. Use case ends. **Extensions** -* 1a. There are no internship entries. +* 1a. There are no internship applications. + * 1a1. HireMe shows an empty list. Use case ends. @@ -468,14 +470,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC03 - Delete an internship entry** +**Use Case: UC03 - Delete an internship application** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to delete a particular internship entry. -2. HireMe deletes the entry. +1. The user requests to delete a particular internship application. +2. HireMe deletes the application. Use case ends. @@ -505,7 +507,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu * 1a. User enters an invalid number of parameters. * 1a1. HireMe shows an error message - Use case ends. + Use case ends. * 1b. User enters an invalid order. @@ -530,14 +532,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu 1. The user requests to find internship applications by entering a search pattern (e.g., `/find Goo`). 2. HireMe searches for internship applications with company names that contain words starting with the specified pattern. -3. HireMe displays a list of all matching internship applications. +3. HireMe shows a list of all matching internship applications. Use case ends. **Extensions** * 1a. The user provides an empty search pattern. - * 1a1. HireMe displays an error message that explains how to use the find command and what parameters are valid. + * 1a1. HireMe shows an error message. Use case ends. @@ -558,14 +560,13 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu 1. The user requests to change the status of an internship application by specifying an index and the desired status (e.g., `/accept 2`, `/reject 3`, `/pending 4`). 2. HireMe updates the status of the specified internship application to `ACCEPTED`, `REJECTED`, or `PENDING`. -3. HireMe displays a confirmation message indicating that the status has been successfully updated. Use case ends. **Extensions** * 1a. The user provides an invalid index (e.g., non-positive or non-integer value or integer out of range). - * 1a1. HireMe displays an error message that explains how to use the status command and what parameters are valid. + * 1a1. HireMe shows an error message. Use case ends. @@ -599,38 +600,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC08 - Auto-save the current state of the internship list** - -**Actor**: User - -**MSS (Main Success Scenario)** - -1. The user performs an action that changes the internship list (e.g., adding, editing, or deleting an entry). -2. The system automatically saves the updated internship list to `hireme.json`. -3. The file is saved successfully without displaying a confirmation message. - - Use case ends. - -**Extensions** - -* 1a. The file cannot be saved due to an error. - * 1a1. The system shows the error message: "Error! Unable to save file." - * 1a2. The system retries the auto-save after a short delay. - * 1a3. If the save operation still fails, the system logs the error and informs the user that changes might not have been saved. - - Use case ends. - -

-**System**: HireMe application - -**Use Case: UC09 - List all internship entries** +**Use Case: UC08 - List all internship applications** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to list all internship entries. -2. HireMe shows all internship entries. +1. The user requests to list all internship applications. +2. HireMe shows all internship applications. Use case ends. @@ -645,14 +622,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC10 - Summarise all internship entries** +**Use Case: UC09 - Summarise all internship applications** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to view a summary of all internship entries. -2. HireMe shows a summary chart of all internship entries. +1. The user requests to view a summary of all internship applications. +2. HireMe shows a summary chart of all internship applications. Use case ends. @@ -667,14 +644,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC11 - Filter internship entries by status** +**Use Case: UC10 - Filter internship applications by status** **Actor**: User **MSS (Main Success Scenario)** -1. The user provides a status to filter internship entries. -2. HireMe shows all internship entries with the given status. +1. The user provides a status to filter internship applications. +2. HireMe shows all internship applications with the given status. Use case ends. @@ -688,14 +665,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC12 - Clear all internship entries** +**Use Case: UC11 - Clear all internship applications** **Actor**: User **MSS (Main Success Scenario)** -1. The user requests to clear all internship entries. -2. HireMe clears all internship entries. +1. The user requests to clear all internship applications. +2. HireMe clears all internship applications. Use case ends. @@ -710,7 +687,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu

**System**: HireMe application -**Use Case: UC13 - Exit HireMe application** +**Use Case: UC12 - Exit HireMe application** **Actor**: User @@ -737,9 +714,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (futu 2. **Scalability**: The application should handle **at least 500 internship applications** without any performance issues (e.g., lag or slowness). 3. **Cross-Platform Compatibility**: The application should run on any operating system that has **Java 17** installed. 4. **User Accessibility**: The system should be usable by a **novice** with no prior experience using a CLI application, without much difficulty. -5. **Project Scheduling**: The project should follow a **weekly delivery schedule**, releasing a set of features every week. -6. **Data Persistence**: The application should ensure that data **persists** after the user closes the application. -7. **Data Integrity**: Upon reopening the application, the **loaded data** should be identical to the **last saved state** and should not be volatile. +5. **Data Persistence**: The application should ensure that data **persists** after the user closes the application. +6. **Data Integrity**: Upon reopening the application, the **loaded data** should be identical to the **last saved state** and should not be volatile.

@@ -1136,18 +1112,17 @@ testers are expected to do more *exploratory* testing. The team consists of 5 members. Given below are enhancements planned for future versions.
-1. **Make 'Role' and 'Company Name' in the `add` command less restrictive:** +1. **Make 'Role' and 'Company Name' in the `add` command less restrictive** - Current behaviour: The current validator is too restrictive on what is allowed as `Role` and `Company Name`. Valid roles such as: C++ Developer, C# Developer, R&D Specialist are currently flagged as invalid by the validator. Similarly, valid company names such as: A*STAR, SK-II, Yahoo!, John's Bakery are also flagged as invalid by the validator.

- Planned enhancement: We plan to loosen the restrictions for roles and company names by adjusting the regular expressions allowed.

- Justification: This allows the command to be more inclusive of the possible roles and company names in the real world.

-2. **Improve consistency in `find` feature:** Currently, while we prevent special characters in the `Company Name` (such as ~\`!@#), -we did not prevent the same characters from being used as keywords for the `find` feature. This leads to an inconsistent user experience, -since these characters would never be found in company names. We plan to be more consistent, -and check whether the keywords provided to the `find` command are valid characters that are allowed in `Company Name`.
+2. **Improve consistency in `find` feature** + - Current behaviour: The find feature currently allows special characters (e.g., ~\`!@#) to be used as keywords, despite these characters being disallowed in Company Name. This inconsistency can lead to a confusing user experience, as searches with these special characters will not yield any results.

+ - Planned enhancement: Implement validation in the find feature to restrict keywords to only valid characters that are allowed in Company Name. This will ensure that users can only search using characters that are present in actual company names.

+ - Justification: By enforcing consistency between allowed characters in `Company Name` and the `find` feature, we improve the user experience by preventing ineffective searches and aligning expectations for valid search terms.

-3. **Make error message for `add` command more specific:** -

+3. **Make error message for `add` command more specific** - Current behaviour: The error message provided when the user inputs an invalid `add` command is too generic. For example, `/add n/Google r/SWE d/01/01/24` will provide an error message stating `Invalid command format!`. It does not provide additional information to the user, on why the command is invalid. The error message could be more specific to state the email field is missing. @@ -1157,24 +1132,42 @@ on why the command is invalid. The error message could be more specific to state - Justification: In doing so, users will have a clearer idea on what they did wrong when they typed in the command and they will be able to easily fix the issue. This enables the users to have a more pleasant experience when using HireMe.

-4. **Improve UI to deal with long texts:**
- - Current behaviour: The current application does not allow the user to scroll horizontally across the internship application card. Hence, very long text will be cut off and use are unable to see the full text. - - Planned enhancement: We plan to allow horizontal scrolling for an internship application card when there are long texts. - - Justification: This lets the user see the full text in application. -
+4. **Improve UI to deal with long texts** + - Current behaviour: The current application does not allow the user to scroll horizontally across the internship application card. Hence, very long text will be cut off and use are unable to see the full text.

+ - Planned enhancement: We plan to allow horizontal scrolling for an internship application card when there are long texts.

+ - Justification: This lets the user see the full text in application.

-5. **Improve the validator for `email`**

+5. **Improve the validator for `email`** - Current behaviour: Although the current email validator accepts most valid email addresses, there are still certain valid email addresses (e.g. `faceb__k@fb.com.sg`) that it might incorrectly flag out as invalid addresses.

- Planned enhancement: A fix for the email validator to accept valid emails with more combinations of special characters.

- Justification: Company emails with uncommon combinations of special characters in their email addresses will be considered invalid and hence, users will not be able to include such internship application in the HireMe tracking system.

-6. **User confirmation for `clear` command**

+6. **User confirmation for `clear` command** - Current behaviour: The `clear` command clears all internship applications without asking for user confirmation.

- Planned enhancement: HireMe to prompt the user for confirmation on `clear` command. If the user confirms, then all internship applications will be cleared. Otherwise, no action will be taken and the internship applications remain.

- Justification: HireMe does not support any form of undo action and hence, there is no safety mechanism against accidental clearing of internship applications by the user. By having a confirmation, it ensures that `clear` is only carried out deliberately.

-7. **Backup file for storage**

+7. **Improve error messaging for `status` commands** + - Current behaviour: The `/accept`, `/pending`, and `/reject` commands currently return the same generic error message when there’s an error, despite each command serving a distinct purpose. This shared error message does not provide clarity on which specific command failed, potentially confusing the user.

+ - Planned enhancement: Separate error messages for each command (`/accept`, `/pending`, and `/reject`) within the status command to clarify which specific action encountered an error. This will help users understand and correct command-specific errors more effectively.

+ - Justification: By providing distinct error messages for each command, we improve the user experience by making error feedback more specific and actionable. Users will be able to identify errors related to each command easily, reducing potential confusion and enhancing usability.

+ +8. **Backup file for storage** - Current behaviour: Internship applications data is stored in a single data file `hireme.json`.

- Planned enhancement: A backup file that replicates the data in `hireme.json`.

- Justification: Having only a single data file to store internship applications data means having a single point of failure when the data in corrupted or lost. A backup file that synchronously replicates the data in `hireme.json` ensures data redundancy.

+ +9. **Improve chart UI for empty statuses** + - Current behaviour: With multiple empty statuses (e.g. zero internship applications with `PENDING`/`ACCEPTED`/`REJECTED`), only one of the status labels will be shown.

+ - Planned enhancement: Remove chart labels for empty statuses.

+ - Justification: This ensures a consistent and user-friendly chart view which makes it easier for users to interpret the chart.

+ +10. **Fix popup window crash when on full-screen** + - Current behaviour: When the Java application is in full screen and the help or chart window popup is closed, the entire Java application crashes. + For example, when the Java application is in full screen, `/help` or `/chart` will open up a help or a chart window respectively. Closing the popup window when the application is in full screen will cause the entire Java application to crash. +

+ - Planned enhancement: We plan to improve by ensuring that the `help` and `chart` displays open on the main window of the application instead of as a popup. Users can then go back to the list by typing `/list`. +

+ - Justification: This ensures that the application will not suddenly crash when the user is trying to use it for a smoother user experience. +

diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md index a2b394fe928..0dd563eaabf 100644 --- a/docs/_markbind/layouts/default.md +++ b/docs/_markbind/layouts/default.md @@ -42,6 +42,7 @@ * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops) * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements) * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing) + * [Appendix: Planned Enhancements]({{ baseUrl }}/DeveloperGuide.html#appendix-planned-enhancements) * [About Us]({{ baseUrl }}/AboutUs.html)