Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notification Release Plan #181

Open
18 of 38 tasks
ignazio-bovo opened this issue Sep 4, 2023 · 3 comments
Open
18 of 38 tasks

Notification Release Plan #181

ignazio-bovo opened this issue Sep 4, 2023 · 3 comments

Comments

@ignazio-bovo
Copy link
Contributor

ignazio-bovo commented Sep 4, 2023

Design specs Link

Notifications v1 3.1.0

Release date: October 4th 2023

The first release, V1, will focus on basic notification functionality such as database creation and status update, together with adding a lot of notification events

  • List of events that will be supported
    • Channel excluded from App
    • Video is excluded from App
    • Video featured as Hero
    • Video featured on Category page
    • NFT is featured on the Marketplace
    • New Channel follower
    • Comment Posted To Video
    • Video Liked
    • Video Disliked
    • YPP Channel verified
    • YPP Channel suspended
    • NFT purchased
    • NFT bid received (for auction creator)
    • NFT royalty payment received
    • Channel received direct payment (via member remark)
    • Funds withdrawn from channel account (to member acc)
    • Channel created
    • Someone replied to your comment
    • Someone reacted to your comment
    • Posted new video
    • Followed channel put a new nft on auction
    • Followed channel put a new nft on sale
    • NFT bid outbid (someone places a higher bid than your own)
    • NFT open auction bid won
    • NFT open auction bid lost

Work

  • Model (schema) additions
    • notification entity (and various variants for each case)
    • emailNotification entity
    • User preference schema addition
    • Remove the inAppDelivery entity in favour of boolean flag (since no diagnostics are planned for in-app notifications): 1 hrs
  • Notification controller and services logic module
    • addNotification module and helpers
    • user preferences dispatch helper function
    • add addNotification function to various mapping and resolver
  • Resolvers:
    • mark notification as read
    • verify channel
    • suspend channel
    • change notification preferences
  • Migration code:
    • Adding user preference to accounts from previous versions
    • Add migration logic for notifications for future versions 2 hrs
    • Add new entities to be migrated
  • Mail scheduler services
    • Scheduler service for fetching unread / undelivered email notifications
    • service Logic for parsing notification data into an email text 8 hrs
    • proper mail formatting with email packages: 8 hrs (expecially if you want to add avatars)
    • controller logic for link and texts 2 hrs
  • Testing
    • migration testing 3.0.13.1.0 24 hrs (at least, we also want to make sure that account sign in is possible after and login is possible before and after)

Notifications v2

Release date: ??

The second release, V2, will build upon V1 and introduce two most needed features, email notifications and enhanced security by making notifications queriable by accounts only

  • Notification introduced
    • Ypp signup successful (member recipient)
    • Someone signed up using your Member Link (member recipient)
    • Member withdrawn funds to exernal wallet (member recipient)
  • Refactoring:
    • organize controllers, test, services folders (or at least for the notifications ). 2 hrs
    • ExcludeChannel should be made as ChannelNotification (requires accessing channel data even though the channel is excluded)
  • Model
    • Add new schema variants to support new notifications: 2 hrs
  • Mail scheduler services
    • Scheduler service for fetching unread / undelivered email notifications
    • controller logic for link and texts 2 hrs
    • Implement batching related content at regular intervals for digest mails: 4 hrs (part of the code is already there)
    • Setup code for managing the scheduler as a microservice 8 hrs
  • Test
    • Add integration test for scheduler controller service and logic 24 hrs (partially already done)
    • Add integration & unit test for the newly introduced resolvers: 24 hrs
    • migration testing 3.1.03.2.0 8 hrs (provided that testing boilerplate code is already there from v1)
  • Resolvers:
    • NotificationInApp with opencrud clause and pagination with unit test: 24 hrs
    • Ypp related resolvers such as SuccessfulSignIn : 1 hrs
  • Model:
    • Make notification entity private: negligible

Notification v3

Release date: ??

The second release, V3, will build upon V2 and introduce more advanced features such as the polling microservice (which fetches specifc data from the chain at regular intervals). It will include also:

  • Notification introduced
    • bid locking period expired for open auction (member recipient)
    • english (timed) auction time expired (creator recipient)
    • funds for your channel send by council (member recipient)
    • funds received from WG (member recipient)

Work

  • Model
    • Add new schema variants to support new notifications: 2 hrs
  • Mappings:
    • Add mappings needed for notification ?
    • Add notifications to the newly introduced mappings ?
  • Polling microservice:
    • Controller logic to fetch chain data with unit tests 16 hrs
    • Controller logic to decode chain data into typescript compatible types with unit tests 24 hrs
    • Service logic that interact with the notification module 2 hrs
    • Setup microservice as a docker container 2 hrs
@ignazio-bovo ignazio-bovo changed the title Notification preferences v2 Notification scope v2 Sep 14, 2023
@ignazio-bovo ignazio-bovo changed the title Notification scope v2 Notification Release Plan Sep 25, 2023
@dmtrjsg
Copy link

dmtrjsg commented Sep 25, 2023

@ignazio-bovo

Thanks for putting this together.

V1

  1. Deprecated events
  • We don't need notifications for these cases so can be removed:
    Video featured as Hero
    Video featured on Category page
    As the discovery pages are deprecated and its unlikely we will feature videos on Homepage for the time being
  • Funds withdrawn from channel account (to member acc) - this feature is getting changed and we enable external transfers right from the studio. So can be updated to "Member withdrew accounts to external wallet"
  1. Events
    Is it possible to include into v1:
  • "[handle] signed up using your referral link"
  1. Email notiff
  • I thought that v1 would have the email notifications as they are featured in the settings already and arguably a lot more impactful than in-app notiffs. When you say scheduler does that mean digest (combining multiple notifications to a single email)? If yes then that's not needed in v1.
  • Avatars don't have to be part of the release if thats a big problem

@dmtrjsg
Copy link

dmtrjsg commented Sep 26, 2023

MM

  1. Withdrawals
  • update wording for withdrawing from Channel notiff to "100 Joy were withdrawn from your channel account" @thesan as part of Atlas change.
  1. Emails
  • Agreed to send emails with a simple cron job so scheduler is not required. @thesan will share the link to the Pioneer codebase where that is already implemented
  1. Referrals signed up
  • Agreed to include "[handle] signed up using your referral link". Atlas team will add referrerChannelId to creating new account on Orion. Ignazio will add this to v1 scope.
  1. Bugfixing off the back of QA work
    Orion: Fixes to be addressed
    Atlas: Fixes to be addressed

Plan:

  1. Add missing notifications Orion
  • HigherBidPlaced
  • NftFeaturedOnMarketPlace
  • CreatorReceivesAuctionBid
  • VideoExcluded
  • ChannelExcluded
  1. Add referrer sign up to Atlas and Orion
  2. Add cron job
  3. Deploy to Atlas dev
    (second round of QA)
  4. Continue working on migration scripts
  • Theo will take care of the email formatting.

@ignazio-bovo
Copy link
Contributor Author

ignazio-bovo commented Sep 28, 2023

I have a small question regarding the notification behaviour for an edge case involving an open auction:

  1. Alice is top bidder with a bid equals to 100 $JOY
  2. Bob is a bidder with 80 $JOY
  3. Alice changes his bid amount to 60 $JOY --> Bob becomes the top bidder but doesn't receive any notification
  4. Charlie places a bid with amount 110 $JOY --> Bob receives a HigherBidPlaced notification

Is this acceptable, given that there's a chance that Bob didn't even know he was the top bidder?
@dmtrjsg @KubaMikolajczyk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants