Last bit of formatting improvements.

Signed-off-by: Carlo Costino <carlo.costino@gsa.gov>
This commit is contained in:
Carlo Costino
2023-07-05 15:34:30 -04:00
parent f93972e9c4
commit 34cd616cac

View File

@@ -8,7 +8,10 @@
## CONTEXT AND PROBLEM STATEMENT ## CONTEXT AND PROBLEM STATEMENT
**OPEN ISSUE(S):** https://github.com/GSA/notifications-api/issues/141, https://github.com/GSA/notifications-admin/issues/53, https://github.com/GSA/notifications-admin/issues/51 **OPEN ISSUE(S):**
* https://github.com/GSA/notifications-api/issues/141
* https://github.com/GSA/notifications-admin/issues/53
* https://github.com/GSA/notifications-admin/issues/51
We will be entering into Memoranda of Understanding (MOU) and Interagency We will be entering into Memoranda of Understanding (MOU) and Interagency
Agreements (IAA) with partner agencies. Data from those agreements will be Agreements (IAA) with partner agencies. Data from those agreements will be
@@ -42,19 +45,19 @@ An implementation should address these needs:
- The information and tools to stop sending before overspending - The information and tools to stop sending before overspending
- The ability to connect data to organization and service models - The ability to connect data to organization and service models
This is a minimal implementation of agreement data. It's quite possible that This is a minimal implementation of agreement data. It's quite possible that
it will change and expand over time, but those needs are not yet clear. it will change and expand over time, but those needs are not yet clear.
Because we will continue to have the actual agreement docs safely in Google Because we will continue to have the actual agreement docs safely in Google
Drive, this implementation does not need to be a source of truth and does not Drive, this implementation does not need to be a source of truth and does not
need to retain history over time. need to retain history over time.
### SECURITY COMPLIANCE CONSIDERATIONS ### SECURITY COMPLIANCE CONSIDERATIONS
We will need to take care about permissions to change this data. Existing We will need to take care about permissions to change this data. Existing
permissions are fairly binary: you are a user or you are an admin. We should permissions are fairly binary: you are a user or you are an admin. We should
consider whether that's still sufficient or if an in-between role would be consider whether that's still sufficient or if an in-between role would be
useful. useful.
@@ -71,11 +74,11 @@ As a team, we've gone through the following options:
harder and, in turn, makes it easier to break validation logic elsewhere harder and, in turn, makes it easier to break validation logic elsewhere
in the application in the application
- Add MOU and IAA models: two new classes in `models.py` with the same fields - Add MOU and IAA models: two new classes in `models.py` with the same fields
but different configurations. but different configurations.
- Pros: - Pros:
- Cleanest representation of the real world - Cleanest representation of the real world
- Allows SQL-level support for required/unique fields - Allows SQL-level support for required/unique fields
- Cons: - Cons:
- Most complex data model - Most complex data model
@@ -102,7 +105,7 @@ should be able to perform a migration.
- Positive - Positive
- Well gain more granular control over message limits for paid (IAA) - Well gain more granular control over message limits for paid (IAA)
agreements agreements
- We can offer more agreement transparency to users. For example, identifying - We can offer more agreement transparency to users. For example, identifying
agreements that will need renewal agreements that will need renewal
- Negative - Negative
@@ -114,20 +117,20 @@ should be able to perform a migration.
## VALIDATION AND NEXT STEPS ## VALIDATION AND NEXT STEPS
This process includes adding the new model and updating the existing models to This process includes adding the new model and updating the existing models to
use them. use them.
1. Add the new model: 1. Add the new model:
- Add Agreement to models.py with the fields identified above - Add Agreement to models.py with the fields identified above
- Create migration to add/update table - Create migration to add/update table
2. Update the Organisation model: 2. Update the Organisation model:
- Add one-to-many field linking one Organisation to multiple Agreements - Add one-to-many field linking one Organisation to multiple Agreements
- Add model property to convert budget amount into message limit - Add model property to convert budget amount into message limit
- Add model property to provide remaining budget based on sent messages - Add model property to provide remaining budget based on sent messages
- Add model property about whether free tier or not - Add model property about whether free tier or not
- Add model property for free tier usage (retrieve messages sent in a year) - Add model property for free tier usage (retrieve messages sent in a year)
This will set up a new system, but stops short of connecting agreements to the This will set up a new system, but stops short of connecting agreements to the
services actually sending the messages. This approach will be laid out in a services actually sending the messages. This approach will be laid out in a
forthcoming ADR about managing message limits. forthcoming ADR about managing message limits.