Table of Contents |
---|
Overview
"Phase" might be Previous versions of this doc called its top-level organizational categories "Phases". That was a bad name , esp outside of the "Phase 1". "Phase 1" really is a software delivery interval, I think, with all hands on deck to try to get "core planning" functionality completed. After that the "phases" morph more into functional groupings that don't necessarily need to proceed in sequence nor constitute the same amount of work. But the ordering does reflect my general sense of how features need to be prioritized.
Phase 1 - Core Planning
Phase 1 External Data Model
...
Core Planning" category, b/c while that matched up with the first software delivery interval, everything else was more of an abstract set of feature groupings that happened to be listed in perceived priority order, but could technically be reordered with minimal design impact. So I've switched out "Phase" for "Feature Set".
Feature Set 1 - Core Planning
Feature Set 1 External Data Model
Feature Set 1 External Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 1 External Data Model Dictionary
More details to be provided in the usual integration spec
...
Column | Type | Notes |
---|---|---|
course_code | varchar | Pointer to external_course.code |
term_code | varchar | Pointer to external_term.code |
...
Feature Set 1 External Data Model Notes
Support for core functional requirements:
...
Course bindings to Department, Division, Program, Requisites, and Attributes all specifically excluded from this phasefeature set.
Integrators will be responsible for ensuring that external_course_term
is populated far enough into the future to support the application's planning scope. There is no means by which the application will automatically "extend" existing course-term bindings nor override those bindings. Any number of options exist for handling such features in future phasesfeature sets.
Traditionally, external data model schema implementations have not included formal foreign keys. Physical tables should be indexed by logical foreign keys and any other commonly queried fields:
external_course.code
external_course.title
external_course.formatted_course
external_course_term.course_code
+external_course_term.term_code
...
Feature Set 1 Operational Data Model
...
Feature Set 1 Operational Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 1 Operational Data Model Dictionary
map_plan - Plays master to map_plan_course
's detail.
...
Column | Type | Notes |
---|---|---|
id | uuid | Self-explanatory |
plan_id | uuid | Pointer to the plan which owns this course-term binding. Formal FK to map_plan.id |
person_id | uuid | Pointer to the person to whom the plan applies (as opposed to the author). Formal FK to person.id . Must always match map_plan.person_id for a given plan_id . This is a denormalization for performance. |
term_code | varchar | Pointer to the term in which the course is planned. Informal FK to external_term.code . Integrators are strongly encouraged to use term_codes with business meaning, e.g. FA12 not 1234. This seems common enough that taking a copy of the term name/title is not necessary. |
course_code | varchar | Pointer to the course being planned. Informal FK to external_course.code . Recall that this is a potentially opaque value, not something like "MAT101". |
formatted_course | varchar | Copy of external_course.formatted_course . Should be something like "MAT101". Needed to produce a useful plan export should external data go missing. |
course_title | varchar | Copy of external_course.title . Needed to produce a useful plan export should external data go missing. |
course_description | varchar | Copy of external_course.description . Needed to produce a useful plan export should external data go missing. |
credit_hours | varchar | Copy of external_course.min_credit_hours (per email from Jason). |
is_dev | bool | Copy of external_course.is_dev . Needed to produce useful plan export should external data go missing. |
order_in_term | int | Ordinal representing desired on-screen position relative to other map_plan_course records in the same plan and term. Ascending order. |
{audit-fields} | -- | Standard stuff |
...
Feature Set 1 Operational Data Model Notes
No roll-up hours total on map_plan
b/c that's presumably an optimization we don't know that we need. But we will support output of totals on-screen, in APIs, and in reports. Just not going to require the persistent sum until we know we need it.
...
map_plan.person_id
map_plan_course.plan_id
...
Feature Set 2 - Plan Annotations
Add operational data to plans. Notes, elective type, etc.
...
Feature Set 2 External Data Model
...
Feature Set 2 External Data Model Schema
No Changes.
...
Feature Set 2 External Data Model Dictionary
No Changes.
...
Feature Set 2 External Data Model Notes
No Changes.
...
Feature Set 2 Operational Data Model
...
Feature Set 2 Operational Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 2 Operational Data Model Dictionary
map_plan - New columns.
Column | Type | Notes |
---|---|---|
contact_* | varchar | Collected via text fields in the /wiki/spaces/SSP/pages/103986449 dialog. Note that contact_notes are supposed to be hidden except to privileged roles. |
student_notes | varchar | Collected via text field in the /wiki/spaces/SSP/pages/103986449 dialog. |
is_financial_aid | bool | Collected via checkbox in the /wiki/spaces/SSP/pages/103986449 dialog. |
is_important | bool | Collected via checkbox in the /wiki/spaces/SSP/pages/103986449 dialog. |
is_f1_visa | bool | Collected via checkbox in the /wiki/spaces/SSP/pages/103986449 dialog. |
academic_goals | varchar | Collected via text field in the /wiki/spaces/SSP/pages/103986449 dialog. |
career_link | varchar | Collected via text field in the /wiki/spaces/SSP/pages/103986449 dialog. |
academic_link | varchar | Collected via text field in the /wiki/spaces/SSP/pages/103986449 dialog. |
...
Column | Type | Notes |
---|---|---|
id | uuid | Standard |
name | varchar | Standard |
code | varchar | See elective |
description | varchar | Standard |
object_status | int | Standard |
hex_code | varchar | Hex color code suitable for injection into CSS via Javascript |
{audit-fields} | -- | Standard |
...
Feature Set 2 Operational Data Model Notes
UI is expected to pre-populate contact_* form fields with the currently authenticated user's attributes. We intentionally take copies of those values into map_plan
at Russ's direction. Advisors are sometimes reluctant to expose certain attributes to students. We choose to accept the potential for out of sync attributes as a result.
...
Restricted access to the various contact_notes
fields must be handled server-side. I.e. the API can't just always return contact_notes
whenever looking up a plan and hope the UI enforces permissions correctly. Same for writes, but in the other direction.
...
Feature Set 3 - Enhanced Search
...
Feature Set 3 External Data Model
...
Feature Set 3 External Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 3 External Data Model Dictionary
TBD
...
Feature Set 3 External Data Model Notes
We don't need a list of programs without courses to support search features, but we require external_program
anyway b/c we know we need that feature for plan templates (Phase 4Feature Set 4). The denormalization of program names into external_course_program
is an optimization to help search, though, which really only does need the list of programs having at least one required course. This lets that lookup avoid one join. And denormalization in external data is OK as a general rule.
More TBD
...
Feature Set 3 Operational Data Model
...
Feature Set 3 Operational Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 3 Operational Data Model Dictionary
TBD
...
Feature Set 3 Operational Data Model Notes
TBD
...
Feature Set 4 - Templates
...
Feature Set 4 External Data Model
...
Feature Set 4 External Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 4 External Data Model Dictionary
TBD
...
Feature Set 4 External Data Model Notes
TBD
...
Feature Set 4 Operational Data Model
...
Feature Set 4 Operational Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 4 Operational Data Model Dictionary
TBD
...
Feature Set 4 Operational Data Model Notes
TBD
...
Feature Set 5 - Course Details
...
Feature Set 5 External Data Model
...
Feature Set 5 External Data Model Schema
Gliffy | ||
---|---|---|
|
...
Feature Set 5 External Data Model Dictionary
TBD
...
Feature Set 5 External Data Model Notes
TBD
...
Feature Set 5 Operational Data Model
...
Feature Set 5 Operational Data Model Schema
No changes.
...
Feature Set 5 Operational Data Model Dictionary
No changes.
...
Feature Set 5 Operational Data Model Notes
We do not copy any of the new external_course
fields onto the map_plan_course
operational model, so no changes.
...