CI / test (push) Successful in 54s
Add the framework submodule and the accepted planning documents: Business Case, Stakeholder Analysis, Project Plan, three milestones, review records RC-001 to RC-006 and the traceability matrix. Set up the project skeleton for MIL-001: pyproject.toml (Python >=3.13, no runtime dependencies, pytest/ruff/mypy as dev extra), src/coffee_machine/constants.py, a constants consistency test, Doxyfile and a CI workflow that runs ruff, mypy and pytest. Task: MIL-001#1 Task: MIL-001#2 Task: MIL-001#3 Task: MIL-001#4 Task: MIL-001#5 Closes #1 Closes #2 Closes #3 Closes #4 Closes #5
3.4 KiB
3.4 KiB
Phase 2: Coffee Machine Program
Metadata
| Key | Value |
|---|---|
| ID | MIL-002 |
| CrossReference | BC-001, SA-001, PP-001 |
| Language | en |
| Domain | it |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | pending |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Accepted after RC-004 (Go) | pending |
Purpose
Decide whether the coffee machine program works as the assignment describes and is covered by tests.
Deliverable
Python modules menu, coffee_maker, money_machine and main under src/coffee_machine/, with Doxygen comments, plus pytest tests under tests/.
Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
|---|---|---|---|
| 1 | Menu.get_items and Menu.find_drink exist and return the menu text and the matching drink or nothing |
Met | Not met |
| 2 | CoffeeMaker.report, is_resource_sufficient and make_coffee exist and behave as in the assignment |
Met | Not met |
| 3 | MoneyMachine.report and make_payment exist and behave as in the assignment |
Met | Not met |
| 4 | The main loop supports drink choice, report and off and checks resources before payment |
Met | Not met |
| 5 | pytest passes and constants come from constants.py only |
Met | Not met |
| 6 | Code review against qc-programming-python has a Go review record |
Met | Not met |
Dependencies
| Depends on | Reason |
|---|---|
| MIL-001 | Needs the skeleton, configuration and CI |
Traceability
| Business Case objective / KPI / user story | Reference |
|---|---|
| Objectives 1 and 2; success criteria 1 and 4 | BC-001 |
Ownership
| Role | Stakeholder ID (SA) |
|---|---|
| Owner | S01 |
| Approving reviewer | S01 |
Target Date
2026-10-14 — after Phase 1.
Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|---|---|---|---|---|
| 1 | Implement Menu and MenuItem | Create MenuItem (name, cost, ingredients) and Menu with get_items (drink names for the prompt) and find_drink (returns the item or None for an unknown name), reading data from constants.py. |
No | |
| 2 | Implement CoffeeMaker | Create CoffeeMaker holding the resources, with report, is_resource_sufficient (prints which ingredient is short) and make_coffee (deducts ingredients). |
No | |
| 3 | Implement MoneyMachine | Create MoneyMachine with report (profit), and make_payment that processes coins, gives change, adds profit and refunds when money is insufficient. |
No | |
| 4 | Implement main loop | Create the entry point that keeps the machine running, accepts a drink name, report and off, and checks resources before taking payment before making coffee. The course supplies the design, so no separate use case is modelled (see PP-001 Open Issues). |
No | |
| 5 | Write pytest tests | Test each class and the main loop (with patched input) for sufficient and insufficient resources, exact, excess and short payment, unknown drink, report and off. |
No | |
| 6 | Review code against qc-programming-python | Review src/ and tests/ against the Python checklist and record the result as an RC before the pull request. |
No |