Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
55
tasks_gen/train/G1010/spec.md
Normal file
55
tasks_gen/train/G1010/spec.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 1. Goal
|
||||
A mobile phone repair shop prices repair orders. The checkout program of the
|
||||
shop calls the class {{P}}PHONE_REPAIR_PRICER for each order and prints the
|
||||
price that the class returns. The class works, but its code is legacy code: one
|
||||
long method, repeated blocks and prices that are hidden in the code. Refactor
|
||||
the class in place. The behavior must stay the same.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The class {{P}}PHONE_REPAIR_PRICER exists in package $TMP and is active. Its
|
||||
source code is the legacy code.
|
||||
- The checkout program calls the public method CALCULATE_PRICE. It passes the
|
||||
device class, the repair type, the express flag and the warranty flag, and it
|
||||
prints the returned price.
|
||||
- The class is in production. Its public interface must not change.
|
||||
- The class has no tests.
|
||||
|
||||
# 4. Contract
|
||||
- Refactor the class {{P}}PHONE_REPAIR_PRICER in package $TMP. Keep the name.
|
||||
Do not create a second class.
|
||||
- The class stays public and final. The constructor stays public and has no
|
||||
parameters.
|
||||
- The public section stays as it is:
|
||||
- the type TY_DEVICE (character 6), the type TY_REPAIR (character 8) and the
|
||||
type TY_PRICE (packed number, length 8, 2 decimals);
|
||||
- the constants C_DEVICE_BASIC, C_DEVICE_MID and C_DEVICE_HIGH of type
|
||||
TY_DEVICE;
|
||||
- the constants C_REPAIR_SCREEN, C_REPAIR_BATTERY, C_REPAIR_BOARD,
|
||||
C_REPAIR_CAMERA and C_REPAIR_PORT of type TY_REPAIR;
|
||||
- the method CALCULATE_PRICE with the importing parameters IV_DEVICE
|
||||
(TY_DEVICE), IV_REPAIR (TY_REPAIR), IV_EXPRESS (ABAP_BOOL) and IV_WARRANTY
|
||||
(ABAP_BOOL), and the returning parameter RV_PRICE (TY_PRICE).
|
||||
- Do not add other public methods, types, constants or attributes.
|
||||
|
||||
# 5. Business rules
|
||||
- The behavior of the class must not change. Every combination of the four
|
||||
input parameters must return the same price as before.
|
||||
- The rules are in the legacy source code of the class. Read the legacy code.
|
||||
Keep every rule and keep the sequence of the steps.
|
||||
- Do not add rules and do not remove rules.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: ABAP Platform 2025 (SAP_BASIS 816).
|
||||
- Coding standards: Clean ABAP. Methods below 40 statements. No global
|
||||
variables. No comment that restates the code. Replace the prices and the
|
||||
factors with named constants. Remove the repeated blocks. Use names that say
|
||||
what the data and the methods mean.
|
||||
- Out of scope: do not change the public interface of the class.
|
||||
|
||||
# 7. Acceptance
|
||||
- The class is active and has no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write your own ABAP Unit tests for the class.
|
||||
Reference in New Issue
Block a user