diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-04-09 18:33:11 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-04-09 18:33:11 +0200 |
commit | ba420a8d2588e56e61832b11496a8a51f08099a8 (patch) | |
tree | c9585c826ca785d58b667891ab28b6996c4a9be6 | |
parent | 80c8a960dba8d1d28954768031396723ca4d1f04 (diff) | |
download | docs-ba420a8d2588e56e61832b11496a8a51f08099a8.tar.gz docs-ba420a8d2588e56e61832b11496a8a51f08099a8.tar.bz2 docs-ba420a8d2588e56e61832b11496a8a51f08099a8.zip |
work invoicing for DD37
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | design-documents/037-wallet-transactions-lifecycle.rst | 30 | ||||
-rw-r--r-- | transaction-common-states.dot | 10 | ||||
-rw-r--r-- | transaction-pull-credit-states.dot | 65 | ||||
-rw-r--r-- | transaction-withdrawal-states.dot | 4 |
5 files changed, 100 insertions, 13 deletions
@@ -71,6 +71,8 @@ transaction-push-debit-states.png: transaction-push-debit-states.dot dot -Tpng transaction-push-debit-states.dot > transaction-push-debit-states.png transaction-push-credit-states.png: transaction-push-credit-states.dot dot -Tpng transaction-push-credit-states.dot > transaction-push-credit-states.png +transaction-pull-credit-states.png: transaction-pull-credit-states.dot + dot -Tpng transaction-pull-credit-states.dot > transaction-pull-credit-states.png coin.png: coin.dot dot -Tpng coin.dot > coin.png deposit.png: deposit.dot @@ -78,7 +80,7 @@ deposit.png: deposit.dot reserve.png: reserve.dot dot -Tpng reserve.dot > reserve.png -diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png +diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png transaction-pull-credit-states.png # The html-linked builder does not support caching, so we diff --git a/design-documents/037-wallet-transactions-lifecycle.rst b/design-documents/037-wallet-transactions-lifecycle.rst index 58fd2c14..2e4f0858 100644 --- a/design-documents/037-wallet-transactions-lifecycle.rst +++ b/design-documents/037-wallet-transactions-lifecycle.rst @@ -109,6 +109,11 @@ actively abort the transaction (e.g. to avoid losing money) and puts it in an ``failed`` state. May result in an ultimate loss of funds (beyond fees) to the user and thus requires additional consent. +``[action:cancel]``: Like an ``abort``, except that it results in the deletion +of the transaction state as there is nothing useful to be kept around. Should +be used instead of ``delete`` if there was no transaction history state yet +that could be deleted. + ``[action:delete]``: Deleting a transaction completely deletes the transaction from the database. Depending on the type of transaction, some of the other data *resulting* from the transaction might still survive deletion. For @@ -121,8 +126,9 @@ state. May result in an ultimate loss of funds (beyond fees) to the user and thus requires additional consent. -Whether aborting, deleting or suspending are possible depends on the -transaction type, and usually only one of the three choices should be offered. +Whether aborting, cancelling, deleting or suspending are possible depends on +the transaction type, and usually only one of the four choices should be +offered. .. image:: ../transaction-common-states.png @@ -172,7 +178,7 @@ Transaction Type: Withdrawal * ``[processed-success] => pending(bank-confirming)`` * ``[processed-error] => deleted``: We show a transient warning. - * ``[action:abort] => aborting(bank-to-wallet)`` + * ``[action:cancel] => aborting(bank-to-wallet)`` * ``pending(bank-confirming)`` @@ -190,7 +196,7 @@ Transaction Type: Withdrawal * ``[bank-poll-success] => pending(exchange-wait-reserve)`` * ``[bank-poll-denied] => deleted``: We show a transient message that the operation was denied in the bank. * ``[exchange-poll-success] => pending(withdrawing-coins)`` - * ``[action:abort] => aborting(wallet-to-bank)`` + * ``[action:cancel] => aborting(wallet-to-bank)`` * ``aborting(wallet-to-bank)`` @@ -952,10 +958,8 @@ TODO: Also specify variant where account reserve needs to be created / funded fi * ``pending(purse-create)`` * ``[process-success] => pending(qr-ready)``: The wallet has created the purse. - * ``[process-failure] => aborted``: The purse creation failed. - * ``[action:delete] => deleted``: The user aborted the operation. - FIXME(CG): May want to go into ``aborting(delete-purse)`` instead to make - sure the purse is not left behind. + * ``[process-failure] => deleted``: The purse creation failed. We only show a transient error. + * ``[action:cancel] => deleted``: The user aborted the operation. * ``pending(qr-ready)`` @@ -998,6 +1002,13 @@ TODO: Also specify variant where account reserve needs to be created / funded fi * ``[processed-aml] => pending(aml)`` * ``[action:suspend] => suspended(withdraw)`` +* ``suspended(withdraw)`` + + The user suspended a withdraw operation. + + * ``[action:resume] => pending(withdraw)`` + * ``[action:force-delete] => deleted`` + * ``pending(kyc)`` The user must supply KYC information before withdrawing can continue. @@ -1041,6 +1052,9 @@ TODO: Also specify variant where account reserve needs to be created / funded fi * ``deleted`` +.. image:: ../transaction-pull-credit-states.png + :width: 800 + Transaction Type: Peer Pull Debit --------------------------------- diff --git a/transaction-common-states.dot b/transaction-common-states.dot index 3cbee213..170ace7a 100644 --- a/transaction-common-states.dot +++ b/transaction-common-states.dot @@ -7,6 +7,7 @@ digraph G { aborting[label="aborting"]; failed[label="failed", shape="box"]; suspended[label="suspended", shape="box"]; + deleted[label="deleted", shape="box"]; subgraph { rank = same; pending;suspended; @@ -19,10 +20,15 @@ digraph G { initial->pending; pending->suspended [color="blue",label="suspend"]; suspended->pending [color="blue",label="resume"]; + suspended->deleted [color="blue",label="force-delete"]; pending->done [color="green",label="success"]; - pending->failed [color="red",label="error"]; + pending->failed [color="red",label="failure"]; pending->aborting [color="blue",label="abort"]; pending->aborted [color="blue",label="abort"]; + pending->deleted [color="blue",label="cancel"]; aborting->aborted [color="green",label="success"]; - aborting->failed [color="red",label="error"]; + aborting->failed [color="red",label="failure"]; + failed->deleted [color="blue",label="delete"]; + aborted->deleted [color="blue",label="delete"]; + done->deleted [color="blue",label="delete"]; } diff --git a/transaction-pull-credit-states.dot b/transaction-pull-credit-states.dot new file mode 100644 index 00000000..82d02abd --- /dev/null +++ b/transaction-pull-credit-states.dot @@ -0,0 +1,65 @@ +digraph G { + + initial[label="", shape="circle"]; + pending_create[label="pending(purse-create)"]; + pending_qr[label="pending(qr-ready)", shape="box"]; + aborting_delete[label="aborting(delete-purse)"]; + pending_withdraw[label="pending(withdraw)"]; + suspended_withdraw[label="suspended(withdraw)", shape="box"]; + pending_kyc[label="pending(kyc)"]; + suspended_kyc[label="suspended(kyc)", shape="box"]; + pending_aml[label="pending(aml)"]; + suspended_aml[label="suspended(aml)", shape="box"]; + + aborted[label="aborted", shape="box"]; + failed[label="failed", shape="box"]; + done[label="done", shape="box"]; + deleted[label="deleted", shape="box"]; + +// subgraph { +// rank = same; pending_withdraw; failed; +// } + + initial->pending_create [color="blue", label="form data"]; + + pending_create->pending_qr; + pending_create->deleted [color="red", label="failure"]; + pending_create->deleted [color="blue", label="cancel"]; + + pending_qr->aborted [label="timeout"]; + pending_qr->aborting_delete [color="blue", label="abort"]; + pending_qr->pending_withdraw; + pending_qr->aborting_delete [color="red", label="poll-failure"]; + + aborting_delete->pending_withdraw [color="red", label="failure:already-merged"]; + aborting_delete->aborted; + aborting_delete->aborted [color="red", label="failure:other"]; + aborting_delete->aborted [color="blue", label="force-abort"]; + + aborted->deleted [color="blue", label="delete"]; + + pending_withdraw->done; + pending_withdraw->failed [color="red", label="failure"]; + pending_withdraw->pending_kyc [label="kyc-required"]; + pending_withdraw->pending_aml [label="aml-required"]; + pending_withdraw->suspended_withdraw [color="blue", label="suspend"]; + + suspended_withdraw->pending_withdraw [color="blue", label="resume"]; + suspended_withdraw->deleted [color="blue", label="force-delete"]; + + pending_kyc->suspended_kyc [color="blue", label="suspend"]; + pending_kyc->pending_withdraw [color="purple", label="poll-success"]; + + suspended_kyc->pending_kyc [color="blue", label="resume"]; + suspended_kyc->deleted [color="blue", label="force-delete"]; + + pending_aml->suspended_aml [color="blue", label="suspend"]; + pending_aml->pending_withdraw [color="purple", label="poll-success"]; + + suspended_aml->pending_aml [color="blue", label="resume"]; + suspended_aml->deleted [color="blue", label="force-delete"]; + + failed->deleted [color="blue", label="delete"]; + done->deleted [color="blue", label="delete"]; + +} diff --git a/transaction-withdrawal-states.dot b/transaction-withdrawal-states.dot index 95c8fda8..7b59be71 100644 --- a/transaction-withdrawal-states.dot +++ b/transaction-withdrawal-states.dot @@ -30,12 +30,12 @@ digraph G { initial->pending_brr [color="blue", label="bank integrated withdraw"]; initial->pending_ewr [color="blue", xlabel="manual withdraw"]; pending_brr->pending_bc; - pending_brr->aborting_w2b [color="blue", label="abort"]; + pending_brr->aborting_w2b [color="blue", label="cancel"]; pending_brr->deleted [color="red", label="error"]; pending_bc->pending_ewr [label="bank-poll:\napproved"]; pending_bc->pending_wc [xlabel="exchange-poll:\nreserve ready",style="dotted"]; - pending_bc->aborting_w2b [color="blue", label="abort"]; + pending_bc->aborting_w2b [color="blue", label="cancel"]; pending_bc->deleted [label="bank-poll:\ndenied"]; pending_ewr->pending_wc [label="exchange-poll:\nreserve ready"]; |