Cấu hình và các quy tắc trong tab Note (v5jun261105am)
Cấu hình và quy tắc nghiệp vụ đang được áp dụng trongTab Note (Ghi chú) của dự án:
1. Cấu trúc Dữ liệu Ghi chú (Note Model)
Mỗi ghi chú được thiết kế rất đa năng và lưu trữ nhiều loại thông tin:
- Nội dung: Hỗ trợ cả văn bản thường (
content) và văn bản định dạng phong phú (rtfData). - Thời gian: Quản lý bằng nhiều mốc thời gian: Ngày tạo (
createdAt), Ngày cập nhật (updatedAt), Ngày lưu (savedAt), và Thời gian do người dùng tự đặt (customDate- bắt đầu,customEndDate- kết thúc). - Trạng thái & Phân loại:
isPinned: Đánh dấu ghim lên đầu.isLocked: Hỗ trợ khóa bảo mật ghi chú.isTodoMode: Chế độ giao diện công việc.- Ghi chú có thể thuộc một Thư mục (
Folder) và gắn nhiều Nhãn (Tags).
- Checklist (Danh sách công việc con): Ghi chú có thể chứa danh sách các mục công việc con dạng chuỗi JSON (
checklistData). Hệ thống có hàm tự động tính toán tổng số mục (checklistTotal) và số mục đã làm (checklistDone). - Siêu dữ liệu & Tiện ích: Có thể đính kèm Toạ độ, Địa chỉ vị trí, Thông tin thời tiết.
- Tích hợp bên ngoài: Có liên kết để đồng bộ với Lịch (
calendarEventID,calendarColorHex), Lời nhắc (reminderID), và Live Activity của iOS (sfSymbolName).
2. Quy tắc Đánh giá "Hoàn thành" (Completion Rules)
Một ghi chú được xem là "Đã hoàn thành" (isCompleted) khi đáp ứng một trong các điều kiện sau:
- Nếu là ghi chú dạng Checklist: Toàn bộ các công việc con trong danh sách đều đã được đánh dấu hoàn thành (
checklistDone == checklistTotal). - Nếu là ghi chú có ngày kết thúc: Thời điểm hiện tại đã vượt qua hạn chót (
customEndDate < now).
3. Quy tắc Sắp xếp Danh sách (Sorting Rules)
Hệ thống hiển thị danh sách với ưu tiên số 1 là Ghi chú đã ghim (isPinned). Sau đó, ghi chú được sắp xếp theo 3 lựa chọn (Sort Order):
- Sắp xếp theo Ngày tạo (
byCreatedAt) & Ngày sửa (byUpdatedAt):- Luật ưu tiên "Gần đến hạn": Nếu một ghi chú chưa hoàn thành và chỉ còn dưới 3 ngày là tới hạn (
customEndDate), nó sẽ được ưu tiên đẩy lên trên. - Nếu không có ghi chú nào gần hạn, hệ thống sẽ sắp xếp giảm dần theo thời gian tạo mới nhất hoặc thời gian cập nhật mới nhất tương ứng.
- Luật ưu tiên "Gần đến hạn": Nếu một ghi chú chưa hoàn thành và chỉ còn dưới 3 ngày là tới hạn (
- Sắp xếp theo Ngày kết thúc (
byEndDate): (Chỉ hiển thị những ghi chú có cài đặt ngày kết thúc). Danh sách được chia làm 3 nhóm theo thứ tự:- Nhóm 0 (Tương lai/Đang diễn ra): Hạn chót ở tương lai. Sắp xếp tăng dần (hạn nào càng tới sớm càng nằm trên).
- Nhóm 1 (Quá hạn): Đã qua hạn chót nhưng chưa hoàn thành. Sắp xếp giảm dần (gần với hiện tại nhất nằm trên).
- Nhóm 2 (Đã hoàn thành): Đã hoàn thành hoặc checklist đã xong. Sắp xếp giảm dần.
4. Quy tắc Lọc và Tìm kiếm (Filtering & Search)
- Tìm kiếm: Là tìm kiếm toàn văn bản (không phân biệt chữ hoa/thường). Hệ thống sẽ quét qua Tiêu đề (
title), Nội dung (content) và Tên các Nhãn (tags). - Lọc theo thư mục: Người dùng có thể chọn 1
Foldercụ thể để chỉ xem các ghi chú thuộc thư mục đó. Khi người dùng đang chọn 1 bộ lọc, một dấu chấm màu cam sẽ xuất hiện trên icon lọc để báo hiệu trạng thái.
5. Quy tắc Giao diện & Tương tác (UI & Interaction Rules)
- Cử chỉ cuộn (Scroll): Vuốt lên/xuống dọc theo danh sách ghi chú sẽ tự động tạo hoạt ảnh ẩn/hiện thanh công cụ điều hướng dưới đáy (Floating Bottom Nav Bar).
- Cử chỉ QuickAdd (Thêm nhanh): Tại Tab Note, nếu người dùng vuốt nhanh từ trên xuống (và tính năng
quickAddEnabledđang bật), màn hình Thêm ghi chú nhanh (QuickAddNoteView) sẽ hiện lên thay vì vuốt list. - Thao tác trượt ngang (Swipe Actions):
- Trượt sang trái: Xóa ghi chú. Khi xóa, hệ thống sẽ đồng thời huỷ bỏ các thông báo đã đặt (
NotificationManager) và kết thúc Live Activity (LiveActivityManager). - Trượt sang phải: Sửa ghi chú.
- Trượt sang trái: Xóa ghi chú. Khi xóa, hệ thống sẽ đồng thời huỷ bỏ các thông báo đã đặt (
6. Cấu hình & Tự động hoá hệ thống (Settings)
Tab Note chịu ảnh hưởng bởi các cấu hình User Defaults (@AppStorage):
quickAddEnabled: Cho phép thêm ghi chú nhanh qua thao tác vuốt.autoSyncCalendarEnabled: Có tự động đồng bộ sự kiện từ Lịch hay không.autoSyncDefaultFolderID&autoSyncDefaultNoteTypeTask: Thư mục và loại mặc định cho các sự kiện Lịch được lấy về.autoSyncRangeDays: Khoảng thời gian tự động đồng bộ Lịch (mặc định là 30 ngày).- Backup & Sync: Mỗi khi ứng dụng được mở lại (
scenePhase == .active), ứng dụng sẽ kiểm tra và tự động backup dữ liệu (AutoBackupService) và kích hoạt quy trình đồng bộ hóa lịch ngầm.