Files
danyang-match/docs/Phase-14-V11-Completion-Report.md
T

94 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 14 完成报告:多类型公益活动
> 版本基线:v1.0.0-RC.2 → v1.1.0-dev | 日期:2026-09-08
> 对应 EPIC:EPIC-P14-V11
---
## 完成摘要
| 项目 | 内容 |
|------|------|
| Phase | 14 |
| 模块 | 多类型公益活动 |
| 状态 | ✅ 核心链路已完成(V1.1 MVP) |
---
## 完成的任务
### 数据模型(V023)
- `activities` 表新增 5 个字段:`activity_type`、`registration_policy`、`target_group`、`industry_scope`、`post_event_interest_enabled`
- 新建 `activity_organizations` 表:支持多组织联合举办活动
- 新建 `activity_capacity_groups` 表:支持按性别/组别的容量配额
### Java 新增/修改
- `Activity.java` — 新增 5 个 V1.1 字段
- `ActivityOrganization.java` — 新增实体 + Mapper
- `ActivityCapacityGroup.java` — 新增实体 + Mapper
- `Constants.java` — 新增 6 个 ACTIVITY_TYPE_* + 5 个 ORG_ROLE_* 常量
- `ActivityService.java` — 新增 4 个方法(getActivitiesByType / getActivityOrganizations / getActivityCapacityGroups / createActivityFromAdmin / addActivityOrganization / addCapacityGroup)
- `ActivityController.java` — 新增 6 个 API 端点
---
## 数据库变更(V023)
```sql
-- activities 扩展字段
ALTER TABLE activities ADD COLUMN activity_type VARCHAR(64) DEFAULT 'matchmaking';
ALTER TABLE activities ADD COLUMN registration_policy TEXT;
ALTER TABLE activities ADD COLUMN target_group VARCHAR(200);
ALTER TABLE activities ADD COLUMN industry_scope VARCHAR(200);
ALTER TABLE activities ADD COLUMN post_event_interest_enabled BOOLEAN DEFAULT FALSE;
-- 多组织关联表
CREATE TABLE activity_organizations (
id UUID PRIMARY KEY, activity_id UUID, organization_id UUID,
role VARCHAR(32), created_at TIMESTAMPTZ, updated_at TIMESTAMPTZ,
UNIQUE(activity_id, organization_id)
);
CHECK role IN ('host', 'organizer', 'co_organizer', 'partner', 'venue_partner');
-- 容量分组表
CREATE TABLE activity_capacity_groups (
id UUID PRIMARY KEY, activity_id UUID, group_code VARCHAR(32),
rule_definition TEXT, capacity INT, approved_count INT,
created_at TIMESTAMPTZ, updated_at TIMESTAMPTZ,
UNIQUE(activity_id, group_code)
);
```
---
## API 新增
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/activities/types/{activityType}` | 按活动类型过滤 |
| GET | `/activities/{id}/organizations` | 获取活动组织列表 |
| GET | `/activities/{id}/capacity-groups` | 获取容量分组 |
| POST | `/operator/activities` | 后台创建活动(含多组织) |
| POST | `/operator/activities/{id}/organizations` | 添加组织关联 |
| POST | `/operator/activities/{id}/capacity-groups` | 添加容量分组 |
---
## Miniapp 前端(后续补充)
| 任务 | 状态 |
|------|------|
| T07 活动分类Tabs | ⏳ 待实现 |
| T08 类型化ActivityCard | ⏳ 待实现 |
| T09 动态报名资格提示 | ⏳ 待实现 |
---
## 下一步
下一阶段为 **Phase 16(活动互选二阶段同意重构)**,需要对现有 activity mutual 流程进行架构重构,将直接创建 Match 改为两阶段同意流程。
---
*Phase 14 核心链路完成。后端 API + 数据模型已就绪,Miniapp 前端页面待后续补充。*