3.6 KiB
3.6 KiB
Operation Contracts: Study Flash Cards
Metadata
| Key | Value |
|---|---|
| ID | OC-001 |
| CrossReference | SSD-001, DM-001, DICT-001 |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | c3fbcbc |
The turn-over of the card after 3000 ms is started by the system's own timer, not by a message from the Learner, so it has no contract; it is realized in SD-001.
Contract: startStudySession
| Item | Value |
|---|---|
| Operation | startStudySession(): CardDto | None |
| Traces to | startStudySession in SSD-001 |
| Domain Model concepts | Study Session, Words To Learn, Word List, Flash Card (DM-001); IT terms StudySession, Deck, Vocabulary, Card (DICT-001) |
Preconditions
- A
Vocabularyexists in the word list file.
Postconditions
- A
StudySessioninstance was created. - A
Deckinstance was created and associated with theStudySession. - The
Deckholds the cards of the progress file when it exists, otherwise a copy of the cards of theVocabulary. - When the
Deckis not empty,StudySession.current_cardwas set to a card of theDeckand aCardDtoof it is returned; otherwisecurrent_cardisNoneandNoneis returned.
Exceptions
| Condition (failing precondition) | Outcome |
|---|---|
| The word list file does not exist | VocabularyNotFoundError is raised; no session is created |
| The word list or progress file has no header of two cells, or a row with other than two cells | VocabularyFormatError is raised; no session is created and no file is changed |
Contract: markKnown
| Item | Value |
|---|---|
| Operation | markKnown(): None |
| Traces to | markKnown in SSD-001 |
| Domain Model concepts | Study Session, Words To Learn, Flash Card (DM-001); IT terms StudySession, Deck, Card (DICT-001) |
Preconditions
- A
StudySessionexists and itscurrent_cardis notNone.
Postconditions
- The
Cardofcurrent_cardwas removed from theDeck(the association was destroyed). - The
Deckwas stored in the progress file. StudySession.current_cardwas set toNone.
Exceptions
| Condition (failing precondition) | Outcome |
|---|---|
current_card is None (no card is shown) |
Nothing is changed and nothing is stored |
Contract: markUnknown
| Item | Value |
|---|---|
| Operation | markUnknown(): CardDto | None |
| Traces to | markUnknown in SSD-001 |
| Domain Model concepts | Study Session, Words To Learn, Flash Card (DM-001); IT terms StudySession, Deck, Card (DICT-001) |
Preconditions
- A
StudySessionexists.
Postconditions
StudySession.current_cardwas set to a card of theDeckthat differs from the previouscurrent_cardwhen theDeckholds two or more cards, and aCardDtoof it is returned.- When the
Deckis empty,current_cardisNoneandNoneis returned. - The
Deckand the progress file are unchanged. - The Malay word of the new
current_cardwas passed to theSpeechPort.
Exceptions
| Condition (failing precondition) | Outcome |
|---|---|
The Deck is empty |
None is returned; nothing is spoken |