Snapshot: new training tasks (balanced generation), docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
93
tasks_gen/train/G1918/spec.md
Normal file
93
tasks_gen/train/G1918/spec.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# 1. Goal
|
||||
The order desk of a florist prices bouquet orders. The shop counter, the web
|
||||
shop and the telephone desk must all use the same contract. Create the interface
|
||||
{{P}}IF_BOUQUET_PRICING in package $TMP. The interface fixes the types, the
|
||||
constants and the methods of the contract.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The interface {{P}}IF_BOUQUET_PRICING does not exist yet.
|
||||
- The interface is in package $TMP.
|
||||
- Every pricing module of the florist implements this interface. The pricing
|
||||
modules are not part of this task.
|
||||
- The hidden tests use a class that implements the interface. That class only
|
||||
compiles when every type, every constant and every method signature matches.
|
||||
|
||||
# 4. Contract
|
||||
- Create the interface {{P}}IF_BOUQUET_PRICING in package $TMP.
|
||||
- The interface is global and public.
|
||||
- The interface contains the types, the constants and the methods of section 5.
|
||||
- Do not add other components to the interface.
|
||||
|
||||
# 5. Business rules
|
||||
## 5.1 Types
|
||||
The interface defines these five types.
|
||||
| Type | Definition |
|
||||
| --- | --- |
|
||||
| ty_size | TYPE c LENGTH 1 |
|
||||
| ty_zone | TYPE c LENGTH 2 |
|
||||
| ty_reason | TYPE c LENGTH 12 |
|
||||
| ty_amount | TYPE p LENGTH 8 DECIMALS 2 |
|
||||
| ty_stems | TYPE i |
|
||||
|
||||
## 5.2 Constants
|
||||
The interface defines these five constant structures.
|
||||
|
||||
c_size has the type ty_size. The components are:
|
||||
- small = 'S'. A small bouquet.
|
||||
- medium = 'M'. A medium bouquet.
|
||||
- large = 'L'. A large bouquet.
|
||||
|
||||
c_zone has the type ty_zone. The components are:
|
||||
- town = 'T1'. A delivery inside the town.
|
||||
- nearby = 'N1'. A delivery in the near area.
|
||||
- far = 'F1'. A delivery in the far area.
|
||||
|
||||
c_reason has the type ty_reason. The components are:
|
||||
- ok = 'OK'.
|
||||
- no_stems = 'NO_STEMS'.
|
||||
- too_many = 'TOO_MANY'.
|
||||
- bad_size = 'BAD_SIZE'.
|
||||
- bad_zone = 'BAD_ZONE'.
|
||||
|
||||
c_limit has the type ty_stems. The components are:
|
||||
- min_stems = 5.
|
||||
- max_stems = 60.
|
||||
|
||||
c_fee has the type ty_amount. The components are:
|
||||
- vase = '4.50'. The fee for a vase.
|
||||
- town = '0.00'. The delivery fee inside the town.
|
||||
- nearby = '6.00'. The delivery fee in the near area.
|
||||
- far = '12.00'. The delivery fee in the far area.
|
||||
|
||||
## 5.3 Methods
|
||||
The interface defines these three methods.
|
||||
|
||||
1. check_order
|
||||
IMPORTING iv_size TYPE ty_size
|
||||
iv_stems TYPE ty_stems
|
||||
iv_zone TYPE ty_zone
|
||||
RETURNING VALUE(rv_reason) TYPE ty_reason.
|
||||
|
||||
2. delivery_fee
|
||||
IMPORTING iv_zone TYPE ty_zone
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
|
||||
3. bouquet_price
|
||||
IMPORTING iv_size TYPE ty_size
|
||||
iv_stems TYPE ty_stems
|
||||
iv_vase TYPE abap_bool
|
||||
RETURNING VALUE(rv_price) TYPE ty_amount.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: 7.58.
|
||||
- Coding standards: Clean ABAP. No comment that restates the code.
|
||||
- Out of scope: no other repository object. Do not change other objects of
|
||||
package $TMP.
|
||||
|
||||
# 7. Acceptance
|
||||
- The interface {{P}}IF_BOUQUET_PRICING is active and has no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write your own ABAP Unit tests in a global test class in package $TMP.
|
||||
Reference in New Issue
Block a user