Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
febe0f2
CROSSLINK-264 ask-retry action
adamdickmeiss May 29, 2026
ac9170a
RETRY_REQUESTED state
adamdickmeiss May 29, 2026
d2f057b
Merge branch 'main' into CROSSLINK-264-ask-retry-action
adamdickmeiss Jun 1, 2026
67708e4
Update state model for retry
adamdickmeiss Jun 1, 2026
fa8eb8c
Potential fix for pull request finding
adamdickmeiss Jun 1, 2026
920a937
Potential fix for pull request finding
adamdickmeiss Jun 1, 2026
ddb2333
update returnables.json
adamdickmeiss Jun 1, 2026
4f1c545
Implement ask-retry
adamdickmeiss Jun 2, 2026
e7bf570
Create retry-conditonal event
adamdickmeiss Jun 2, 2026
524a26a
illmock: RETRY:NOTFOUNDASCITED
adamdickmeiss Jun 2, 2026
9529072
reject-retry
adamdickmeiss Jun 2, 2026
0b7be58
illmock: sets DeliveryInfo.ItemId on RETRY:NOTFOUNDASCITED
adamdickmeiss Jun 2, 2026
d1f9912
acceptRetry begin
adamdickmeiss Jun 2, 2026
95586a0
Add {next,prev}_req_id
adamdickmeiss Jun 2, 2026
cb56c77
Merge remote-tracking branch 'origin/main' into CROSSLINK-264-ask-ret…
adamdickmeiss Jun 4, 2026
d6da9bb
Clone patronrequest WIP
adamdickmeiss Jun 8, 2026
217bfb7
lint
adamdickmeiss Jun 8, 2026
7544ce8
Potential fix for pull request finding
adamdickmeiss Jun 8, 2026
eb34de0
Potential fix for pull request finding
adamdickmeiss Jun 8, 2026
3bc091f
Potential fix for pull request finding
adamdickmeiss Jun 8, 2026
3f13e33
Potential fix for pull request finding
adamdickmeiss Jun 8, 2026
fdeb194
has_internal_note
adamdickmeiss Jun 8, 2026
317fcb3
update
adamdickmeiss Jun 8, 2026
a78c2a1
Merge remote-tracking branch 'origin/main' into CROSSLINK-264-ask-ret…
adamdickmeiss Jun 8, 2026
ff241ea
migrations update
adamdickmeiss Jun 8, 2026
846bac8
retry_item_id persisted
adamdickmeiss Jun 8, 2026
975772f
Merge branch 'main' into CROSSLINK-264-ask-retry-action
adamdickmeiss Jun 12, 2026
614664c
migrations merge
adamdickmeiss Jun 12, 2026
b281c10
retryItemId in API structure
adamdickmeiss Jun 14, 2026
780e65a
Set new patron request fields one by one
adamdickmeiss Jun 14, 2026
776c9c2
unfilled as last; fix SupplierUniqueRecordId overwrite
adamdickmeiss Jun 15, 2026
d742ac3
Revert go.work.sum
adamdickmeiss Jun 15, 2026
6cbd997
Use definition
adamdickmeiss Jun 15, 2026
a13ff15
ItemID
adamdickmeiss Jun 15, 2026
aa1678c
Remove Info log
adamdickmeiss Jun 15, 2026
48216b6
retry_bib_info
adamdickmeiss Jun 17, 2026
7db5fe9
Unused function
adamdickmeiss Jun 17, 2026
da4432d
Merge remote-tracking branch 'origin/main' into CROSSLINK-264-ask-ret…
adamdickmeiss Jun 19, 2026
4bb42cf
Merge remote-tracking branch 'origin/main' into CROSSLINK-264-ask-ret…
adamdickmeiss Jun 19, 2026
7c11f1e
Merge remote-tracking branch 'origin/main' into CROSSLINK-264-ask-ret…
adamdickmeiss Jun 19, 2026
8b06ced
Create as new; run actions
adamdickmeiss Jun 19, 2026
5fb2369
check err
adamdickmeiss Jun 19, 2026
ee67aa8
one transaction
adamdickmeiss Jun 19, 2026
4063416
slightly simpler
adamdickmeiss Jun 19, 2026
2906253
Wait longer for Postgres containers to start
adamdickmeiss Jun 19, 2026
22d8fcd
IllRequest headers align
adamdickmeiss Jun 19, 2026
a8fd1f6
rename
adamdickmeiss Jun 19, 2026
7a46c1c
CP
adamdickmeiss Jun 19, 2026
7d40955
CP
adamdickmeiss Jun 19, 2026
0fbc59f
ask-retry also in WILL_SUPPLY state
adamdickmeiss Jun 19, 2026
c959dc0
Failure on original PR when actions fail on retry PR
adamdickmeiss Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions broker/patron_request/service/action_mapping_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ func TestNewReturnableActionMapping(t *testing.T) {
BorrowerStateReceived: {{actionName: BorrowerActionCheckOut}},
BorrowerStateCheckedOut: {{actionName: BorrowerActionCheckIn}},
BorrowerStateCheckedIn: {{actionName: BorrowerActionShipReturn}},
BorrowerStateRetryPending: {{actionName: BorrowerActionAcceptRetry}, {actionName: BorrowerActionRejectRetry}},
}

