4.3 KiB
Implementation Plan: 租户个人中心 API(第一版)
Branch: 001-personal-center-api | Date: 2026-02-09 | Spec: D:\MsuMshkCode\specs\001-personal-center-api\spec.md
Input: Feature specification from /specs/001-personal-center-api/spec.md
Note: This template is filled in by the /speckit.plan command. See .opencode/command/speckit.plan.md for the execution workflow.
Summary
本特性在 TakeoutSaaS.TenantApi 新增租户个人中心查询能力,首版一次性交付 P0/P1/P2:
个人总览、角色权限概览、套餐配额、账单、支付、个人操作记录、消息摘要,以及账单/配额可见角色
清单配置。技术策略采用“总览聚合 + 明细分页接口”组合,并按澄清结论实现“部分失败可降级返回,
必须显式标识失败模块与原因”。
Technical Context
Language/Version: C# 14 / .NET 10 (ASP.NET Core Web API)
Primary Dependencies: MediatR, EF Core 10, Dapper 2.1+, FluentValidation, Serilog, OpenTelemetry, Asp.Versioning
Storage: PostgreSQL 16+, Redis 7(可选读缓存)
Testing: xUnit + Moq + FluentAssertions + 契约测试 + 集成测试
Target Platform: Linux 容器化服务(Tenant API)
Project Type: multi-project SaaS(本次主要改动 TenantApi,TenantUI 按契约联调)
Performance Goals: 95% 查询请求 <= 2s;请求成功率 >= 99%;操作记录单次返回上限 50 条
Constraints: 强制租户隔离、手机号邮箱脱敏、90 天默认时间窗、降级返回需标识模块错误、10 分钟内可回滚
Scale/Scope: 面向租户端全量发布;新增 1 个总览聚合接口、6 个明细查询接口、1 个可见角色配置接口
Constitution Check
GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.
Pre-Research Gate Review
- Tenant Isolation: PASS - 采用认证用户上下文 + 租户上下文 + 数据访问层租户过滤三重约束。
- Four-Project Impact: PASS - 本次编码落点在
TakeoutSaaS.TenantApi/,并为TakeoutSaaS.TenantUI/提供新增契约。 - Contract Compatibility: PASS - 全部为新增只读接口与配置接口,保持向后兼容,不破坏现有
/auth/*与/merchant/info。 - Security and Compliance: PASS - 强制权限校验、敏感字段脱敏、敏感查询审计日志。
- Quality Gates: PASS - 计划执行
dotnet build、新增契约/集成测试与回归验证。 - Observability and Rollback: PASS - 输出结构化日志、OTel 指标与追踪;按功能开关支持快速回退。
Post-Design Gate Review
- Tenant Isolation: PASS - 在
data-model.md与openapi.yaml明确租户范围和越权拒绝语义。 - Four-Project Impact: PASS -
contracts/openapi.yaml已覆盖 TenantUI 联调所需接口与字段。 - Contract Compatibility: PASS - 契约仅增加新路径与新 DTO;未修改现有路径行为。
- Security and Compliance: PASS -
research.md固化脱敏、审计、最小权限与可见角色清单策略。 - Quality Gates: PASS -
quickstart.md提供可执行验证步骤与回归检查顺序。 - Observability and Rollback: PASS -
research.md定义降级可观测指标与回滚触发阈值。
Project Structure
Documentation (this feature)
specs/001-personal-center-api/
├── plan.md
├── research.md
├── data-model.md
├── quickstart.md
├── contracts/
│ └── openapi.yaml
└── tasks.md
Source Code (repository root)
TakeoutSaaS.TenantApi/
├── src/Api/TakeoutSaaS.TenantApi/Controllers/
├── src/Application/TakeoutSaaS.Application/
├── src/Domain/TakeoutSaaS.Domain/
└── src/Infrastructure/TakeoutSaaS.Infrastructure/
TakeoutSaaS.TenantUI/
└── apps/web-antd/ (仅消费新增接口契约,当前阶段不在本计划内编码)
TakeoutSaaS.AdminApi/
└── (本特性不改动)
TakeoutSaaS.AdminUI/
└── (本特性不改动)
Structure Decision: 本特性仅在 TakeoutSaaS.TenantApi/ 落地 API 代码,TakeoutSaaS.TenantUI/
通过新增契约完成联调;管理员双端保持不变,避免无关改动扩大回归面。
Complexity Tracking
Fill ONLY if Constitution Check has violations that must be justified
No constitutional violations identified for this plan.