This commit is contained in:
@@ -1,5 +1,16 @@
|
|||||||
# Notification specifications
|
# Notification specifications
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############### LAST STATE OF THIS 2020-05-15 12:56:44:
|
||||||
|
Had gone over cases and triaged them, not super fleshed out yet how it works behind the scenes but basically
|
||||||
|
same as v7, object save triggers notification check which puts items into and takes them out of notify event table
|
||||||
|
recurring job processes them
|
||||||
|
Ideally would like to see event of interest check with cached data but need to consider how many different things would be in that, could be huge
|
||||||
|
since I will be adding so many new notification types and they are more complex.
|
||||||
|
|
||||||
|
|
||||||
Important cases:
|
Important cases:
|
||||||
client viewing ui (was popup in v7) https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3783
|
client viewing ui (was popup in v7) https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3783
|
||||||
Restrict to involved people only: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892
|
Restrict to involved people only: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892
|
||||||
@@ -7,8 +18,10 @@ Restrict to involved people only: https://rockfish.ayanova.com/default.htm#!/rfc
|
|||||||
|
|
||||||
ALL EVENT TYPES INITIAL RELEASE
|
ALL EVENT TYPES INITIAL RELEASE
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
|
||||||
## OLD
|
## OLD
|
||||||
WorkOrderStatusChange [PERSONAL, GENERAL]
|
WorkOrderStatusChange [GENERAL]
|
||||||
ContractExiring (User notify, add more notify before time frames in cases) [GENERAL]
|
ContractExiring (User notify, add more notify before time frames in cases) [GENERAL]
|
||||||
CSRAccepted [CUSTOMER]
|
CSRAccepted [CUSTOMER]
|
||||||
CSRRejected [CUSTOMER]
|
CSRRejected [CUSTOMER]
|
||||||
@@ -26,11 +39,12 @@ ScheduleMarkerImminent (will rename) [PERSONAL]
|
|||||||
ScheduleMarkerCreated (will rename) [PERSONAL]
|
ScheduleMarkerCreated (will rename) [PERSONAL]
|
||||||
WorkorderItemScheduledUserCreatedUpdated [PERSONAL]
|
WorkorderItemScheduledUserCreatedUpdated [PERSONAL]
|
||||||
WorkorderItemScheduledUserEventImminent [PERSONAL]
|
WorkorderItemScheduledUserEventImminent [PERSONAL]
|
||||||
WorkorderCloseByDatePassed (user) [personal?, general]
|
WorkorderCloseByDatePassed (user) [general]
|
||||||
WorkorderStatusChanged (user) [PERSONAL, GENERAL]
|
WorkorderStatusChanged (user) [GENERAL]
|
||||||
WorkorderItemOutsideServiceOverdue [personal?, general]
|
WorkorderItemOutsideServiceOverdue [general]
|
||||||
WorkorderItemOutsideServiceReceivedBack [PERSONAL, GENERAL]
|
WorkorderItemOutsideServiceReceivedBack [GENERAL]
|
||||||
WorkorderItemPartRequestPartsReceived [PERSONAL, GENERAL]
|
WorkorderItemPartRequestPartsReceived [GENERAL]
|
||||||
|
|
||||||
|
|
||||||
## NEW
|
## NEW
|
||||||
Daily_Notify_health_check (biz and ops) [GENERAL]
|
Daily_Notify_health_check (biz and ops) [GENERAL]
|
||||||
@@ -41,13 +55,19 @@ WorkorderItemPartRequestCreated case 3652 [GENERAL]
|
|||||||
ContractExpiring - Customer version in addition to User version [CUSTOMER]
|
ContractExpiring - Customer version in addition to User version [CUSTOMER]
|
||||||
WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL]
|
WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL]
|
||||||
WorkOrderStatusAge "deadman" delivery if not changed before XX time period [GENERAL]
|
WorkOrderStatusAge "deadman" delivery if not changed before XX time period [GENERAL]
|
||||||
|
|
||||||
QuoteStatusAge [PERSONAL (prepared by), GENERAL]
|
QuoteStatusAge [PERSONAL (prepared by), GENERAL]
|
||||||
UnitWarranyExpiry case 1361 [GENERAL]
|
UnitWarranyExpiry case 1361 [GENERAL]
|
||||||
UnitMeterReadingMultipleExceeded case 1254 [GENERAL]
|
UnitMeterReadingMultipleExceeded case 1254 [GENERAL]
|
||||||
DefaultNotification case 3792 used for all system and old Quick notifications [EVERYONE]
|
DefaultNotification case 3792 used for all system and old Quick notifications [EVERYONE]
|
||||||
|
TagNotification case 3799
|
||||||
|
|
||||||
|
PERSONAL? OR COVERED BY TAG FILTER ALREADY BETTER?
|
||||||
|
WorkorderItemPartRequestPartsReceivedWhenIAmScheduled [PERSONAL]
|
||||||
|
WorkorderItemOutsideServiceReceivedBackWhenIAmScheduled
|
||||||
|
WorkorderItemOutsideServiceOverdueWhenIAmScheduled
|
||||||
|
WorkorderCloseByDatePassedWhenIAmScheduled
|
||||||
|
WorkorderStatusChangedWhenIAmScheduled [PERSONAL]
|
||||||
|
|
||||||
|
|
||||||
Not for certain but in the hopper to think about:
|
Not for certain but in the hopper to think about:
|
||||||
@@ -71,13 +91,22 @@ General
|
|||||||
|
|
||||||
All notifications can be optionally filtered IN or OUT via tags on notification related object. I.E. a workorder status change can be ignored or only see if it's tagged "region-new-york" etc
|
All notifications can be optionally filtered IN or OUT via tags on notification related object. I.E. a workorder status change can be ignored or only see if it's tagged "region-new-york" etc
|
||||||
|
|
||||||
|
All users can receive general notifications which come from both the system itself and from other users using the new ad-hoc send notification from any form
|
||||||
|
|
||||||
UI
|
UI
|
||||||
Subscribe from the object itself's menu rather than centralized subscription setup (new)
|
Subscribe from the object itself's menu rather than centralized subscription setup (new)
|
||||||
Admin can still subscribe users on their behalf (new)
|
Admin can still subscribe users on their behalf (new)
|
||||||
|
|
||||||
SYSTEM
|
SYSTEM
|
||||||
-=-=-=-=-=-=-=-=-=-
|
-=-=-=-=-=-=-=-=-=-
|
||||||
|
EVENT_OF_INTEREST_CLASS
|
||||||
|
|
||||||
Internal workings:
|
Internal workings:
|
||||||
|
|
||||||
|
Should cache the event of interest for quick saving processing and save db getting hammered every time an object is saved
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
One enum list of NotificationType for any possible notification that can be processed
|
One enum list of NotificationType for any possible notification that can be processed
|
||||||
Notify type is divided by actual type and then by actual delivery method
|
Notify type is divided by actual type and then by actual delivery method
|
||||||
No delivery schedule anymore, let user decide how to handle at their device end, not our concern, just deliver immediately always
|
No delivery schedule anymore, let user decide how to handle at their device end, not our concern, just deliver immediately always
|
||||||
@@ -85,6 +114,7 @@ Notify BEfore shoudl support multiple time frames, not just one
|
|||||||
Users not involved should not be notified, have choice on that`
|
Users not involved should not be notified, have choice on that`
|
||||||
e.g. if a user is not booked on a workorder and is just a lowly tech they don't care about other workorder status changes
|
e.g. if a user is not booked on a workorder and is just a lowly tech they don't care about other workorder status changes
|
||||||
|
|
||||||
|
|
||||||
Types of notifications sitting in delivery queue:
|
Types of notifications sitting in delivery queue:
|
||||||
Deliver if something not changed before date "DEADMAN SWITCH"
|
Deliver if something not changed before date "DEADMAN SWITCH"
|
||||||
upon change that negates it from source object it removes the event as no longer required
|
upon change that negates it from source object it removes the event as no longer required
|
||||||
@@ -134,11 +164,5 @@ Maintenance
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
MISC
|
|
||||||
=-=-
|
|
||||||
|
|
||||||
- NOTIFICATION SUBSCRIPTIONS
|
|
||||||
- NOTIFICATION DELIVERIES (user or all if manager account)
|
|
||||||
|
|
||||||
- What is "Slack"?
|
- What is "Slack"?
|
||||||
- should we tie into it for notifications?
|
- should we tie into it for notifications?
|
||||||
@@ -1,16 +1,8 @@
|
|||||||
PRIORITY - ALWAYS Lowest level stuff first
|
PRIORITY - ALWAYS Lowest level stuff first
|
||||||
=-=-=-=-
|
=-=-=-=-
|
||||||
|
|
||||||
todo: look over notification stuff see if relevant to route stuff immediately below (probably not)
|
|
||||||
todo: notification
|
|
||||||
todo: add long polling notification route (CLIENT AND SERVER)
|
|
||||||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3507
|
|
||||||
- Need way to acknowledge receipt of long poll info from client to server so that it can be removed or something?
|
|
||||||
- maybe successfull sending clears it regardless of client?
|
|
||||||
todo: change trial detection route that client first hits
|
|
||||||
- make it a different controller and renamed to something like server ping or "hello" or something friendly and useful
|
|
||||||
- maybe the route that gets Notifications
|
|
||||||
- because there could be a notificatoin type that doesn't need logged in users for general server down announcements etc
|
|
||||||
|
|
||||||
|
|
||||||
todo: Search get search result for workorder descendents doesn't fit into existing system due to it being a biz object wide feature but workorder having sub-get results
|
todo: Search get search result for workorder descendents doesn't fit into existing system due to it being a biz object wide feature but workorder having sub-get results
|
||||||
|
|||||||
@@ -50,6 +50,24 @@ namespace AyaNova.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get count of new notifications waiting
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("new-count")]
|
||||||
|
public ActionResult GetNewCount()
|
||||||
|
{
|
||||||
|
//STUB: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3783
|
||||||
|
if (serverState.IsClosed)
|
||||||
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
|
return Ok(ApiOkResponse.Response(69, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: See new count case for gist of it
|
||||||
|
//todo: see the core-notification.txt spec doc for details and
|
||||||
|
//todo: see seemingly countless Notification related cases for details :)
|
||||||
|
|
||||||
//------------
|
//------------
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user