ParvoCure Order System
Your team has been tasked with building a (ficticious) ordering system for a new cure for parvo. Your job is to make sure the system meets these requirements.
Your Specification
Build each of the following pieces of code
- Dog Age Calculator
Input
- Dog age in human terms
Output
- Dog age in dog terms
Requirements: Take the dog age in “human” terms and convert it to “dog” terms. It should be precise because it will be used in dosage calculations.
- Dog Medicine Dosage Calculator
Input
- Dog breed
- Dog age
- Dog weight
Output
- Dosage amount
Requirements: Can only order 1 dose per month. Dosage Amount = Base Dosage Amount from Breed to Base Dosage Map × Dog Weight + 5.
- Discount Calculator
Input
- Total_Cost
- coupons to be applied
- Dog_Owner_ID
Output
- Net_Cost
Requirements: Medicine Cost − Discounts = Net Cost. A dog owner can only use coupons once per month. Maximum of 2 coupons per transaction. Coupon options are BOGO, 10% Off, and $10 Off.
- Shipping Calculator
Input
- Dog_Owner_Location
Output
- Shipping Cost
Requirement: Shipping Fee = Net Cost + Shipping Fee from Shipping Fee by Delivery Location chart.
- Tax Calculator
Input
- Net Cost
- Dog_Owner_Location
Output
- Tax Amount
Requirement: Tax Amount = Net Cost × Tax Rate from Tax Rate by Delivery Location chart.
- Total Cost Calculator
Input
- Shipping Cost
- Tax Amount
- Net Cost
- Medicine Cost
- Discount Amount
Output
- Total_Cost
Requirement: Dosage Amount × X + Tax Amount + Net Cost as Gross Total Cost.
- Order History
Input
- Dog_Owner_ID
- Net Cost
- Tax Amount
- Shipping Cost
- Purchase Date
Output
- The same data
Requirement: Persist input.
Your team may ask the Product Manager exactly three clarification questions during the requirements window. Choose them carefully. After the window closes, unresolved details are your team's responsibility: make a reasonable assumption, record it, and test it.
What you submit
1. Requirements Risk Log
At least five risks, ambiguities, contradictions, or missing inputs. Mark the three you chose to ask about.
2. Design
A small architecture diagram plus one file/class per subsystem. You may refactor the starter interfaces when a product decision requires it.
3. Implementation
A working ordering pipeline.
4. Tests
Unit tests for each subsystem and integration tests that exercise the full checkout path.