Versions Compared

Key

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

During the Tech Discovery of the feature Free Refill Drinks (QR code), we identified two possible approaches of solution.

...

Sequence Diagram 2.2 (to be validated in PoC) → Goncalves, Felipe Augusto de Souza, Jonatan (Deactivated)

...

Generate Hash Code

  • SHA256. But this doesn’t use password. Double check with Paulo.

  • MD5 . But this is also a one-way algorithm. Double check with Paulo.- WinRest Logic to calculate hash:

  • Image Added
  • DynamoDB secrets table: rbi-account-secrets

Sanity

...

  • Marketing Content / Features/ Feature QR Code Refill Drinks / List of items

    • TBD

  • Marketing Content / Features/ Feature QR Code Refill Drinks / List of stores

    Image Removed

  • View file
    namestores.csv

  • View file
    nameproducts.csv

...

  • What’s the API that whitelabel needs to call to receive as response the hash to be converted into QR code? What is the response field? Any example?

    • In approach 1, it’s commit order and commit order callback. In approach 2, no external API is needed.

    • Hash: 2bb4193529026315ce6ca36dbc6831ef

  • What’s the content of the hash?

    • This field is the result of several fields encrypted with a password provided by the vending machine team: Example:

      • Store ID: 103
        Transaction ID: 84970387 → is it posOrderId?
        Date and time stamp: 20211031013000

  • Can the hash content be generated inside RBI app?

    • Yes, it can. But we need the the secret to generate the encoded hash that the vending machine will decode. Besides, we need to configure all items and all stores that grants the right of refill drinks. All the logic would be internal.

  • What’s the handle component (sticker) of the bottom?

    • We checked existing storybook component, but no one looks good for it

    • Proposal: create a new one:

    • Example :

      View file
      nameApp.css
      View file
      nameApp.js

  • What are the icons for 'refill drink' and qr-code ?

...

Approach 1: Based on partners → 22 + 10 + 37 + 13 + 20 + 16 + 3 + 34 = 155

  • Backend Services - (22)

    • Packages (Interface) - 2

      • Change the IPartnerOrder interface to add a new refillDrink field. (Interface).

    • Commit Order and commit order callback - 20

      • intl-partner-api - Callback- (5)

        • Add new field "refillDrink" in DynamoDB update (Reference Code) (3)

        • Add new field “hash” as optional in DTO. (2)

      • intl-partners-service - (5)

        • Add new field "refillDrink" in DynamoDB update (Reference Code) (3)

        • Add new field “refillDrink” in Webhook Order interface (Interface) (2)

      • intl-fulfillment-service - (3)

      • intl-whitelabel-graphql - (5)

  • Front-end

    • Place Secure Order

      • Get Order - 10

        • graphql - get order with refill drink hash - 5 ✅

        • database get order with refill drink hash - 5 ✅

      • Hook Refill Drinks - 37

        • Validate Get Order - check Refill Drinks hash - 5 ✅

        • Validate Service Mode (Sanity) - 8

        • Trigger bottom sticker - 8 ✅

        • New modal of QR code - 8 ✅

        • Convert hash to QR code - 8 ✅

    • Recent Order Page - 13

      • Hook Refill Drinks banner

        • Validate Orders

          • Read bottom sticker order - 3 ✅

          • Read Sanity Config (duration) - 5

          • Apply logic to show banner - 5

    • Home Page - 20

      • Check if there’s QR code order in cache - 5 ✅

      • Read Sanity config (sticker duration) - 5

        • Apply logic to show bottom sticker of QR code - 5

        • Add/Remove QR code order in cache - 5

  • Sanity - 16

    • New Feature Refill Drinks - 8

      • Duration of bottom sticker - refill drinks

      • Duration of recent order - refill drinks

    • Configuration of service modes - 8

  • Feature Flag - 3

    • New feature flag for front-end

    • New feature flag for back-end

  • Testing - 34

    • Testing Plan

    • Dev - using mocks

    • QA, STG, PROD - using integration with Winrest

    • Validations in dynamodb

    • Validations of durations of QR code

      • bottom sticker

      • recent order sticker

    • Validation of the last order QR code

    • Validations using native devices

      • responsiveness

      • QR code reading

...

Approach 2: (Standalone) without partners → 10 + 28 +21+8+ 65 + 24 + 13 +20 + 16 +3 +34 = 242

  • Implementation of refillDrink in Sanity - 10

    • New Refill Drink feature section to define:

      • List of stores eligible for refillDrink (5)

      • List of items eligible for refillDrink (5)

  • Configuration of refillDrink in Sanity - 28

    • List of stores eligible for refillDrink - ~40 stores (8)

    • List of items eligible for refillDrink - thousands ( 20 ) ?

  • Synchronization of refillDrink configuration (PortalOps) - 21 ?

  • Configuration of secrets in dynamodb - 8

  • Intl-whitelabel-App

    • New hook to generate the refillDrinkHash ( 65 )

      • validate getOrder response refillDrink fields - 13

        • Retrieve:

          • storeId,

          • transactionId (posOrderId?),

          • order timestamp

      • Get secrets from the database - 13

      • Read eligible drinks and stores from Sanity → 26

        • validate if the storeId is eligible for refillDrink (8)

        • scan menu items ( 13 )

          • Check if any menu item is eligible for refillDrink ( 5 )

      • Apply encryption with the secret key (13 )

...