Delivers MIL-006 tasks 1 to 4: the wiki pages in `docs/wiki/` in English, Danish and Bahasa Malaysia (Home plus one page per lecture step, each with its screenshot and a "what we gained" section, and a shared `_Sidebar.md`), laid out as `framework/process/wiki.md` says (English without suffix, `-da` and `-ms` for the others, a language line on every page). The README links to the wiki. Checked: the three languages have the same five pages; every page starts with the language line; code, commands and file names stay in English. There is no QC checklist for wiki pages, so there is no RC record. Publishing to the host's wiki (task 5, issue #31) follows after this merge. Task: MIL-006#1 Task: MIL-006#2 Task: MIL-006#3 Task: MIL-006#4
1.5 KiB
1.5 KiB
Langkah 2: amaran e-mel
🌐 English · Dansk · Bahasa Melayu
Tugasan. Apabila harga di bawah sasaran (100), hantar e-mel kepada diri sendiri dengan tajuk produk, harga dan pautan untuk membelinya. Jauhkan alamat e-mel dan kata laluan daripada kod.
Apa yang dibina. check_price membandingkan harga dengan TARGET_PRICE. SmtpNotifier menyambung dengan smtplib pada port 587, memulakan TLS, log masuk dan menghantar mesej. SMTP_ADDRESS, EMAIL_ADDRESS dan EMAIL_PASSWORD dibaca daripada .env dengan python-dotenv; .env.example menunjukkan kuncinya.
Tangkapan skrin datang daripada larian yang sambungan SMTP-nya diganti dengan stub, jadi tiada e-mel dihantar; yang kedua dilukis daripada mesej yang dibina oleh kod.
Apa yang kita perolehi
- Perbualan SMTP: connect,
starttls(),login(),sendmail(); Gmail memerlukan kata laluan aplikasi. - Pemboleh ubah persekitaran dan fail
.envmenjauhkan rahsia daripada repositori (.envada dalam.gitignore). - Peraturan "di bawah sasaran" ialah fungsi tulen yang kecil dan mudah diuji (bawah, sama, atas).
- Ujian dengan kelas SMTP palsu: ujian tidak pernah menghantar e-mel sebenar.