# 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) ```text specs/001-personal-center-api/ ├── plan.md ├── research.md ├── data-model.md ├── quickstart.md ├── contracts/ │ └── openapi.yaml └── tasks.md ``` ### Source Code (repository root) ```text 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.