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:
97
tasks_gen/train/G1024/spec.md
Normal file
97
tasks_gen/train/G1024/spec.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# 1. Goal
|
||||
A tour operator checks a holiday booking before it confirms the booking. The
|
||||
booking desk calls one check method for each booking. The check method reports
|
||||
each problem as a class-based exception. Each exception carries a message and
|
||||
the values that caused the problem.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- Class {{P}}CX_HOLIDAY_ERROR exists in package $TMP. It is active. It is
|
||||
abstract and inherits from cx_static_check. It has the public read-only
|
||||
attribute mv_message TYPE string and a public constructor with the importing
|
||||
parameter iv_message TYPE string. The constructor sets mv_message.
|
||||
- The tour operator offers five destinations. The destination code and the
|
||||
maximum number of travellers of each destination are:
|
||||
ALPS 6, CRETE 4, KYOTO 8, LAPLAND 5, SAFARI 7.
|
||||
- The booking desk passes the booking and the current date to the check method.
|
||||
- A booking has a destination code, a number of travellers, a number of nights,
|
||||
and a departure date.
|
||||
|
||||
# 4. Contract
|
||||
Create these five classes in package $TMP. Do not change {{P}}CX_HOLIDAY_ERROR.
|
||||
|
||||
1. Class {{P}}HOLIDAY_CHECKER
|
||||
- The class is public and final. It has a public constructor without
|
||||
parameters.
|
||||
- Public type ty_dest_code, type string.
|
||||
- Public type ty_booking, a structure with these components:
|
||||
dest_code TYPE ty_dest_code, travellers TYPE i, nights TYPE i,
|
||||
departure TYPE d.
|
||||
- Public method check with this signature:
|
||||
IMPORTING is_booking TYPE ty_booking
|
||||
iv_today TYPE d
|
||||
RAISING {{P}}CX_HOLIDAY_ERROR
|
||||
- Do not add other public methods.
|
||||
|
||||
2. Class {{P}}CX_UNKNOWN_DEST
|
||||
- The class is final and inherits from {{P}}CX_HOLIDAY_ERROR.
|
||||
- Public read-only attribute mv_dest TYPE string.
|
||||
- Public constructor with the importing parameter iv_dest TYPE string.
|
||||
- mv_message is 'Destination is not offered'.
|
||||
- mv_dest holds the normalized destination code. The value has no leading or
|
||||
trailing blanks.
|
||||
|
||||
3. Class {{P}}CX_BAD_TRAVELLERS
|
||||
- The class is final and inherits from {{P}}CX_HOLIDAY_ERROR.
|
||||
- Public read-only attributes mv_travellers TYPE i and mv_max TYPE i.
|
||||
- Public constructor with the importing parameters iv_travellers TYPE i and
|
||||
iv_max TYPE i.
|
||||
- mv_message is 'Number of travellers is not allowed'.
|
||||
|
||||
4. Class {{P}}CX_BAD_NIGHTS
|
||||
- The class is final and inherits from {{P}}CX_HOLIDAY_ERROR.
|
||||
- Public read-only attribute mv_nights TYPE i.
|
||||
- Public constructor with the importing parameter iv_nights TYPE i.
|
||||
- mv_message is 'Number of nights is not allowed'.
|
||||
|
||||
5. Class {{P}}CX_BAD_DEPARTURE
|
||||
- The class is final and inherits from {{P}}CX_HOLIDAY_ERROR.
|
||||
- Public read-only attributes mv_departure TYPE d and mv_earliest TYPE d.
|
||||
- Public constructor with the importing parameters iv_departure TYPE d and
|
||||
iv_earliest TYPE d.
|
||||
- mv_message is 'Departure date is too early'.
|
||||
|
||||
# 5. Business rules
|
||||
The method check applies these rules in this sequence. The method raises the
|
||||
exception of the first rule that fails. If no rule fails, the method returns
|
||||
without an exception.
|
||||
|
||||
1. Normalize the destination code: remove all spaces and convert all letters to
|
||||
upper case.
|
||||
2. The normalized code must be ALPS, CRETE, KYOTO, LAPLAND, or SAFARI. If it is
|
||||
not, raise {{P}}CX_UNKNOWN_DEST. Pass the normalized code in iv_dest.
|
||||
3. The number of travellers must be 1 or more. It must not be more than the
|
||||
maximum number of travellers of the destination. If a value is not correct,
|
||||
raise {{P}}CX_BAD_TRAVELLERS. Pass the number of travellers in iv_travellers
|
||||
and the maximum of the destination in iv_max.
|
||||
4. The number of nights must be 2 or more. It must not be more than 28. If a
|
||||
value is not correct, raise {{P}}CX_BAD_NIGHTS. Pass the number of nights in
|
||||
iv_nights.
|
||||
5. The departure date must be at least 14 days after iv_today. If it is not,
|
||||
raise {{P}}CX_BAD_DEPARTURE. Pass the departure date in iv_departure and the
|
||||
earliest possible date (iv_today plus 14 days) in iv_earliest.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: SAP_BASIS 816 (ABAP Platform 2025).
|
||||
- Coding standards: Clean ABAP. Methods below 40 statements. No global
|
||||
variables. No comment that restates the code.
|
||||
- Out of scope: do not change {{P}}CX_HOLIDAY_ERROR. Do not create a database
|
||||
table, a CDS view entity, a function module, or a report. Do not change the
|
||||
signature of check.
|
||||
|
||||
# 7. Acceptance
|
||||
- All five classes are active and have no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write your own ABAP Unit tests for {{P}}HOLIDAY_CHECKER.
|
||||
Reference in New Issue
Block a user