رفتن به محتوای اصلی

وظایف

وظایف (tasks) ساختار سلسله‌مراتبی دارند — یک وظیفه می‌تواند چند subtask داشته باشد — و می‌توانند به یک رویداد یا تقویم متصل شوند.

Task یکی از چهار موجودیتی است که از طریق /api/sync همگام می‌شود — دقیقاً مثل Calendar/Event/Reminder. مسیرِ مستقلِ /api/tasks حذف شده است؛ مانندِ بقیه، تنها راهِ خواندن و نوشتنِ Task همان sync است:

  • نوشتن: یک SyncPushTaskItem در آرایهٔ tasksِ POST /api/sync/push (op: "upsert" برای ساخت/ویرایش، op: "delete" برای حذفِ نرم، baseVersion برای LWW).
  • خواندن: در آرایهٔ tasksِ دلتای GET /api/sync/changes برمی‌گردد و cursor یک واترمارکِ tasks جداگانه نگه می‌دارد.

تغییرِ وضعیتِ تکمیل هم یک upsert معمولی است (isCompleted/completedAt)، نه یک endpointِ جدا.

فیلدها

  • title، description، priority (LOW/MEDIUM/HIGH/URGENT)
  • isCompleted و completedAt
  • dueDate: مهلت انجام
  • parentTaskId: والد (برای subtask)
  • eventId / calendarId: اتصال به رویداد یا تقویم
  • color، emoji، order (برای مرتب‌سازی دستی)

در همگام‌سازی، همین روابط با UID بیان می‌شوند: parentTaskUid، eventUid و calendarUid. یک یادآور (Reminder) به دقیقاً یکی از event یا task متصل می‌شود.

رابطِ کاربری (اپ وب)

در apps/calendar-web، Tasks یک بخشِ مستقل با صفحهٔ اختصاصی در مسیرِ /tasks است (TasksPage) با تب‌های صندوق ورودی / امروز / آینده / تکمیل‌شده. همهٔ عملیات‌ها (ساخت، تکمیل، ویرایش، حذف) ابتدا به‌صورت محلی در Dexie اعمال و سپس از طریقِ /api/sync همگام می‌شوند — هیچ endpointِ مستقلی صدا زده نمی‌شود. برای جزئیاتِ ناوبری و رفتارِ responsive به UI واکنش‌گرا مراجعه کنید.