feat: 实现完整的多租户公告管理系统

核心功能:
- 公告状态机(草稿/已发布/已撤销)支持发布、撤销和重新发布
- 发布者范围区分平台级和租户级公告
- 目标受众定向推送(全部租户/指定角色/指定用户)
- 平台管理、租户管理和应用端查询API
- 已读/未读管理和未读统计

技术实现:
- CQRS+DDD架构,清晰的领域边界和事件驱动
- 查询性能优化:数据库端排序和限制,估算策略减少内存占用
- 并发控制:修复RowVersion配置(IsRowVersion→IsConcurrencyToken)
- 完整的FluentValidation验证器和输入保护

测试验证:
- 36个测试全部通过(27单元+9集成)
- 性能测试达标(1000条数据<5秒)
- 代码质量评级A(优秀)

文档:
- 完整的ADR、API文档和迁移指南
- 交付报告和技术债务记录
This commit is contained in:
2025-12-20 19:50:17 +08:00
parent 00eb357e6e
commit 857f776447
76 changed files with 12957 additions and 281 deletions

View File

@@ -83,6 +83,45 @@ dotnet run
- 管理后台 AdminApi Swaggerhttp://localhost:5001/swagger
- 小程序/用户端 MiniApi Swaggerhttp://localhost:5002/swagger
## 公告管理
> 最后更新日期2025-12-20
### 功能概述
- 支持平台公告与租户公告统一管理TenantId=0 代表平台公告)
- 状态机:草稿 → 已发布 → 已撤销(已发布不可编辑)
- 支持目标受众过滤与未读/已读能力
### 快速开始(示例流程)
1. 创建公告(草稿)
2. 发布公告(进入 Published
3. 应用端获取可见公告列表与未读公告
```mermaid
stateDiagram-v2
[*] --> Draft
Draft --> Published: publish
Published --> Revoked: revoke
Revoked --> Published: republish
```
### 关键概念
- `Status`Draft/Published/Revoked已发布不可编辑
- `RowVersion`并发控制字段Base64
- `TargetType/TargetParameters`:目标受众过滤
### 相关文档
- `docs/api/announcements-api.md`
- `docs/permissions/announcement-permissions.md`
- `docs/adr/0001-announcement-status-state-machine.md`
- `docs/observability/announcement-events.md`
- `docs/migrations/announcement-status-migration.md`
- `docs/technical-debt.md`
## 项目结构
```