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:
Kral
2026-10-05 13:35:54 +02:00
parent 1c4667a0fc
commit 13360292dd
781 changed files with 50211 additions and 22 deletions

View File

@@ -0,0 +1,63 @@
# 1. Goal
A sawmill plans the cutting of logs. The sawmill receives the log lists of two
forest districts. A planning program calls one service that combines the two
lists into one list of logs that are ready for cutting. The program also needs
the number of logs and the total length for each district.
# 2. Open questions
None.
# 3. Context
- The class {{P}}LOG_MERGER does not exist. Create it in package $TMP.
- A log has a log number, a district, a length in centimetres and a diameter in
centimetres.
- A log number identifies a log. The same log number can occur more than once in
one list and in both lists.
- The caller gives the log lists. The class does not read a database table.
# 4. Contract
- Create the class {{P}}LOG_MERGER in package $TMP.
- The class is public and final. It has a public constructor without parameters.
- Public types of the class:
- TY_LOG_NO: character, length 10.
- TY_DISTRICT: character, length 4.
- TY_LOG: structure with the components LOG_NO (TY_LOG_NO), DISTRICT
(TY_DISTRICT), LENGTH_CM (integer) and DIAMETER_CM (integer).
- TT_LOG: standard table of TY_LOG with an empty key.
- TY_DISTRICT_STAT: structure with the components DISTRICT (TY_DISTRICT),
LOG_QTY (integer) and TOTAL_LENGTH_CM (integer).
- TT_DISTRICT_STAT: standard table of TY_DISTRICT_STAT with an empty key.
- Public methods:
- COMBINE, importing IT_FIRST (TT_LOG) and IT_SECOND (TT_LOG), returning
RT_RESULT (TT_LOG).
- COUNT_BY_DISTRICT, importing IT_LOG (TT_LOG), returning RT_STAT
(TT_DISTRICT_STAT).
- Do not add other public methods.
# 5. Business rules
COMBINE:
1. Build a merged list. Read IT_FIRST first and IT_SECOND second. Add a log to
the merged list only if its log number is not yet in the merged list. Ignore
every later log with the same log number.
2. Remove every log from the merged list with LENGTH_CM below 200 or with
DIAMETER_CM below 20.
3. Sort the result by LOG_NO in ascending order.
4. The result has no two logs with the same log number.
COUNT_BY_DISTRICT:
1. The result has one row for each district that occurs in IT_LOG.
2. LOG_QTY is the number of logs of the district.
3. TOTAL_LENGTH_CM is the sum of LENGTH_CM of the logs of the district.
4. Sort the result by DISTRICT in ascending order.
5. An empty input gives an empty result.
# 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.
- Out of scope: do not create other objects.
# 7. Acceptance
- The class is active and has no syntax error.
- The hidden tests pass.
- Write your own ABAP Unit tests for the class.