Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 24 Current »

๐Ÿ› ๏ธ Potential Solutions

Enhance existing search input to accept and search by loyalty ID and communicate with loyalty service to get the consumer information.

โœ… Proposed Solution

  • Enhance the existent search bar inside the home screen to accept the loyalty id.

    • For that, it can be added a new line to highlight the new type of data (loyalty id) and a new validation to the input that will expect the LoyaltyId(UUID) format.

image-20240521-182342.png
  • Enhance admin app to consume the loyaltyId and communicate to loyalty API.

    • For that, it can be created a new method in AdminApp to communicate with Intl Loyalty Middleware service.

    • This method will receive the loyaltyId and country and will return the customerId. With the customerId FE is already prepared to fetch customer related data as it does for other input searches.

This idea is validated in this POC

How to get the input data?

Since loyaltyId information are stored in distributed tables per country. Loyalty Middleware API requires country as part of the inputs. E.g.: loyalty-es-users-plk-dev

For that, proposed solution intends to pass the operator country using the following logic:

  • Go through all operators user groups and check one-by-one the <country>-admin groups.

image-20240529-201327.png

Based on that, admin-app needs to provide this country as part of the inputs.

What if there are more than 1 country?

Then admin-app needs execute one query per country and stop the search once it finds a customer. E.g.: In Iberia region (euw3) there are only 2 countries ( Portugal and Spain). Since it’s a support tool with few operators, no issues with performance is expected.

 Detailed solution

Schemas/Customer

  • Update the Query with the new method customerByLoyaltyId and update graphQl queries

    image-20240521-201830.png

  • Create a new method customerByLoyaltyId inside the Query resolvers section (with the same signature and name of query above)

    image-20240521-200957.png

    and this is the loyalty response

    {
      "createdAt": "string",
      "id": "string",
      "name": "string",
      "updatedAt": "string",
      "clientUserId": "string",
      "dateOfBirth": "string",
      "email": "string",
      "emailVerified": true,
      "expirationBuckets": [
        {
          "expirationDate": "string",
          "pointsToExpire": 0
        }
      ],
      "loyaltyTier": {
        "loyaltyTierExpiryDate": "string",
        "loyaltyTierKey": "Tier_1",
        "pointsEarnedInTimeConstraint": 0,
        "startAt": "string"
      },
      "metadata": {
        "additionalProp1": "string",
        "additionalProp2": "string",
        "additionalProp3": "string"
      },
      "offerRedemptionAvailability": {
        "availableAfter": "string",
        "transactionId": "string"
      },
      "phoneNumber": "string",
      "phoneVerified": true,
      "points": 0,
      "pointsEarningDisabled": true,
      "pointsExpiryDateKey": "string"
    }
    • To get the User from Loyalty service, can be used this provider

    image-20240522-191903.png

queries/customers

Create a new query inside the customers queries

image-20240522-195309.png

Create a use query for consume the customerByLoyaltyId

image-20240522-194947.png

Add on the map section the new query

image-20240522-195002.png

universal-search/searchInstructions

Add new descriptions to this list for loyalty id

image-20240522-204049.png

The text for loyaltyId already exist in Lokalize, avoiding the necessity of create a new string text.

โš ๏ธPotential Challenges

Not applicable

๐Ÿ’ฐ Cost

Not applicable

๐ŸŽ›๏ธ Configuration

Operators needs to be assigned to <country>-admin user groups.

๐Ÿ“ˆ Metrics

To be defined by Design/Data Team.

๐Ÿ—“๏ธ Delivery Plan

Link to the task or list of all the tasks required to deliver the solution, along with its progress.

๐Ÿง‘‍๐Ÿš’ QA Plan

To be defined by QA Team.

โš ๏ธ Call-outs

No call-outs

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.