Files
TakeoutSaaS.Prototypes/specs/001-personal-center-api/tasks.md

13 KiB
Raw Blame History

description
description
Task list for tenant personal center API implementation

Tasks: 租户个人中心 API第一版

Input: Design documents from /specs/001-personal-center-api/ Prerequisites: plan.md (required), spec.md (required), research.md, data-model.md, contracts/, quickstart.md

Tests: 规格未显式要求新增自动化测试代码,本任务清单以可独立验收与回归验证为准。

Organization: Tasks are grouped by user story so each story can be implemented and verified independently.

Format: [ID] [P?] [Story] Description

  • [P]: Can run in parallel (different files, no dependency on incomplete tasks)
  • [Story]: User story label ([US1], [US2], [US3])
  • Every task includes an explicit file path

Path Conventions

  • Tenant API: TakeoutSaaS.TenantApi/src/
  • Feature docs: specs/001-personal-center-api/

Phase 1: Setup (Shared Infrastructure)

Purpose: Create the personal-center implementation skeleton shared by all stories.

  • T001 Create Personal feature directory scaffold in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/
  • T002 Create Personal API controller scaffold in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T003 [P] Create module status DTO scaffold in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/PersonalModuleStatusDto.cs
  • T004 [P] Create common paged query contract in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/PersonalPagedQuery.cs

Phase 2: Foundational (Blocking Prerequisites)

Purpose: Shared building blocks that MUST be ready before user-story implementation.

CRITICAL: No user story work starts until this phase is complete.

  • T005 Create personal request context service in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Services/PersonalContextService.cs
  • T006 [P] Create sensitive data masking service in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Services/PersonalMaskingService.cs
  • T007 [P] Create common date-range validator in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Validators/PersonalDateRangeValidator.cs
  • T008 Create module status builder service in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Services/PersonalModuleStatusService.cs
  • T009 Update personal controller base route/auth/produces metadata in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T010 Update shared personal schemas and parameters in specs/001-personal-center-api/contracts/openapi.yaml
  • T011 Create personal mapping bootstrap in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/PersonalMapping.cs

Checkpoint: Foundation complete - user stories can proceed.


Phase 3: User Story 1 - 查询个人中心总览 (Priority: P1) 🎯 MVP

Goal: Deliver overview + role summary APIs with masking and module-status semantics.

Independent Test: 使用有效租户账号调用 /personal/overview/personal/roles,返回账号/安全/角色/归属信息且手机号邮箱脱敏。

Implementation Tasks

  • T012 [P] [US1] Create overview and role DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/
  • T013 [P] [US1] Create query contracts in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/GetPersonalOverviewQuery.cs
  • T014 [P] [US1] Implement role summary handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/GetPersonalRolesQueryHandler.cs
  • T015 [P] [US1] Implement overview aggregation handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/GetPersonalOverviewQueryHandler.cs
  • T016 [US1] Add US1 validators in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Validators/GetPersonalOverviewQueryValidator.cs
  • T017 [US1] Implement /personal/overview and /personal/roles actions in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T018 [US1] Sync US1 contract schemas/examples in specs/001-personal-center-api/contracts/openapi.yaml
  • T019 [US1] Add US1 verification steps in specs/001-personal-center-api/quickstart.md

Checkpoint: US1 independently works and is verifiable.


Phase 4: User Story 2 - 查询套餐配额与账单支付 (Priority: P2)

Goal: Deliver quota/billing/payment APIs and tenant-configurable visibility role rules.

Independent Test: 在不依赖 US3 的情况下,调用 /personal/quota/personal/billing/statements/personal/billing/payments/personal/visibility/roles 并验证 90 天默认时间窗与角色可见性。

Implementation Tasks

  • T020 [P] [US2] Create quota/billing/payment/visibility DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/
  • T021 [P] [US2] Create US2 query/command contracts in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/
  • T022 [US2] Add visibility rule entity in TakeoutSaaS.TenantApi/src/Domain/TakeoutSaaS.Domain/Tenants/Entities/TenantVisibilityRoleRule.cs
  • T023 [US2] Add visibility rule repository interface in TakeoutSaaS.TenantApi/src/Domain/TakeoutSaaS.Domain/Tenants/Repositories/ITenantVisibilityRoleRuleRepository.cs
  • T024 [US2] Add visibility rule DbSet/config in TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/TakeoutAppDbContext.cs
  • T025 [US2] Implement visibility rule repository in TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/Repositories/TenantVisibilityRoleRuleRepository.cs
  • T026 [US2] Register visibility rule repository in TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Extensions/AppServiceCollectionExtensions.cs
  • T027 [US2] Extend payment repository contract in TakeoutSaaS.TenantApi/src/Domain/TakeoutSaaS.Domain/Tenants/Repositories/ITenantPaymentRepository.cs
  • T028 [US2] Implement tenant-scoped paged payment search in TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/Repositories/TenantPaymentRepository.cs
  • T029 [P] [US2] Implement quota summary handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/GetPersonalQuotaQueryHandler.cs
  • T030 [P] [US2] Implement billing statements handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/SearchPersonalBillingStatementsQueryHandler.cs
  • T031 [P] [US2] Implement payments handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/SearchPersonalPaymentsQueryHandler.cs
  • T032 [US2] Implement visibility config handlers and validator in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/
  • T033 [US2] Implement US2 endpoints in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T034 [US2] Add sensitive query audit service in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Services/PersonalAuditService.cs
  • T035 [US2] Sync US2 contract parameters/schemas in specs/001-personal-center-api/contracts/openapi.yaml
  • T036 [US2] Add US2 verification steps in specs/001-personal-center-api/quickstart.md