lenderStateActionMapping := map[pr_db.PatronRequestState][]PatronRequestAction{
LenderStateNew: {{actionName: LenderActionValidate, auto: true}},
LenderStateValidated: {{actionName: LenderActionWillSupply, auto: true}, {actionName: LenderActionCannotSupply}, {actionName: LenderActionAddCondition}},
LenderStateValidated: {{actionName: LenderActionWillSupply, auto: true}, {actionName: LenderActionCannotSupply}, {actionName: LenderActionAddCondition}, {actionName: LenderActionAskRetry}},
LenderStateWillSupply: {{actionName: LenderActionAddCondition}, {actionName: LenderActionShip}, {actionName: LenderActionCannotSupply}},
LenderStateConditionPending: {{actionName: LenderActionAddCondition}, {actionName: LenderActionCannotSupply}},
LenderStateConditionAccepted: {{actionName: LenderActionAddCondition}, {actionName: LenderActionShip}, {actionName: LenderActionCannotSupply}},
Expand Down Expand Up @@ -165,7 +166,7 @@ func mapCompare(t *testing.T, map1 map[pr_db.PatronRequestState][]PatronRequestA
for stateName := range map1 {
listOne := map1[stateName]
listTwo := map2[stateName]
assert.Equal(t, len(listOne), len(listTwo))
assert.Equal(t, len(listOne), len(listTwo), "State %s has different number of actions in the two maps", stateName)
for i := range listOne {
assert.Equal(t, listOne[i].actionName, listTwo[i].actionName)
assert.Equal(t, listOne[i].auto, listTwo[i].auto)
Expand Down
51 changes: 38 additions & 13 deletions broker/patron_request/service/statemodel_capabilities.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ const (
BorrowerStateCompleted pr_db.PatronRequestState = "COMPLETED"
BorrowerStateCancelled pr_db.PatronRequestState = "CANCELLED"
BorrowerStateUnfilled pr_db.PatronRequestState = "UNFILLED"
BorrowerStateRetryPending pr_db.PatronRequestState = "RETRY_PENDING"
BorrowerStateRetryAccepted pr_db.PatronRequestState = "RETRY_ACCEPTED"
BorrowerStateRetryRejected pr_db.PatronRequestState = "RETRY_REJECTED"
LenderStateNew pr_db.PatronRequestState = "NEW"
LenderStateValidated pr_db.PatronRequestState = "VALIDATED"
LenderStateWillSupply pr_db.PatronRequestState = "WILL_SUPPLY"
Expand All @@ -48,6 +51,7 @@ const (
LenderStateCompleted pr_db.PatronRequestState = "COMPLETED"
LenderStateCancelled pr_db.PatronRequestState = "CANCELLED"
LenderStateUnfilled pr_db.PatronRequestState = "UNFILLED"
LenderStateCompletedWithRetry pr_db.PatronRequestState = "COMPLETED_WITH_RETRY"
)

const (
Expand All @@ -60,6 +64,8 @@ const (
BorrowerActionCheckOut pr_db.PatronRequestAction = "check-out"
BorrowerActionCheckIn pr_db.PatronRequestAction = "check-in"
BorrowerActionShipReturn pr_db.PatronRequestAction = "ship-return"
BorrowerActionAcceptRetry pr_db.PatronRequestAction = "accept-retry"
BorrowerActionRejectRetry pr_db.PatronRequestAction = "reject-retry"

LenderActionValidate pr_db.PatronRequestAction = "validate"
LenderActionWillSupply pr_db.PatronRequestAction = "will-supply"
Expand All @@ -69,22 +75,24 @@ const (
LenderActionShip pr_db.PatronRequestAction = "ship"
LenderActionMarkReceived pr_db.PatronRequestAction = "mark-received"
LenderActionAcceptCancel pr_db.PatronRequestAction = "accept-cancel"
LenderActionAskRetry pr_db.PatronRequestAction = "ask-retry"
)
Comment thread
adamdickmeiss marked this conversation as resolved.

const (
SupplierExpectToSupply MessageEvent = "expect-to-supply"
SupplierWillSupply MessageEvent = "will-supply"
SupplierWillSupplyCond MessageEvent = "will-supply-conditional"
SupplierLoaned MessageEvent = "loaned"
SupplierCompleted MessageEvent = "completed"
SupplierUnfilled MessageEvent = "unfilled"
SupplierCancelAccepted MessageEvent = "cancel-accepted"
SupplierCancelRejected MessageEvent = "cancel-rejected"
RequesterCancelRequest MessageEvent = "cancel-request"
RequesterReceived MessageEvent = "received"
RequesterShippedReturn MessageEvent = "shipped-return"
RequesterCondAccepted MessageEvent = "conditions-accepted"
RequesterCondRejected MessageEvent = "condition-rejected"
SupplierExpectToSupply MessageEvent = "expect-to-supply"
SupplierWillSupply MessageEvent = "will-supply"
SupplierWillSupplyCond MessageEvent = "will-supply-conditional"
SupplierLoaned MessageEvent = "loaned"
SupplierCompleted MessageEvent = "completed"
SupplierUnfilled MessageEvent = "unfilled"
SupplierCancelAccepted MessageEvent = "cancel-accepted"
SupplierCancelRejected MessageEvent = "cancel-rejected"
RequesterCancelRequest MessageEvent = "cancel-request"
RequesterReceived MessageEvent = "received"
RequesterShippedReturn MessageEvent = "shipped-return"
RequesterCondAccepted MessageEvent = "conditions-accepted"
RequesterCondRejected MessageEvent = "condition-rejected"
SupplierRetryConditional MessageEvent = "retry-conditional"
)
Comment thread
adamdickmeiss marked this conversation as resolved.

func requesterBuiltInStates() []string {
Expand All @@ -104,6 +112,9 @@ func requesterBuiltInStates() []string {
string(BorrowerStateCompleted),
string(BorrowerStateCancelled),
string(BorrowerStateUnfilled),
string(BorrowerStateRetryAccepted),
string(BorrowerStateRetryRejected),
string(BorrowerStateRetryPending),
})
}

Expand All @@ -121,6 +132,7 @@ func supplierBuiltInStates() []string {
string(LenderStateCompleted),
string(LenderStateCancelled),
string(LenderStateUnfilled),
string(LenderStateCompletedWithRetry),
})
}

Expand Down Expand Up @@ -162,6 +174,14 @@ func requesterBuiltInActions() []proapi.ActionCapability {
Name: string(BorrowerActionShipReturn),
Parameters: []string{},
},
{
Name: string(BorrowerActionAcceptRetry),
Parameters: []string{},
},
{
Name: string(BorrowerActionRejectRetry),
Parameters: []string{},
},
}
}

Expand Down Expand Up @@ -211,6 +231,10 @@ func supplierBuiltInActions() []proapi.ActionCapability {
Name: string(LenderActionAcceptCancel),
Parameters: []string{},
},
{
Name: string(LenderActionAskRetry),
Parameters: []string{},
},
Comment thread
adamdickmeiss marked this conversation as resolved.
}
}

