mnemo_cards/ai_docs/agent/common/task_list.json

234 lines
12 KiB
JSON
Raw Normal View History

2025-11-20 21:28:55 +00:00
{
"project": "mnemo_cards_common",
"component": "common",
"version": "1.0",
"generated_at": "2025-01-27T23:47:16.294964+00:00",
2025-11-20 21:28:55 +00:00
"generated_by": "planning_agent",
"tasks": [
{
"id": "COMMON-001",
"title": "Create task enums (TaskType, TaskStatus, TaskDifficulty, RewardType)",
"priority": "high",
"status": "pending",
"estimated_hours": 2.0,
"description": "Create enum classes for task-related types in mnemo_cards_common. These enums will be shared between frontend and backend. Include TaskType (appInternal, external, social), TaskStatus (available, inProgress, completed, expired, failed), TaskDifficulty (easy, medium, hard), and RewardType (xp, coins, achievement). Use @JsonValue(int) for database enums as per project conventions.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_enums.dart",
"All 4 enums defined with proper values",
"Enums use @JsonValue(int) for database serialization",
"Enums have fromJson/toJson methods or use json_serializable",
"Enums exported in main library file",
"5+ unit tests verify enum serialization/deserialization"
],
"dependencies": [],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_enums.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_enums_test.dart"
],
"component": "common"
},
{
"id": "COMMON-002",
"title": "Create TaskRewardDto with JSON serialization",
"priority": "high",
"status": "pending",
"estimated_hours": 2.0,
"description": "Create TaskRewardDto class in mnemo_cards_common following the existing DTO patterns. Include fields: type (RewardType), amount (int), achievementId (String?). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith() annotations. Ensure proper JSON serialization/deserialization.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_reward_dto.dart",
"TaskRewardDto uses @JsonSerializable and @CopyWith annotations",
"All fields properly serialized with snake_case naming",
"fromJson and toJson methods work correctly",
"DTO exported in main library file",
"8+ unit tests cover serialization, deserialization, and edge cases"
],
"dependencies": ["COMMON-001"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_reward_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_reward_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-003",
"title": "Create TaskDto with all required fields",
"priority": "high",
"status": "pending",
"estimated_hours": 3.0,
"description": "Create TaskDto class representing a task that can be shared between frontend and backend. Include fields: id (String), title (String), description (String), type (TaskType), difficulty (TaskDifficulty), rewards (List<TaskRewardDto>), status (TaskStatus), createdAt (DateTime), expiresAt (DateTime), completedAt (DateTime?), proofUrl (String?), instructions (String?), tags (List<String>?), imageUrl (String?). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith(). Add computed properties: isExpired, isActive.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_dto.dart",
"TaskDto includes all required fields with proper types",
"Uses @JsonSerializable and @CopyWith annotations",
"Computed properties isExpired and isActive work correctly",
"fromJson and toJson handle all fields including nullable ones",
"DTO exported in main library file",
"12+ unit tests cover serialization, deserialization, computed properties, and edge cases"
],
"dependencies": ["COMMON-001", "COMMON-002"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-004",
"title": "Create TaskProgressDto for user task progress tracking",
"priority": "high",
"status": "pending",
"estimated_hours": 2.5,
"description": "Create TaskProgressDto class to track user progress on tasks. Include fields: userId (String), taskStatuses (Map<String, TaskStatus>), completedTasks (Map<String, DateTime>), totalXp (int), totalCoins (int), achievements (List<String>), lastUpdated (DateTime). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith(). Handle Map serialization properly for taskStatuses and completedTasks.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_progress_dto.dart",
"TaskProgressDto includes all required fields",
"Map fields (taskStatuses, completedTasks) serialize/deserialize correctly",
"Uses @JsonSerializable and @CopyWith annotations",
"fromJson and toJson work with complex nested structures",
"DTO exported in main library file",
"10+ unit tests cover serialization, deserialization, and edge cases"
],
"dependencies": ["COMMON-001"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_progress_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_progress_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-005",
"title": "Create TasksQueryDto for filtering and pagination",
"priority": "medium",
"status": "pending",
"estimated_hours": 2.0,
"description": "Create TasksQueryDto class for querying tasks with filters and pagination. Include optional fields: status (TaskStatus?), type (TaskType?), difficulty (TaskDifficulty?), tag (String?), limit (int?), offset (int?), onlyActive (bool?). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith(). This DTO will be used for API request parameters.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/tasks_query_dto.dart",
"TasksQueryDto includes all optional filter and pagination fields",
"Uses @JsonSerializable and @CopyWith annotations",
"fromJson and toJson handle nullable fields correctly",
"DTO exported in main library file",
"8+ unit tests cover serialization, deserialization, and null handling"
],
"dependencies": ["COMMON-001"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/tasks_query_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/tasks_query_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-006",
"title": "Create TaskCategoriesDto for task metadata",
"priority": "medium",
"status": "pending",
"estimated_hours": 2.0,
"description": "Create TaskCategoriesDto class to represent available task categories and filters. Include fields: types (List<TaskType>), difficulties (List<TaskDifficulty>), tags (List<String>), totalTasks (int). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith(). This DTO will be used to return available filter options to the frontend.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_categories_dto.dart",
"TaskCategoriesDto includes all required fields",
"Uses @JsonSerializable and @CopyWith annotations",
"List fields serialize/deserialize correctly",
"DTO exported in main library file",
"6+ unit tests cover serialization and deserialization"
],
"dependencies": ["COMMON-001"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_categories_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_categories_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-007",
"title": "Create TaskResultDto for task completion submissions",
"priority": "medium",
"status": "pending",
"estimated_hours": 2.5,
"description": "Create TaskResultDto class for submitting task completion results. Include fields: taskId (String), userId (String), status (TaskStatus), submittedAt (DateTime), proofUrl (String?), notes (String?), approved (bool?), reviewedAt (DateTime?). Use @JsonSerializable(fieldRename: FieldRename.snake) and @CopyWith(). This DTO will be used for both request (submission) and response (review status) scenarios.",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/task_result_dto.dart",
"TaskResultDto includes all required and optional fields",
"Uses @JsonSerializable and @CopyWith annotations",
"fromJson and toJson handle nullable fields correctly",
"DTO exported in main library file",
"10+ unit tests cover serialization, deserialization, and edge cases"
],
"dependencies": ["COMMON-001"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/task_result_dto.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart",
"mnemo_cards_common/test/src/dtos/tasks/task_result_dto_test.dart"
],
"component": "common"
},
{
"id": "COMMON-008",
"title": "Create tasks DTOs export file and update main library exports",
"priority": "high",
"status": "pending",
"estimated_hours": 1.5,
"description": "Create an export file for all task-related DTOs (tasks/export.dart) and update the main library file (mnemo_cards_common.dart) to export all task DTOs. Ensure all DTOs are properly exported and accessible. Follow the existing export pattern used for other DTO groups (e.g., payment/export.dart).",
"acceptance_criteria": [
"File created: lib/src/dtos/tasks/export.dart",
"All task DTOs exported in tasks/export.dart",
"Main library file updated to export tasks/export.dart",
"All DTOs accessible via mnemo_cards_common import",
"Export structure follows existing patterns",
"No circular dependencies"
],
"dependencies": ["COMMON-001", "COMMON-002", "COMMON-003", "COMMON-004", "COMMON-005", "COMMON-006", "COMMON-007"],
"files_to_modify": [
"mnemo_cards_common/lib/src/dtos/tasks/export.dart",
"mnemo_cards_common/lib/mnemo_cards_common.dart"
],
"component": "common"
},
{
"id": "COMMON-009",
"title": "Run code generation and verify all task DTOs compile",
"priority": "high",
"status": "pending",
"estimated_hours": 1.0,
"description": "Run build_runner to generate all JSON serialization code for task DTOs. Verify that all generated files compile correctly and there are no errors. Ensure all .g.dart files are generated properly. Run tests to verify everything works.",
"acceptance_criteria": [
"build_runner executed successfully: flutter pub run build_runner build --delete-conflicting-outputs",
"All .g.dart files generated for task DTOs",
"No compilation errors in generated code",
"All existing tests still pass",
"Linter passes with zero warnings for task DTO files"
],
"dependencies": ["COMMON-008"],
"files_to_modify": [],
"component": "common"
},
{
"id": "COMMON-010",
"title": "Add comprehensive integration tests for task DTOs",
"priority": "medium",
"status": "pending",
"estimated_hours": 2.5,
"description": "Create integration tests that verify task DTOs work together correctly. Test scenarios like: TaskDto with multiple TaskRewardDto, TaskProgressDto with complex task statuses, full round-trip serialization/deserialization, edge cases with null values, and compatibility between different DTO combinations.",
"acceptance_criteria": [
"Integration test file created: test/src/dtos/tasks/tasks_integration_test.dart",
"Tests cover DTO interactions and combinations",
"Tests verify round-trip serialization works correctly",
"Tests cover edge cases and null handling",
"15+ integration test cases pass",
"All tests use realistic data structures"
],
"dependencies": ["COMMON-009"],
"files_to_modify": [
"mnemo_cards_common/test/src/dtos/tasks/tasks_integration_test.dart"
],
"component": "common"
}
]
2025-11-20 21:28:55 +00:00
}