Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Specification

...

    1. Verify the validity of access token
      1. in case of error return 401 ('Access denied')
    2. Check user scope merge_request:review in order to perform this action
      1. in case of error generate 401 response ('Invalid scopes')

Verify user and role

Extract from token:

...

  1. Check allowed status transitions: 
    1. from NEW to POSTPONE/SPLIT/MERGE/TRASH
    2. from POSTPONE to SPLIT/MERGE/TRASH
      1. in case of other transitions return CONFLICT error - 'Incorrect updated status'


Response

Update  manual_merge_requests a record by ID


column
value
updated_atnow()
status$status
comment$comment


Add a record to audit log

After status was changed  add new record to audit_log

field
value
idgenerate UUID
actor_id$user_id
resource'manual_merge_process'
resource_id$manual_merge_process.id
changeset{status:$status}
inserted_atDATETIME


Check amount of decisions

In case status was changed to final  SPLIT/MERGE/TRASH recalculate how many decisions on this merge_request was made by each status (qty).

Compare calculated qty to decision_amount. If qty=decision_amount:

  1. update manual_merge_candidates


Field 
Value
status$PROCESSED
updated_atnow()
updated_by$user_id
decision$status (by calculated qty)


in case final decision is MERGE it should be checked whether deactivated person is a slave/master person in  any other merge candidate.

a) fetch all records from manual_merge_candidates where person_id or master_person_id=$person_id 

b) for such record update  


Field 
Value
status$PROCESSED
updated_atnow()
updated_by$user_id
decision$MERGE
status_reasonauto_merge


2. Add even to terminate declaration and

dectivate

deactivate person by person_id to Kafka in case final decision is MERGE