Files
031-flash-card/docs/wiki/Architecture-da.md
Tirsvad 92894268c5 MIL-007: Documentation and publication
Review record RC-029 (Go, autonomous mode, not independent).

Task: MIL-007#1
Task: MIL-007#2
Task: MIL-007#3
Task: MIL-007#4
Task: MIL-007#5
Task: MIL-007#6
Task: MIL-007#7
Task: MIL-007#8
2026-10-14 22:42:26 +08:00

2.2 KiB

Arkitektur

🌐 English · Dansk · Bahasa Malaysia

Programmet er bygget i fire lag under src/flash_card/. Importer peger indad; lint-imports kontrollerer det.

Lag Indeholder Må importere
domain Card, LanguagePair, Vocabulary, Deck, fejlene og repository-grænsefladerne ingenting
application StudySession, open_study_session, CardDto og SpeechPort domain
infrastructure CSV-repositories og tale-adaptere application, domain
presentation FlashCardView, FlashCardViewModel (MVVM) og kompositionsroden app.py alle lag

Alle konstanter står i src/flash_card/constants.py.

Hvor er hvert opgavetrin?

Opgave Kode
Trin 1: vindue, lærred, billede, tekster, knapper FlashCardView.__init__ i presentation/features/flash_card/flash_card_view.py; billederne laves af tools/generate_images.py
Trin 2: læs CSV, tilfældigt ord ved hvert tryk CsvVocabularyRepository og read_word_list (erstatter pandas), Deck.draw, StudySession.next_card, FlashCardView.next_card
Trin 3: vend efter 3 sekunder FlashCardView.flip_card, FlashCardView.flip_timer (after, after_cancel), FlashCardViewModel.flip_card
Trin 4: kendte ord, words_to_learn.csv FlashCardView.is_known, StudySession.mark_known, CsvProgressRepository, open_study_session
Ekstra: tale SpeechPort, GttsSpeech, NullSpeech, build_speech i presentation/app.py

Hvorfor en lagdelt løsning til en lille opgave?

Reglerne (hvilket kort der kommer næste gang, hvad et kendt ord gør) testes uden vindue og uden filsystem. Vinduet, CSV-filerne og taletjenesten kan udskiftes uden at røre reglerne. Se ADR-0001 og ADR-0002 i docs/adr/.

Test

Mappe Hvad den tester
tests/unit/ Hvert lag for sig, med falske objekter til portene
tests/integration/ Den rigtige ordliste og fremgangsfilen i en midlertidig mappe
tests/e2e/ Det rigtige Tkinter-vindue (springes over uden skærm)

Projektdokumenter

Business case, plan, design og gennemgangsrapporter ligger i docs/. Arbejdet blev udført i syv milepæle, én pull request hver: se docs/milestones/.