Skip to content

Delivery log: PRD ​

Domain Notifications · function delivery-log · mã story NOTIF-LOG · SDD · Tests

Mục tiêu ​

Trả lời được "hệ đã gửi gì cho người này, lúc nào, tới không, mở chưa" cho mọi lượt gửi, và đọc số đó một cách trung thực.

User story ​

NOTIF-LOG-01: mọi lượt gửi một dòng, kể cả hỏng ​

Là người vận hành, tôi muốn mọi lượt gửi có một dòng sổ với trạng thái và mã lỗi, để không lượt gửi hỏng nào im lặng.

  • Given nhà cung cấp trả lỗi When sendEmail() kết thúc Then có dòng status='failed' kèm error_code, error_message.

NOTIF-LOG-02: tách bản sao kiểm tra khỏi thư thật, hoặc nói thẳng khi không tách được ​

Chế độ hiện tại là EMAIL_AUDIT_COPY.mode = 'cc' (từ 08.09.2026, quyết định của người soạn): bản sao là người nhận CC trên chính thư của người dùng, nên KHÔNG có dòng bản sao riêng để loại.

  • Given chế độ 'separate' và một thư sinh bản sao kiểm tra (thư riêng) When thống kê Then bản sao có audit_of khác rỗng và bị loại khỏi mọi con số.
  • Given chế độ 'cc' hoặc 'bcc' và một loại thư có bản sao When thống kê hay hiện lượt mở (thư báo cáo, Email Catalog, Email Logs) Then con số mang nhãn "có lẫn lượt mở của người vận hành" ngay cạnh nó; loại không có bản sao (login_code, thư gắn kết) không mang nhãn.

NOTIF-LOG-03: ai đã mở, vào những lúc nào ​

Là người vận hành, tôi muốn xem từng lượt mở của một thư, để biết người ta đọc vào giờ nào.

  • Given người nhận tải ảnh theo dõi ba lần When xem chi tiết lượt gửi Then thấy ba mốc thời gian; id không có thật thì vẫn trả ảnh nhưng không ghi dòng.

NOTIF-LOG-04: số mở là cận dưới, có nhiễu ​

  • Given lượt tải đến từ proxy ảnh đã biết When ghi Then đánh dấu via_proxy = 1; báo cáo nêu rõ tỉ lệ mở bị thổi lên khi bản sao đi chung thư, ngay cạnh số (dòng tỉ lệ mở, tiêu đề thư, nhãn trạng thái) chứ không chỉ ở ghi chú cuối thư.
  • Given kỳ báo cáo không có thư nào thuộc loại có bản sao được mở When thư báo cáo dựng Then không chỗ nào ghi "có lẫn": nhãn theo số liệu (operatorOpensInKindStat), không theo chế độ.
  • Given một lượt gửi trước EMAIL_AUDIT_COPY.modeSince, hoặc có bản sao riêng đi kèm When mở chi tiết ở Email Logs Then không mang cảnh báo "lượt mở có thể là của người vận hành" (operatorOpensForDelivery).

NOTIF-LOG-05: màn hình sổ gửi ở admin ​

  • Given tôi mở admin /community/emailWhen lọc theo người nhận hoặc loại Then thấy lượt gửi, trạng thái, số lần mở; có nút gửi thử.

NOTIF-LOG-06: lượt bị bỏ qua vì người nhận đã huỷ ​

Là người vận hành, tôi muốn biết thư nào đã không gửi vì người nhận huỷ nhận, để phân biệt "không gửi" với "chưa từng có lý do gửi".

  • Given một thư gắn kết tới người đã huỷ When sendEmail() bỏ qua Then có dấu vết truy vấn được.

Tài liệu nội bộ nền tảng Conan School.