Checkpoint: US2 independently works and is verifiable.


Phase 5: User Story 3 - 查询个人操作记录与消息摘要 (Priority: P3)

Goal: Deliver operations/notifications APIs with operator scope and pagination defaults.

Independent Test: 调用 /personal/operations/personal/notifications验证当前用户范围、90 天默认时间窗、操作记录 pageSize<=50 限制和空列表语义。

Implementation Tasks

  • T037 [P] [US3] Create operations and notifications DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/
  • T038 [P] [US3] Create US3 query contracts in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/
  • T039 [US3] Extend operation log repository contract in TakeoutSaaS.TenantApi/src/Domain/TakeoutSaaS.Domain/Tenants/Repositories/IOperationLogRepository.cs
  • T040 [US3] Implement operator-scoped paged search in TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/Logs/Repositories/EfOperationLogRepository.cs
  • T041 [P] [US3] Implement operations handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/SearchPersonalOperationsQueryHandler.cs
  • T042 [P] [US3] Implement notifications handler in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Handlers/SearchPersonalNotificationsQueryHandler.cs
  • T043 [US3] Implement US3 endpoints in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T044 [US3] Sync US3 contract schemas/limits in specs/001-personal-center-api/contracts/openapi.yaml
  • T045 [US3] Add US3 verification steps in specs/001-personal-center-api/quickstart.md

Checkpoint: US3 independently works and is verifiable.


Phase 6: Polish & Cross-Cutting Concerns

Purpose: Final hardening, verification, and release readiness.

  • T046 [P] Update XML comments and Swagger annotations in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/PersonalController.cs
  • T047 [P] Update release/rollback verification steps in specs/001-personal-center-api/quickstart.md
  • T048 Run solution build and endpoint smoke checks using TakeoutSaaS.TenantApi/TakeoutSaaS.sln
  • T049 Validate no-regression behavior in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/AuthController.cs
  • T050 Validate no-regression behavior in TakeoutSaaS.TenantApi/src/Api/TakeoutSaaS.TenantApi/Controllers/MerchantController.cs

Dependencies & Execution Order

Phase Dependencies

  • Phase 1 (Setup): Start immediately
  • Phase 2 (Foundational): Depends on Phase 1 completion; blocks all user stories
  • Phase 3-5 (User Stories): Depend on Phase 2 completion
  • Phase 6 (Polish): Depends on all selected user stories completed

User Story Dependencies

  • US1 (P1): No dependency on US2/US3; recommended MVP
  • US2 (P2): Depends only on foundational phase; independent from US3 business flow
  • US3 (P3): Depends only on foundational phase; independent from US2 business flow
  1. US1 (MVP)
  2. US2
  3. US3

Dependency Graph

Setup -> Foundational -> {US1, US2, US3} -> Polish
                     \-> MVP = US1

Parallel Opportunities

  • Setup: T003, T004
  • Foundational: T006, T007
  • US1: T012, T013, T014, T015
  • US2: T020, T021, T029, T030, T031
  • US3: T037, T038, T041, T042
  • Polish: T046, T047

Parallel Example: User Story 1

# Parallel DTO/query scaffolding
Task: "T012 [US1] DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/"
Task: "T013 [US1] Queries in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/"

# Parallel handler implementation after scaffolding
Task: "T014 [US1] GetPersonalRolesQueryHandler.cs"
Task: "T015 [US1] GetPersonalOverviewQueryHandler.cs"

Parallel Example: User Story 2

# Parallel model/contract and independent handlers
Task: "T020 [US2] DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/"
Task: "T021 [US2] Query/Command contracts in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/"
Task: "T029 [US2] GetPersonalQuotaQueryHandler.cs"
Task: "T030 [US2] SearchPersonalBillingStatementsQueryHandler.cs"
Task: "T031 [US2] SearchPersonalPaymentsQueryHandler.cs"

Parallel Example: User Story 3

# Parallel contracts and handlers
Task: "T037 [US3] DTOs in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Dto/"
Task: "T038 [US3] Queries in TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Personal/Queries/"
Task: "T041 [US3] SearchPersonalOperationsQueryHandler.cs"
Task: "T042 [US3] SearchPersonalNotificationsQueryHandler.cs"

Implementation Strategy

MVP First (User Story 1 Only)

  1. Complete Phase 1 and Phase 2
  2. Deliver US1 (Phase 3)
  3. Validate US1 via quickstart and smoke checks
  4. Demo MVP before expanding scope

Incremental Delivery

  1. Foundation ready
  2. Deliver US1 and verify
  3. Deliver US2 and verify role-based visibility + billing flows
  4. Deliver US3 and verify operations/notifications flows
  5. Execute Phase 6 hardening and release readiness checks

Validation Notes

  • Each story has independent acceptance verification steps bound to API paths in specs/001-personal-center-api/quickstart.md.
  • All tasks follow strict checklist format: checkbox + ID + optional [P] + required [USx] in story phases + explicit file path.