Expand All @@ -234,6 +258,7 @@ func supplierBuiltInMessageEvents() []string {
string(SupplierUnfilled),
string(SupplierCancelAccepted),
string(SupplierCancelRejected),
string(SupplierRetryConditional),
})
}

Expand Down
62 changes: 62 additions & 0 deletions broker/patron_request/service/statemodels/returnables.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@
"name": "unfilled",
"desc": "Supplier cannot supply (ISO18626 Unfilled)",
"transition": "UNFILLED"
},
{
"name": "retry-conditional",
"desc": "Received retry from supplier",
"transition": "RETRY_PENDING"
}
]
},
Expand Down Expand Up @@ -96,6 +101,11 @@
"desc": "Supplier will supply with conditions (ISO18626 WillSupply with conditions)",
"transition": "CONDITION_PENDING"
},
{
"name": "retry-conditional",
"desc": "Received retry from supplier",
"transition": "RETRY_PENDING"
},
{
"name": "loaned",
"desc": "Supplier shipped the item (ISO18626 Loaned)",
Expand Down Expand Up @@ -144,6 +154,30 @@
}
]
},
{
"name": "RETRY_PENDING",
"display": "Retry Pending",
"desc": "Received supplier retry request with new conditions after initial conditions were rejected",
"side": "REQUESTER",
"primaryAction": "accept-retry",
"needsAttention": true,
"actions": [
Comment thread
adamdickmeiss marked this conversation as resolved.
{
"name": "accept-retry",
"desc": "Requester accepts supplier retry request",
"transitions": {
"success": "RETRY_ACCEPTED"
}
},
{
"name": "reject-retry",
"desc": "Requester rejects supplier retry request",
"transitions": {
"success": "RETRY_REJECTED"
}
}
]
},
{
"name": "WILL_SUPPLY",
"display": "Will Supply",
Expand Down Expand Up @@ -293,6 +327,20 @@
"side": "REQUESTER",
"terminal": true
},
{
"name": "RETRY_ACCEPTED",
"display": "Retry Accepted",
"desc": "Requester accepted supplier retry request with new metadata",
"side": "REQUESTER",
"terminal": true
},
Comment thread
adamdickmeiss marked this conversation as resolved.
{
"name": "RETRY_REJECTED",
"display": "Retry Rejected",
"desc": "Requester rejected supplier retry request",
"side": "REQUESTER",
"terminal": true
Comment thread
adamdickmeiss marked this conversation as resolved.
},
Comment thread
adamdickmeiss marked this conversation as resolved.
{
"name": "NEW",
"display": "New",
Expand Down Expand Up @@ -338,6 +386,13 @@
"transitions": {
"success": "CONDITION_PENDING"
}
},
{
"name": "ask-retry",
"desc": "Ask requester to retry with new ISO18626 metadata",
"transitions": {
"success": "COMPLETED_WITH_RETRY"
}
}
],
"events": [
Expand Down Expand Up @@ -547,6 +602,13 @@
"desc": "After manual cannot-supply or automatically if auto-responder is on",
"side": "SUPPLIER",
"terminal": true
},
{
"name": "COMPLETED_WITH_RETRY",
"display": "Completed with Retry",
"desc": "After sending retry to requester",
"side": "SUPPLIER",
"terminal": true
}
]
}
44 changes: 44 additions & 0 deletions misc/returnables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ states:
- name: unfilled
desc: Supplier cannot supply (ISO18626 Unfilled)
transition: UNFILLED
- name: retry-conditional
desc: Received retry from supplier
transition: RETRY_PENDING
Comment thread
adamdickmeiss marked this conversation as resolved.

