Versions Compared

Key

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

Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
printablefalse

...

  • A phone number can only be associated with a single customer, which will be the first one to inform the number on the platform

  • There isn’t a simple way to delete the link between a user and a phone number recorded in a delivery order. One possibility is allowing customer support to remove the link via the support tool if it is outdated.

Implementation Proposal

...

Search by phone

The search will be implemented in the users service API, the NPM user package (represented as intl-packages below) exposes the client that admin app will use to make this request.

...

Create phone lookup records

The creation of the lookup records can be either synchronous or asynchronous, the two diagrams below details the different approaches:

asynchronous: since the commit order operation is already slow, this option minimizes possibly making it slower. [PREFERRED]

...

synchronous: simpler implementation

...

POC

The code below creates lookup records if they don’t exist when the order is committed.

...

  1. Commit an order with delivery.dropoff.phoneNumber +222222

    image-20240118-155822.png

  2. Validate record in database

    image-20240118-160259.png

  3. Searching phone in support tool

    image-20240118-160837.png

  4. Customer details

    image-20240118-160929.png

Solution 2 [Preferred]

Solution 2 uses the same strategy as solution 1, the only difference is that it proposes to update the lookup record structure so that it can link multiple phone numbers to multiple customers. Below is a suggestion of the new record:

Note

We’ll need to implement checks to prevent the creation of multiple lookup records linking the same phone number and customer

Code Block
{
  pk: `phone_user#${cognitoId}`,
  pk2: `phone#${phoneNumber}`,
  sk: `createdAt#$`phone#${createdAtphoneNumber}`,
  sk2: 'createdAt#$phone_user#${createdAtcognitoId}',
}

With these changes, the search by phone will return a list of customers instead of a single one and avoid the problem of manual record deletion that solution 1 requires. However, the support tool front end will have to be adapted so that customer support can choose which one they want to check, given the list of customers associated with that phone number. The front end design will have to be aligned with UI/UX team.

...

Task breakdown

[intl-user-service]

  1. Refactor user-lookup-by-phone.repository to use both “UserPhone” and “UserPhoneLookUp” records

    1. Since this impacts SA team, we need to ask their review as well

  2. Update the lookup record structure to enable associating multiple phones and users

  3. Develop create lookup records endpoint

  4. Develop find by phone endpoint

...