Skip to content

Commit

Permalink
Merge pull request #152 from 1rbg/master
Browse files Browse the repository at this point in the history
v1.4 Fix broken links
  • Loading branch information
jxunze authored Apr 15, 2024
2 parents c2fd9a2 + 62e3191 commit 359a526
Showing 1 changed file with 56 additions and 97 deletions.
153 changes: 56 additions & 97 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,49 @@ title: Developer Guide
---

* Table of Contents
* [**Acknowledgements**](#Acknowledgements)
* [**Setting up, getting started**](#Setting-up-getting-started)
* [**Design**](#Design)
* [Architecture](#Architecture)
* [UI component](#UI-component)
* [Logic component](#Logic-component)
* [Model component](#Model-component)
* [Storage component](#Storage-component)
* [Common classes](#Common-classes)
* [**Implementation**](#Implementation)
* [Acknowledgements](#acknowledgements)
* [Setting up, getting started](#setting-up-getting-started)
* [Design](#design)
* [Architecture](#architecture)
* [UI component](#ui-component)
* [Logic component](#logic-component)
* [Model component](#model-component)
* [Storage component](#storage-component)
* [Common classes](#common-classes)
* [Implementation](#implementation)
* [\[Implemented\] Schedule feature](#implemented-schedule-feature)
* [Proposed Implementation](#proposed-implementation)
* [\[Implemented\] Contact archiving](#implemented-contact-archiving)
* [Proposed Implementation](#proposed-implementation)
* [\[Proposed\] Undo/redo feature](#proposed-undoredo-feature)
* [Proposed Implementation](#proposed-implementation)
* [Design considerations:](#design-considerations)
* [**Documentation, logging, testing, configuration, dev-ops**](#documentation-logging-testing-configuration-dev-ops)
* [**Appendix: Requirements**](#appendix-requirements)
* [Documentation, logging, testing, configuration, dev-ops](#documentation-logging-testing-configuration-dev-ops)
* [Appendix: Requirements](#appendix-requirements)
* [Product scope](#product-scope)
* [User stories](#user-stories)
* [Use cases](#use-cases)
* [Non-Functional Requirements](#non-functional-requirements)
* [Glossary](#glossary)
* [**Appendix: Instructions for manual testing**](#appendix-instructions-for-manual-testing)
* [Appendix: Instructions for manual testing](#appendix-instructions-for-manual-testing)
* [Launch and shutdown](#launch-and-shutdown)
* [Deleting a person](#deleting-a-person)
* [Saving data](#saving-data)

--------------------------------------------------------------------------------------------------------------------

## **Acknowledgements**
## Acknowledgements

* Calendar for Schedule feature adapted from: https://gist.github.com/Da9el00/f4340927b8ba6941eb7562a3306e93b6

--------------------------------------------------------------------------------------------------------------------

## **Setting up, getting started**
## Setting up, getting started

Refer to the guide [_Setting up and getting started_](SettingUp.md).

--------------------------------------------------------------------------------------------------------------------

## **Design**
## Design

<div markdown="span" class="alert alert-primary">

Expand Down Expand Up @@ -218,7 +217,7 @@ Classes used by multiple components are in the `seedu.addressbook.commons` packa

--------------------------------------------------------------------------------------------------------------------

## **Implementation**
## Implementation

This section describes some noteworthy details on how certain features are implemented.

Expand Down Expand Up @@ -385,7 +384,7 @@ _{more aspects and alternatives to be added}_

--------------------------------------------------------------------------------------------------------------------

## **Documentation, logging, testing, configuration, dev-ops**
## Documentation, logging, testing, configuration, dev-ops

* [Documentation guide](Documentation.md)
* [Testing guide](Testing.md)
Expand All @@ -395,39 +394,43 @@ _{more aspects and alternatives to be added}_

--------------------------------------------------------------------------------------------------------------------

## **Appendix: Requirements**
## Appendix: Requirements

### Product scope

**Target user profile**:

* has a need to manage a significant number of part-time employee contacts and banking details
* has a need to track and schedule part-time employee work hours
* has a need to tabulate payroll for part-time employees with different pay rates
* has a need to manage a significant number of employee contacts and banking details
* has a need to track employee worked hours
* has a need to tabulate payroll for employees with different pay rates
* prefer desktop apps over other types
* can type fast
* prefers typing to mouse interactions
* is reasonably comfortable using CLI apps

**Value proposition**: manage part-time employee salary disbursement faster than a typical exel sheet with manual calculations.
**Value proposition**: manage employee salary disbursement faster than a typical exel sheet with manual calculations.

### User stories

Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`

| Priority | As a …​ | I want to …​ | So that I can…​ |
|-----------|----------------------------------------------------------------|----------------------------------------------|------------------------------------------------------------------------------|
| `* *` | new user | see a tutorial and usage instructions | familiarise with FnBuddy' features |
| `* * *` | user | add an employee contact with banking details | quickly access the employee's banking details for salary disbursement |
| `* * *` | user | delete an employee contact | remove entries that I no longer need |
| `* * *` | user | view all employee contacts | |
| `* *` | user | schedule an employee to work on a certain date | keep track of the employee's work schedule |
| `* *` | user with human error tendencies | retrieve an employee's calculated pay | avoid paying out an incorrect salary amount |
| `* *` | user | edit an employee contact details | keep the employee's details up to date |
| `*` | user with many employees | find employees contacts by name | locate the employee contact easily |
| `*` | user with potential returning employees | archive an employee contact | have the option to un-archive the employee's details when they return easily |
| `*` | user with many employees | filter employee contacts by tag(s) | identify which employee(s) are of that employment type |

| Priority | As a …​ | I want to …​ | So that I can…​ |
|----------|----------------------------------------------------------------|----------------------------------------------------|-----------------------------------------------------------------------|
| `* *` | new user | see a tutorial and usage instructions | familiarise with FnBuddy' features |
| `* * *` | user | add an employee contact with banking details | quickly access the employee's banking details for salary disbursement |
| `* * *` | user | delete an employee contact | remove entries that I no longer need |
| `* * *` | user | view all employee contacts | |
| `* *` | user | track an employee's weekly worked hours | access it for employee salary calculation |
| `* *` | user handling employees with a variety of employment contracts | tag an employee contact with their employment type | retrieve the salary rate of the employee |
| `* *` | user with human error tendencies | retrieve an employee's calculated pay | avoid paying out an incorrect salary amount |
| `* *` | user | edit an employee contact details | keep the employee's details up to date |
| `* *` | user | schedule my employee shifts | plan workload more easily |
| `*` | user with many employees | sort employees contacts by name | locate the employee contact easily |
| `*` | user with potential returning employees | archive an employee contact | reopen the employee's details when they return easily |
| `*` | user with forgetfulness | search for contacts by keyword | find contacts without needing to provide their full name |
| `*` | user with many employees | filter employee contacts by tag(s) | identify which employee(s) are of that employment type |

*{More to be added}*

### Use cases

Expand Down Expand Up @@ -493,14 +496,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

Use case ends

**Use case: Schedule employee's shift**
**Use case: Track employee's work hours**

**MSS**

1. User requests to add employee shift on specified date
2. FnBuddy requests employee contact and shift date
1. User requests to add employee's work hours
2. FnBuddy requests employee contact and work hours
3. User provides required information
4. FnBuddy adds employee shift on specified date
4. FnBuddy tracks the employee's work hours

Use case ends.

Expand All @@ -509,56 +512,17 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
* 2a. The contact book is empty.
* 2a1. FnBuddy shows an error message.

Use case ends.


* 3a. The given contact information or shift date is invalid.
* 3a1. FnBuddy shows an error message.

Use case resumes at step 2.


* 3b. The given shift date is in the past or too far in the future.
* 3b1. FnBuddy adds employee shift on specified date but will not be reflected in the UI calendar.

Use case ends.


* 3c. The given shift date is already occupied by given contact.
* 3c1. No visible changes are made to the UI calendar.

Use case ends.

**Use case: Retrieve calculated employees' payroll**

**MSS**

1. User requests to retrieve payroll of all employees within specified date range
2. FnBuddy requests start and end date
3. User provides required information
4. FnBuddy calculates all employees' payroll within specified date range
5. FnBuddy displays list of all affected employees' payroll

Use case ends.

**Extensions**
Use case ends

* 1a. The contact book is empty.
* 1a1. FnBuddy shows an error message.

Use case ends.

* 3a. The given contact information or working hours is invalid.

* 3a. The given start and end date is invalid.
* 3a1. FnBuddy shows an error message.

Use case resumes at step 2.


* 3b. No employees have worked within the specified date range.
* 3b1. FnBuddy shows an empty contact list.

Use case ends.
*{More to be added}*

### Non-Functional Requirements

Expand All @@ -573,13 +537,12 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

* **Mainstream OS**: Windows, Linux, Unix, MacOS
* **Private contact detail**: A contact detail that is not meant to be shared with others
* **Bank Details**: Bank name followed by account number for salary disbursement, the valid digit length of the
account number is dependent on the bank it is registered to (eg. POSB accounts have 9 digits, OCBC accounts have 10
digits).
* **Worked hours**: The number of hours an employee has spent working in a month
* **Bank Details**: Account number for salary disbursement, 7-11 digits in length.

--------------------------------------------------------------------------------------------------------------------

## **Appendix: Instructions for manual testing**
## Appendix: Instructions for manual testing

Given below are instructions to test the app manually.

Expand All @@ -604,25 +567,21 @@ testers are expected to do more *exploratory* testing.
1. Re-launch the app by double-clicking the jar file.<br>
Expected: The most recent window size and location is retained.

1. _{ more test cases …​ }_

### Deleting a person

1. Deleting a person while all persons are being shown

1. Prerequisites: List all persons using the `list all` command. Multiple persons in the list.
1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.

1. Test case: `delete 98765432`<br>
Expected: Contact with `phone` field = "98765432" is deleted from the list. Details of the deleted contact shown in the status message.
1. Test case: `delete 1`<br>
Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.
Timestamp in the status bar is updated.

1. Test case: `delete 00000000`<br>
1. Test case: `delete 0`<br>
Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.

1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)<br>
Expected: Similar to previous.

### Saving data

1. Dealing with missing/corrupted data files

1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_

0 comments on commit 359a526

Please sign in to comment.