- name: SUPPLIER_LOCATED
display: Supplier Located
Expand All @@ -66,6 +69,9 @@ states:
- name: will-supply-conditional
desc: Supplier will supply with conditions (ISO18626 WillSupply with conditions)
transition: CONDITION_PENDING
- name: retry-conditional
desc: Received retry from supplier
transition: RETRY_PENDING
- name: loaned
desc: Supplier shipped the item (ISO18626 Loaned)
transition: SHIPPED
Expand Down Expand Up @@ -96,6 +102,22 @@ states:
desc: Supplier cannot supply (ISO18626 Unfilled)
transition: UNFILLED

- name: RETRY_PENDING
display: Retry Pending
desc: Received supplier retry request with new conditions after initial conditions were rejected
Comment thread
adamdickmeiss marked this conversation as resolved.
Outdated
side: REQUESTER
primaryAction: accept-retry
needsAttention: true
actions:
Comment thread
adamdickmeiss marked this conversation as resolved.
- name: accept-retry
desc: Requester accepts supplier retry request
transitions:
success: RETRY_ACCEPTED
- name: reject-retry
desc: Requester rejects supplier retry request
transitions:
success: RETRY_REJECTED
Comment thread
adamdickmeiss marked this conversation as resolved.

- name: WILL_SUPPLY
display: Will Supply
desc: Received ISO18626 WillSupply (without condition)
Expand Down Expand Up @@ -200,6 +222,18 @@ states:
side: REQUESTER
terminal: true

- name: RETRY_ACCEPTED
display: Retry Accepted
desc: Requester accepted supplier retry request with new metadata
side: REQUESTER
terminal: true
Comment thread
adamdickmeiss marked this conversation as resolved.

- name: RETRY_REJECTED
display: Retry Rejected
desc: Requester rejected supplier retry request
side: REQUESTER
terminal: true
Comment thread
adamdickmeiss marked this conversation as resolved.

# Supplier-side
- name: NEW
display: New
Expand Down Expand Up @@ -232,6 +266,10 @@ states:
desc: Indicate will supply with conditions and send ISO18626 WillSupply
transitions:
success: CONDITION_PENDING
- name: ask-retry
desc: Ask requester to retry with new ISO18626 metadata
transitions:
success: COMPLETED_WITH_RETRY
Comment thread
adamdickmeiss marked this conversation as resolved.
events:
- name: cancel-request
desc: Requester sent ISO18626 Cancel
Expand Down Expand Up @@ -369,3 +407,9 @@ states:
desc: After manual cannot-supply or automatically if auto-responder is on
side: SUPPLIER
terminal: true

- name: COMPLETED_WITH_RETRY
display: Completed with Retry
desc: After sending retry to requester
side: SUPPLIER
terminal: true
Loading