2026-09-09 22:05:00 +08:00
|
|
|
|
# “善缘丹阳”公益婚恋服务平台
|
|
|
|
|
|
# V1.1 数据库与 API 增量设计
|
|
|
|
|
|
|
|
|
|
|
|
版本:V1.1
|
|
|
|
|
|
设计原则:增量扩展、兼容 V1.0、避免重复建模、保持模块化单体架构
|
|
|
|
|
|
新增覆盖:Banner、善缘服务站、服务预约、婚恋咨询、婚前辅导、婚恋课堂、婚恋反诈、本地资格核验、专项公益服务项目、来源追踪
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一章 本次增量设计目标
|
|
|
|
|
|
|
|
|
|
|
|
最新项目计划书已经明确,“善缘丹阳”不仅承担公益婚恋交友,还包括婚恋指导、婚前辅导、婚俗新风、反诈科普、固定阵地服务等内容。
|
|
|
|
|
|
|
|
|
|
|
|
同时,万善公园婚姻登记处被明确为项目固定运营阵地。
|
|
|
|
|
|
|
|
|
|
|
|
因此本次 V1.1 必须在现有 V1.0 架构基础上增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner运营
|
|
|
|
|
|
固定服务阵地
|
|
|
|
|
|
服务预约
|
|
|
|
|
|
婚恋咨询
|
|
|
|
|
|
婚前辅导
|
|
|
|
|
|
公益内容
|
|
|
|
|
|
婚恋反诈
|
|
|
|
|
|
本地资格核验
|
|
|
|
|
|
专项公益服务项目
|
|
|
|
|
|
公益推广来源
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二章 明确不修改的 V1.0 核心表
|
|
|
|
|
|
|
|
|
|
|
|
以下核心表继续保留:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
users
|
|
|
|
|
|
user_wechat_accounts
|
|
|
|
|
|
user_identities
|
|
|
|
|
|
user_profiles
|
|
|
|
|
|
user_preferences
|
|
|
|
|
|
preference_rules
|
|
|
|
|
|
user_interests
|
|
|
|
|
|
user_photos
|
|
|
|
|
|
user_privacy_settings
|
|
|
|
|
|
|
|
|
|
|
|
review_tasks
|
|
|
|
|
|
review_items
|
|
|
|
|
|
review_reasons
|
|
|
|
|
|
|
|
|
|
|
|
recommendation_records
|
|
|
|
|
|
user_relations
|
|
|
|
|
|
matches
|
|
|
|
|
|
|
|
|
|
|
|
conversations
|
|
|
|
|
|
conversation_members
|
|
|
|
|
|
messages
|
|
|
|
|
|
|
|
|
|
|
|
activities
|
|
|
|
|
|
activity_registrations
|
|
|
|
|
|
activity_feedback
|
|
|
|
|
|
activity_user_interests
|
|
|
|
|
|
|
|
|
|
|
|
matchmaker_services
|
|
|
|
|
|
matchmaker_recommendations
|
|
|
|
|
|
matchmaker_followups
|
|
|
|
|
|
|
|
|
|
|
|
reports
|
|
|
|
|
|
report_evidences
|
|
|
|
|
|
user_risk_profiles
|
|
|
|
|
|
risk_events
|
|
|
|
|
|
risk_actions
|
|
|
|
|
|
|
|
|
|
|
|
organizations
|
|
|
|
|
|
operators
|
|
|
|
|
|
roles
|
|
|
|
|
|
permissions
|
|
|
|
|
|
operator_roles
|
|
|
|
|
|
role_permissions
|
|
|
|
|
|
|
|
|
|
|
|
audit_logs
|
|
|
|
|
|
sensitive_access_logs
|
|
|
|
|
|
|
|
|
|
|
|
system_configs
|
|
|
|
|
|
match_rule_configs
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
本次不因 V1.1 新业务而重做这些表。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三章 本次新增核心实体
|
|
|
|
|
|
|
|
|
|
|
|
建议新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
home_banners
|
|
|
|
|
|
|
|
|
|
|
|
service_locations
|
|
|
|
|
|
service_appointments
|
|
|
|
|
|
|
|
|
|
|
|
counseling_services
|
|
|
|
|
|
counseling_followups
|
|
|
|
|
|
|
|
|
|
|
|
content_categories
|
|
|
|
|
|
content_articles
|
|
|
|
|
|
|
|
|
|
|
|
user_local_eligibilities
|
|
|
|
|
|
local_eligibility_evidences
|
|
|
|
|
|
|
|
|
|
|
|
service_programs
|
|
|
|
|
|
service_program_members
|
|
|
|
|
|
|
|
|
|
|
|
partner_organizations
|
|
|
|
|
|
|
|
|
|
|
|
source_campaigns
|
|
|
|
|
|
user_acquisition_sources
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
其中部分可根据最终实现合并,但业务语义必须保留。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四章 home_banners
|
|
|
|
|
|
|
|
|
|
|
|
用于首页 Banner 运营。
|
|
|
|
|
|
|
|
|
|
|
|
表:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
home_banners
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
建议字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
title
|
|
|
|
|
|
subtitle
|
|
|
|
|
|
image_file_id
|
|
|
|
|
|
button_text
|
|
|
|
|
|
|
|
|
|
|
|
target_type
|
|
|
|
|
|
target_value
|
|
|
|
|
|
|
|
|
|
|
|
audience_scope
|
|
|
|
|
|
sort_order
|
|
|
|
|
|
|
|
|
|
|
|
start_at
|
|
|
|
|
|
end_at
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
created_by
|
|
|
|
|
|
updated_by
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五章 Banner TargetType
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity
|
|
|
|
|
|
matchmaker
|
|
|
|
|
|
counseling
|
|
|
|
|
|
premarital
|
|
|
|
|
|
service_location
|
|
|
|
|
|
article
|
|
|
|
|
|
internal_page
|
|
|
|
|
|
none
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六章 Banner AudienceScope
|
|
|
|
|
|
|
|
|
|
|
|
支持:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
all
|
|
|
|
|
|
onboarding
|
|
|
|
|
|
searching
|
|
|
|
|
|
getting_to_know
|
|
|
|
|
|
successful
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果未来关系状态命名调整:
|
|
|
|
|
|
|
|
|
|
|
|
> 使用等义业务状态。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七章 Banner 状态
|
|
|
|
|
|
|
|
|
|
|
|
技术候选:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
draft
|
|
|
|
|
|
scheduled
|
|
|
|
|
|
active
|
|
|
|
|
|
inactive
|
|
|
|
|
|
expired
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
也可以简化为:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
status
|
|
|
|
|
|
+
|
|
|
|
|
|
start_at
|
|
|
|
|
|
+
|
|
|
|
|
|
end_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
最终状态计算方式可由研发选择。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八章 Banner 业务规则
|
|
|
|
|
|
|
|
|
|
|
|
必须满足:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
未到start_at
|
|
|
|
|
|
→ 不展示
|
|
|
|
|
|
|
|
|
|
|
|
超过end_at
|
|
|
|
|
|
→ 不展示
|
|
|
|
|
|
|
|
|
|
|
|
status不可用
|
|
|
|
|
|
→ 不展示
|
|
|
|
|
|
|
|
|
|
|
|
用户状态不匹配audience_scope
|
|
|
|
|
|
→ 不展示
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九章 Banner 图片
|
|
|
|
|
|
|
|
|
|
|
|
使用原统一文件系统。
|
|
|
|
|
|
|
|
|
|
|
|
不要单独建:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
banner_images
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
只保存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
image_file_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十章 Banner 跳转安全
|
|
|
|
|
|
|
|
|
|
|
|
不允许:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
target_type = arbitrary_url
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 只允许平台内部已知目标。
|
|
|
|
|
|
|
|
|
|
|
|
避免:
|
|
|
|
|
|
|
|
|
|
|
|
- 错误外链
|
|
|
|
|
|
- 恶意跳转
|
|
|
|
|
|
- 内容不可控
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十一章 Banner API
|
|
|
|
|
|
|
|
|
|
|
|
用户端:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/home/banners
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
根据当前用户状态自动过滤。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十二章 Banner Admin API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/banners
|
|
|
|
|
|
POST /api/v1/operator/banners
|
|
|
|
|
|
GET /api/v1/operator/banners/{id}
|
|
|
|
|
|
PUT /api/v1/operator/banners/{id}
|
|
|
|
|
|
POST /api/v1/operator/banners/{id}/publish
|
|
|
|
|
|
POST /api/v1/operator/banners/{id}/disable
|
|
|
|
|
|
POST /api/v1/operator/banners/reorder
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十三章 Banner 权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
banner.view
|
|
|
|
|
|
banner.create
|
|
|
|
|
|
banner.edit
|
|
|
|
|
|
banner.publish
|
|
|
|
|
|
banner.disable
|
|
|
|
|
|
banner.reorder
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十四章 service_locations
|
|
|
|
|
|
|
|
|
|
|
|
用于固定公益服务阵地。
|
|
|
|
|
|
|
|
|
|
|
|
当前首个正式服务点:
|
|
|
|
|
|
|
|
|
|
|
|
> 万善公园婚姻登记处。
|
|
|
|
|
|
|
|
|
|
|
|
计划书明确要求建立常态化驻点机制。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十五章 service_locations 字段
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
name
|
|
|
|
|
|
short_name
|
|
|
|
|
|
|
|
|
|
|
|
address
|
|
|
|
|
|
latitude
|
|
|
|
|
|
longitude
|
|
|
|
|
|
|
|
|
|
|
|
contact_phone_enc
|
|
|
|
|
|
contact_phone_display
|
|
|
|
|
|
|
|
|
|
|
|
opening_hours_text
|
|
|
|
|
|
service_description
|
|
|
|
|
|
|
|
|
|
|
|
cover_file_id
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
primary_organization_id
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十六章 地图位置
|
|
|
|
|
|
|
|
|
|
|
|
服务站可保存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
latitude
|
|
|
|
|
|
longitude
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这是公共服务地点,不属于用户精确定位。
|
|
|
|
|
|
|
|
|
|
|
|
与此前“不采集用户GPS”没有冲突。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十七章 opening_hours
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 推荐先使用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
opening_hours_text
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
周一至周五 09:00—17:00
|
|
|
|
|
|
周末以活动公告为准
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
暂不建设复杂排班引擎。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十八章 service_location_services
|
|
|
|
|
|
|
|
|
|
|
|
如果未来一个阵地提供多个服务点配置,建议增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_location_services
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_location_id
|
|
|
|
|
|
service_type
|
|
|
|
|
|
enabled
|
|
|
|
|
|
display_order
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 也可以先直接由 Config 管理。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第十九章 ServiceType
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
matchmaker
|
|
|
|
|
|
counseling
|
|
|
|
|
|
premarital
|
|
|
|
|
|
activity_support
|
|
|
|
|
|
anti_fraud
|
|
|
|
|
|
marriage_culture
|
|
|
|
|
|
general_inquiry
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十章 服务站用户 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/service-locations
|
|
|
|
|
|
GET /api/v1/service-locations/{id}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
当前虽然只有一个服务站:
|
|
|
|
|
|
|
|
|
|
|
|
> 仍使用列表+详情结构。
|
|
|
|
|
|
|
|
|
|
|
|
方便未来扩展。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十一章 服务站 Admin API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/service-locations
|
|
|
|
|
|
POST /api/v1/operator/service-locations
|
|
|
|
|
|
PUT /api/v1/operator/service-locations/{id}
|
|
|
|
|
|
POST /api/v1/operator/service-locations/{id}/enable
|
|
|
|
|
|
POST /api/v1/operator/service-locations/{id}/disable
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十二章 service_appointments
|
|
|
|
|
|
|
|
|
|
|
|
用于用户预约:
|
|
|
|
|
|
|
|
|
|
|
|
- 公益红娘
|
|
|
|
|
|
- 婚恋咨询
|
|
|
|
|
|
- 婚前辅导
|
|
|
|
|
|
- 服务站咨询
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十三章 service_appointments 字段
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
user_id
|
|
|
|
|
|
|
|
|
|
|
|
service_location_id
|
|
|
|
|
|
service_type
|
|
|
|
|
|
|
|
|
|
|
|
preferred_date
|
|
|
|
|
|
preferred_time_slot
|
|
|
|
|
|
|
|
|
|
|
|
user_note
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
assigned_operator_id
|
|
|
|
|
|
|
|
|
|
|
|
confirmed_start_at
|
|
|
|
|
|
confirmed_end_at
|
|
|
|
|
|
|
|
|
|
|
|
cancelled_by
|
|
|
|
|
|
cancel_reason
|
|
|
|
|
|
|
|
|
|
|
|
source
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十四章 AppointmentStatus
|
|
|
|
|
|
|
|
|
|
|
|
推荐:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
submitted
|
|
|
|
|
|
pending_confirmation
|
|
|
|
|
|
confirmed
|
|
|
|
|
|
completed
|
|
|
|
|
|
cancelled
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
技术上可以进一步精简。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十五章 用户预约原则
|
|
|
|
|
|
|
|
|
|
|
|
同一用户可以拥有多个历史预约。
|
|
|
|
|
|
|
|
|
|
|
|
不能:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
UNIQUE(user_id)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
只能在必要时限制:
|
|
|
|
|
|
|
|
|
|
|
|
> 同类型同时存在的 Active Appointment 数量。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十六章 服务预约 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
POST /api/v1/service-appointments
|
|
|
|
|
|
GET /api/v1/service-appointments
|
|
|
|
|
|
GET /api/v1/service-appointments/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/service-appointments/{id}/cancel
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十七章 后台预约 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/service-appointments
|
|
|
|
|
|
GET /api/v1/operator/service-appointments/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/operator/service-appointments/{id}/confirm
|
|
|
|
|
|
POST /api/v1/operator/service-appointments/{id}/assign
|
|
|
|
|
|
POST /api/v1/operator/service-appointments/{id}/complete
|
|
|
|
|
|
POST /api/v1/operator/service-appointments/{id}/cancel
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十八章 预约权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_appointment.view
|
|
|
|
|
|
service_appointment.assign
|
|
|
|
|
|
service_appointment.confirm
|
|
|
|
|
|
service_appointment.complete
|
|
|
|
|
|
service_appointment.cancel
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第二十九章 counseling_services
|
|
|
|
|
|
|
|
|
|
|
|
这是 V1.1 新增的重要业务对象。
|
|
|
|
|
|
|
|
|
|
|
|
计划书明确提出恋爱困惑、情感矛盾、婚恋焦虑以及婚前公益辅导。
|
|
|
|
|
|
|
|
|
|
|
|
但系统定位:
|
|
|
|
|
|
|
|
|
|
|
|
> 公益婚恋指导服务。
|
|
|
|
|
|
|
|
|
|
|
|
不是:
|
|
|
|
|
|
|
|
|
|
|
|
> 医疗诊疗系统。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十章 counseling_services 字段
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
user_id
|
|
|
|
|
|
|
|
|
|
|
|
service_type
|
|
|
|
|
|
request_source
|
|
|
|
|
|
|
|
|
|
|
|
user_request_summary
|
|
|
|
|
|
|
|
|
|
|
|
organization_id
|
|
|
|
|
|
assigned_operator_id
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
preferred_service_mode
|
|
|
|
|
|
preferred_time
|
|
|
|
|
|
|
|
|
|
|
|
scheduled_start_at
|
|
|
|
|
|
scheduled_end_at
|
|
|
|
|
|
|
|
|
|
|
|
consent_version
|
|
|
|
|
|
consented_at
|
|
|
|
|
|
|
|
|
|
|
|
completed_at
|
|
|
|
|
|
closed_reason
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十一章 CounselingServiceType
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
relationship_guidance
|
|
|
|
|
|
emotional_support
|
|
|
|
|
|
premarital_guidance
|
|
|
|
|
|
anti_fraud_guidance
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十二章 是否单独建 premarital_services
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 不建议。
|
|
|
|
|
|
|
|
|
|
|
|
婚前辅导继续复用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling_services
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
通过:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_type = premarital_guidance
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
区分。
|
|
|
|
|
|
|
|
|
|
|
|
减少表数量。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十三章 ServiceMode
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
offline
|
|
|
|
|
|
phone
|
|
|
|
|
|
online_other
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 不建设咨询即时 IM。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十四章 CounselingStatus
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
requested
|
|
|
|
|
|
assigned
|
|
|
|
|
|
scheduled
|
|
|
|
|
|
in_service
|
|
|
|
|
|
completed
|
|
|
|
|
|
closed
|
|
|
|
|
|
cancelled
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果希望减少状态:
|
|
|
|
|
|
|
|
|
|
|
|
可采用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
status
|
|
|
|
|
|
+
|
|
|
|
|
|
next_action_type
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十五章 counseling_followups
|
|
|
|
|
|
|
|
|
|
|
|
用于服务必要记录。
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
counseling_service_id
|
|
|
|
|
|
operator_id
|
|
|
|
|
|
|
|
|
|
|
|
followup_type
|
|
|
|
|
|
|
|
|
|
|
|
summary
|
|
|
|
|
|
result_code
|
|
|
|
|
|
next_action
|
|
|
|
|
|
|
|
|
|
|
|
next_followup_at
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十六章 咨询记录边界
|
|
|
|
|
|
|
|
|
|
|
|
禁止存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
完整逐字聊天记录
|
|
|
|
|
|
录音默认存档
|
|
|
|
|
|
大段私人关系细节
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
仅保存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
服务需求摘要
|
|
|
|
|
|
本次服务结果
|
|
|
|
|
|
后续建议
|
|
|
|
|
|
必要风险转交
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十七章 用户咨询 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/counseling/services
|
|
|
|
|
|
POST /api/v1/counseling/services
|
|
|
|
|
|
GET /api/v1/counseling/services/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/counseling/services/{id}/cancel
|
|
|
|
|
|
POST /api/v1/counseling/services/{id}/feedback
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十八章 后台咨询 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/counseling/services
|
|
|
|
|
|
GET /api/v1/operator/counseling/services/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/assign
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/schedule
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/start
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/followups
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/complete
|
|
|
|
|
|
POST /api/v1/operator/counseling/services/{id}/close
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第三十九章 咨询权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling.service.view
|
|
|
|
|
|
counseling.service.assign
|
|
|
|
|
|
counseling.service.process
|
|
|
|
|
|
counseling.service.complete
|
|
|
|
|
|
counseling.note.view
|
|
|
|
|
|
counseling.note.create
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十章 Counselor 数据范围
|
|
|
|
|
|
|
|
|
|
|
|
默认:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
assigned
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
咨询人员只能访问:
|
|
|
|
|
|
|
|
|
|
|
|
> 明确分配给自己的服务。
|
|
|
|
|
|
|
|
|
|
|
|
不能全平台浏览所有咨询。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十一章 咨询与 Risk 的关系
|
|
|
|
|
|
|
|
|
|
|
|
如果咨询过程中发现:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
诈骗
|
|
|
|
|
|
骚扰
|
|
|
|
|
|
安全威胁
|
|
|
|
|
|
严重违法风险
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
通过:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
RiskEvent
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
转交。
|
|
|
|
|
|
|
|
|
|
|
|
source:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
咨询人员不直接执行封禁。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十二章 content_categories
|
|
|
|
|
|
|
|
|
|
|
|
用于轻量公益内容。
|
|
|
|
|
|
|
|
|
|
|
|
分类建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
relationship
|
|
|
|
|
|
premarital
|
|
|
|
|
|
marriage_culture
|
|
|
|
|
|
anti_fraud
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十三章 content_categories 字段
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
code
|
|
|
|
|
|
name
|
|
|
|
|
|
sort_order
|
|
|
|
|
|
status
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十四章 content_articles
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
category_id
|
|
|
|
|
|
title
|
|
|
|
|
|
summary
|
|
|
|
|
|
|
|
|
|
|
|
cover_file_id
|
|
|
|
|
|
content
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
publish_at
|
|
|
|
|
|
unpublish_at
|
|
|
|
|
|
|
|
|
|
|
|
created_by
|
|
|
|
|
|
updated_by
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十五章 ArticleStatus
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
draft
|
|
|
|
|
|
published
|
|
|
|
|
|
offline
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
配合时间字段。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十六章 内容格式
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 推荐:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Markdown
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
受控富文本
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
必须做:
|
|
|
|
|
|
|
|
|
|
|
|
> XSS 安全处理。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十七章 内容用户 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/content/categories
|
|
|
|
|
|
GET /api/v1/content/articles
|
|
|
|
|
|
GET /api/v1/content/articles/{id}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
支持:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
category
|
|
|
|
|
|
page
|
|
|
|
|
|
pageSize
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十八章 首页内容 API
|
|
|
|
|
|
|
|
|
|
|
|
可以复用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/content/articles?featured=true
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或者:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/home/content
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
推荐后者聚合首页。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第四十九章 内容后台 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/content/articles
|
|
|
|
|
|
POST /api/v1/operator/content/articles
|
|
|
|
|
|
GET /api/v1/operator/content/articles/{id}
|
|
|
|
|
|
PUT /api/v1/operator/content/articles/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/operator/content/articles/{id}/publish
|
|
|
|
|
|
POST /api/v1/operator/content/articles/{id}/offline
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十章 内容权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
content.view
|
|
|
|
|
|
content.create
|
|
|
|
|
|
content.edit
|
|
|
|
|
|
content.publish
|
|
|
|
|
|
content.offline
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十一章 不做内容互动表
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 明确不新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
article_comments
|
|
|
|
|
|
article_likes
|
|
|
|
|
|
article_favorites
|
|
|
|
|
|
followers
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
内容中心不是社区。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十二章 user_local_eligibilities
|
|
|
|
|
|
|
|
|
|
|
|
用于丹阳本地服务资格。
|
|
|
|
|
|
|
|
|
|
|
|
计划书要求项目面向丹阳本地工作、居住、户籍的适龄单身人群。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十三章 user_local_eligibilities 字段
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
user_id
|
|
|
|
|
|
|
|
|
|
|
|
eligibility_type
|
|
|
|
|
|
declared_region_code
|
|
|
|
|
|
|
|
|
|
|
|
verification_status
|
|
|
|
|
|
|
|
|
|
|
|
review_task_id
|
|
|
|
|
|
|
|
|
|
|
|
verified_at
|
|
|
|
|
|
verified_by
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十四章 EligibilityType
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
household_registration
|
|
|
|
|
|
residence
|
|
|
|
|
|
employment
|
|
|
|
|
|
other
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十五章 LocalVerificationStatus
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
declared
|
|
|
|
|
|
needs_evidence
|
|
|
|
|
|
pending_review
|
|
|
|
|
|
verified
|
|
|
|
|
|
rejected
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十六章 不要求所有用户默认上传佐证
|
|
|
|
|
|
|
|
|
|
|
|
业务流程:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
用户声明
|
|
|
|
|
|
↓
|
|
|
|
|
|
系统/人工判断是否需要补充
|
|
|
|
|
|
↓
|
|
|
|
|
|
需要时
|
|
|
|
|
|
↓
|
|
|
|
|
|
上传佐证
|
|
|
|
|
|
↓
|
|
|
|
|
|
人工审核
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这能降低注册门槛。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十七章 local_eligibility_evidences
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
local_eligibility_id
|
|
|
|
|
|
file_id
|
|
|
|
|
|
evidence_type
|
|
|
|
|
|
status
|
|
|
|
|
|
created_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十八章 EvidenceType
|
|
|
|
|
|
|
|
|
|
|
|
可以:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
employment_proof
|
|
|
|
|
|
residence_proof
|
|
|
|
|
|
household_proof
|
|
|
|
|
|
other
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
最终根据运营实际确认。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第五十九章 本地资格佐证属于敏感资料
|
|
|
|
|
|
|
|
|
|
|
|
默认:
|
|
|
|
|
|
|
|
|
|
|
|
> 普通红娘、活动人员不可见原文件。
|
|
|
|
|
|
|
|
|
|
|
|
审核员只在:
|
|
|
|
|
|
|
|
|
|
|
|
> 本地资格审核任务
|
|
|
|
|
|
|
|
|
|
|
|
中访问。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十章 本地资格用户 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/local-eligibility
|
|
|
|
|
|
POST /api/v1/local-eligibility/declaration
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/local-eligibility/evidences
|
|
|
|
|
|
POST /api/v1/local-eligibility/submit
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十一章 本地资格后台 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/local-eligibility/reviews
|
|
|
|
|
|
GET /api/v1/operator/local-eligibility/reviews/{id}
|
|
|
|
|
|
|
|
|
|
|
|
POST /api/v1/operator/local-eligibility/reviews/{id}/claim
|
|
|
|
|
|
POST /api/v1/operator/local-eligibility/reviews/{id}/approve
|
|
|
|
|
|
POST /api/v1/operator/local-eligibility/reviews/{id}/need-evidence
|
|
|
|
|
|
POST /api/v1/operator/local-eligibility/reviews/{id}/reject
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十二章 是否复用 review_tasks
|
|
|
|
|
|
|
|
|
|
|
|
强烈建议:
|
|
|
|
|
|
|
|
|
|
|
|
> 复用现有 review_tasks。
|
|
|
|
|
|
|
|
|
|
|
|
新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
review_type
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
profile
|
|
|
|
|
|
local_eligibility
|
|
|
|
|
|
photo
|
|
|
|
|
|
other
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
避免重新开发第二套审核工作流。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十三章 人脸核验设计
|
|
|
|
|
|
|
|
|
|
|
|
当前不建议新增自行存储的人脸表。
|
|
|
|
|
|
|
|
|
|
|
|
如果后续启用合规 Provider:
|
|
|
|
|
|
|
|
|
|
|
|
建议只增加到:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user_identities
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
liveness_verification_status
|
|
|
|
|
|
liveness_verified_at
|
|
|
|
|
|
verification_provider
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不保存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
face_embedding
|
|
|
|
|
|
face_template
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
除非未来有明确合法、必要且经过专项设计的理由。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十四章 service_programs
|
|
|
|
|
|
|
|
|
|
|
|
用于专项公益服务项目。
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
基层职工婚恋关爱
|
|
|
|
|
|
异地务工青年服务
|
|
|
|
|
|
青年公益婚恋计划
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十五章 service_programs 字段
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
code
|
|
|
|
|
|
name
|
|
|
|
|
|
description
|
|
|
|
|
|
|
|
|
|
|
|
organization_id
|
|
|
|
|
|
|
|
|
|
|
|
start_at
|
|
|
|
|
|
end_at
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
eligibility_description
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十六章 service_program_members
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
service_program_id
|
|
|
|
|
|
user_id
|
|
|
|
|
|
|
|
|
|
|
|
join_source
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
joined_at
|
|
|
|
|
|
exited_at
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十七章 ProgramMember 不做敏感价值标签
|
|
|
|
|
|
|
|
|
|
|
|
不要存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
low_value
|
|
|
|
|
|
difficult_match
|
|
|
|
|
|
disabled_user
|
|
|
|
|
|
poor_family
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
专项服务资格:
|
|
|
|
|
|
|
|
|
|
|
|
> 使用具体 Program Membership 表达。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十八章 service_programs API
|
|
|
|
|
|
|
|
|
|
|
|
用户端:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/service-programs
|
|
|
|
|
|
GET /api/v1/service-programs/{id}
|
|
|
|
|
|
POST /api/v1/service-programs/{id}/apply
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
后台:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/operator/service-programs
|
|
|
|
|
|
POST /api/v1/operator/service-programs
|
|
|
|
|
|
PUT /api/v1/operator/service-programs/{id}
|
|
|
|
|
|
|
|
|
|
|
|
GET /api/v1/operator/service-programs/{id}/members
|
|
|
|
|
|
POST /api/v1/operator/service-programs/{id}/members/{userId}/approve
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第六十九章 partner_organizations
|
|
|
|
|
|
|
|
|
|
|
|
此前已经有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organizations
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
因此是否需要 partner_organizations 应谨慎。
|
|
|
|
|
|
|
|
|
|
|
|
推荐:
|
|
|
|
|
|
|
|
|
|
|
|
> 不新增独立表。
|
|
|
|
|
|
|
|
|
|
|
|
直接扩展:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organizations
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organization_role
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或建立关联表:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organization_relationships
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十章 organization_relationships
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
organization_id
|
|
|
|
|
|
related_organization_id
|
|
|
|
|
|
|
|
|
|
|
|
relationship_type
|
|
|
|
|
|
|
|
|
|
|
|
start_at
|
|
|
|
|
|
end_at
|
|
|
|
|
|
status
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十一章 RelationshipType
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
sponsor
|
|
|
|
|
|
co_sponsor
|
|
|
|
|
|
operator
|
|
|
|
|
|
partner
|
|
|
|
|
|
venue_partner
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十二章 Activity 与组织关系
|
|
|
|
|
|
|
|
|
|
|
|
原来如果只有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organizer_org_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
建议升级为:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_organizations
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_id
|
|
|
|
|
|
organization_id
|
|
|
|
|
|
role
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
role:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
host
|
|
|
|
|
|
organizer
|
|
|
|
|
|
co_organizer
|
|
|
|
|
|
partner
|
|
|
|
|
|
venue_partner
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这更符合多部门联合活动场景。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十三章 主办单位身份不自动带来数据权限
|
|
|
|
|
|
|
|
|
|
|
|
这是硬规则。
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
organization_relationship = sponsor
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不代表:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
operator can view all users
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
数据权限仍由:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Role + Permission + DataScope
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
决定。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十四章 source_campaigns
|
|
|
|
|
|
|
|
|
|
|
|
用于公益来源追踪。
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
code
|
|
|
|
|
|
name
|
|
|
|
|
|
|
|
|
|
|
|
source_type
|
|
|
|
|
|
|
|
|
|
|
|
organization_id
|
|
|
|
|
|
activity_id
|
|
|
|
|
|
|
|
|
|
|
|
start_at
|
|
|
|
|
|
end_at
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十五章 SourceType
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_station
|
|
|
|
|
|
organization
|
|
|
|
|
|
activity
|
|
|
|
|
|
qr_code
|
|
|
|
|
|
official_account
|
|
|
|
|
|
community
|
|
|
|
|
|
enterprise
|
|
|
|
|
|
school
|
|
|
|
|
|
hospital
|
|
|
|
|
|
other
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十六章 user_acquisition_sources
|
|
|
|
|
|
|
|
|
|
|
|
如果只记录用户首次来源:
|
|
|
|
|
|
|
|
|
|
|
|
可以直接:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
users.source_campaign_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但为了未来支持多触点,建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user_acquisition_sources
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
user_id
|
|
|
|
|
|
source_campaign_id
|
|
|
|
|
|
source_scene
|
|
|
|
|
|
first_touch
|
|
|
|
|
|
created_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十七章 V1.1 简化建议
|
|
|
|
|
|
|
|
|
|
|
|
为了避免过度设计:
|
|
|
|
|
|
|
|
|
|
|
|
首次上线只实现:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
users.registration_source
|
|
|
|
|
|
users.source_campaign_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
足够。
|
|
|
|
|
|
|
|
|
|
|
|
未来再独立拆表。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十八章 二维码参数
|
|
|
|
|
|
|
|
|
|
|
|
推荐统一 Scene:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
sourceCampaignId
|
|
|
|
|
|
activityId
|
|
|
|
|
|
serviceLocationId
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不要把:
|
|
|
|
|
|
|
|
|
|
|
|
- 手机号
|
|
|
|
|
|
- 用户ID
|
|
|
|
|
|
- 敏感参数
|
|
|
|
|
|
|
|
|
|
|
|
直接放二维码。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第七十九章 首页聚合 API
|
|
|
|
|
|
|
|
|
|
|
|
为了减少首页多次请求,建议新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/home
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
返回:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
userStatus
|
|
|
|
|
|
banners
|
|
|
|
|
|
quickEntries
|
|
|
|
|
|
recommendations
|
|
|
|
|
|
recommendedServices
|
|
|
|
|
|
upcomingActivities
|
|
|
|
|
|
serviceLocation
|
|
|
|
|
|
featuredContent
|
|
|
|
|
|
safetyNotice
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十章 为什么需要 Home Aggregate API
|
|
|
|
|
|
|
|
|
|
|
|
否则首页可能请求:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
banner
|
|
|
|
|
|
user status
|
|
|
|
|
|
recommendation
|
|
|
|
|
|
activity
|
|
|
|
|
|
service station
|
|
|
|
|
|
content
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
六七次接口。
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 推荐由:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
HomeApplicationService
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
聚合。
|
|
|
|
|
|
|
|
|
|
|
|
但各业务模块仍保持自己的 Service。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十一章 Home API DTO
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"userState": {},
|
|
|
|
|
|
"banners": [],
|
|
|
|
|
|
"quickEntries": [],
|
|
|
|
|
|
"recommendations": [],
|
|
|
|
|
|
"serviceRecommendations": [],
|
|
|
|
|
|
"activities": [],
|
|
|
|
|
|
"serviceLocation": {},
|
|
|
|
|
|
"articles": [],
|
|
|
|
|
|
"safetyNotice": {}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十二章 Home API 不应自己实现业务逻辑
|
|
|
|
|
|
|
|
|
|
|
|
Home Service 只负责:
|
|
|
|
|
|
|
|
|
|
|
|
> 聚合。
|
|
|
|
|
|
|
|
|
|
|
|
不能复制:
|
|
|
|
|
|
|
|
|
|
|
|
- Match Eligibility
|
|
|
|
|
|
- Activity Eligibility
|
|
|
|
|
|
- Privacy Rules
|
|
|
|
|
|
|
|
|
|
|
|
必须调用正式业务模块。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十三章 QuickEntry 不需要数据库
|
|
|
|
|
|
|
|
|
|
|
|
8个核心入口已经正式固定。
|
|
|
|
|
|
|
|
|
|
|
|
因此:
|
|
|
|
|
|
|
|
|
|
|
|
> 不建议存 quick_entries 表。
|
|
|
|
|
|
|
|
|
|
|
|
前端/配置常量即可。
|
|
|
|
|
|
|
|
|
|
|
|
后台不允许运营随意重新排序。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十四章 FeatureFlag
|
|
|
|
|
|
|
|
|
|
|
|
可为尚未正式启用的入口配置:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counselingEnabled
|
|
|
|
|
|
premaritalEnabled
|
|
|
|
|
|
serviceLocationEnabled
|
|
|
|
|
|
contentEnabled
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
入口结构固定。
|
|
|
|
|
|
|
|
|
|
|
|
是否启用:
|
|
|
|
|
|
|
|
|
|
|
|
> Config控制。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十五章 Activity 增量字段
|
|
|
|
|
|
|
|
|
|
|
|
现有 activities 建议增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_type
|
|
|
|
|
|
registration_policy
|
|
|
|
|
|
target_group
|
|
|
|
|
|
industry_scope
|
|
|
|
|
|
post_event_interest_enabled
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十六章 ActivityType
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
matchmaking
|
|
|
|
|
|
interest_social
|
|
|
|
|
|
relationship_education
|
|
|
|
|
|
premarital_guidance
|
|
|
|
|
|
marriage_custom_culture
|
|
|
|
|
|
anti_fraud
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十七章 RegistrationPolicy
|
|
|
|
|
|
|
|
|
|
|
|
不建议只存一个巨大 JSON。
|
|
|
|
|
|
|
|
|
|
|
|
如果规则简单:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
requires_identity_verified
|
|
|
|
|
|
requires_local_eligibility
|
|
|
|
|
|
requires_profile_approved
|
|
|
|
|
|
requires_searching_status
|
|
|
|
|
|
requires_manual_review
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段或配置快照均可。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十八章 Activity Capacity 修正
|
|
|
|
|
|
|
|
|
|
|
|
不能默认写死:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
male_limit
|
|
|
|
|
|
female_limit
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
推荐:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
total_capacity
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
配:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_capacity_groups
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_id
|
|
|
|
|
|
group_code
|
|
|
|
|
|
rule_definition
|
|
|
|
|
|
capacity
|
|
|
|
|
|
approved_count
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
只有具体活动需要性别配额时才配置。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第八十九章 活动互选流程数据库增量
|
|
|
|
|
|
|
|
|
|
|
|
已有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_user_interests
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
继续使用。
|
|
|
|
|
|
|
|
|
|
|
|
新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
mutual_result_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
以及建议新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_mutual_connection_consents
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十章 activity_mutual_connection_consents
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
id
|
|
|
|
|
|
activity_id
|
|
|
|
|
|
user_a_id
|
|
|
|
|
|
user_b_id
|
|
|
|
|
|
|
|
|
|
|
|
user_a_confirmed_at
|
|
|
|
|
|
user_b_confirmed_at
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
match_id
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十一章 活动互选正式流程
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
A选择B
|
|
|
|
|
|
↓
|
|
|
|
|
|
B选择A
|
|
|
|
|
|
↓
|
|
|
|
|
|
形成mutual interest
|
|
|
|
|
|
↓
|
|
|
|
|
|
创建MutualConnectionConsent
|
|
|
|
|
|
↓
|
|
|
|
|
|
通知双方
|
|
|
|
|
|
↓
|
|
|
|
|
|
A确认开启沟通
|
|
|
|
|
|
↓
|
|
|
|
|
|
B确认开启沟通
|
|
|
|
|
|
↓
|
|
|
|
|
|
双方均确认
|
|
|
|
|
|
↓
|
|
|
|
|
|
创建新Match Episode
|
|
|
|
|
|
↓
|
|
|
|
|
|
创建Conversation
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这是 V1.1 正式建议实现。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十二章 不能直接 mutual interest → Match
|
|
|
|
|
|
|
|
|
|
|
|
这是对早期文档的重要修正。
|
|
|
|
|
|
|
|
|
|
|
|
除非未来用户协议明确把:
|
|
|
|
|
|
|
|
|
|
|
|
> “活动互选”
|
|
|
|
|
|
|
|
|
|
|
|
本身定义为:
|
|
|
|
|
|
|
|
|
|
|
|
> 同意建立线上沟通。
|
|
|
|
|
|
|
|
|
|
|
|
目前采用更安全的:
|
|
|
|
|
|
|
|
|
|
|
|
> 二阶段同意。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十三章 Matchmaker 增量
|
|
|
|
|
|
|
|
|
|
|
|
红娘模块基本不改。
|
|
|
|
|
|
|
|
|
|
|
|
只增加服务转介:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
matchmaker → counseling
|
|
|
|
|
|
matchmaker → activity
|
|
|
|
|
|
matchmaker → service_location
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十四章 Service Referral
|
|
|
|
|
|
|
|
|
|
|
|
可以增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_referrals
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但 V1.1 不建议新增新表。
|
|
|
|
|
|
|
|
|
|
|
|
直接利用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
source
|
|
|
|
|
|
source_business_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
创建相应服务申请即可。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十五章 Counseling来源
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user_self
|
|
|
|
|
|
matchmaker_referral
|
|
|
|
|
|
activity_followup
|
|
|
|
|
|
service_station
|
|
|
|
|
|
operator_assisted
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十六章 operator_assisted 使用边界
|
|
|
|
|
|
|
|
|
|
|
|
如果线下工作人员协助群众创建服务:
|
|
|
|
|
|
|
|
|
|
|
|
必须记录:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
request_source = operator_assisted
|
|
|
|
|
|
created_by_operator_id
|
|
|
|
|
|
user_confirmed_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不能工作人员自己替用户申请而不留痕。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十七章 新增 Operator Roles
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_station_operator
|
|
|
|
|
|
counselor
|
|
|
|
|
|
counseling_manager
|
|
|
|
|
|
content_editor
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十八章 角色是否必须独立
|
|
|
|
|
|
|
|
|
|
|
|
如果初期人员少:
|
|
|
|
|
|
|
|
|
|
|
|
一个 Operator 可以同时拥有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
matchmaker
|
|
|
|
|
|
service_station_operator
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或者:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counselor
|
|
|
|
|
|
content_editor
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不需要创建多个账号。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第九十九章 Service Station Operator 权限
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_location.view
|
|
|
|
|
|
service_appointment.view
|
|
|
|
|
|
service_appointment.process
|
|
|
|
|
|
activity.checkin
|
|
|
|
|
|
service.assisted_registration
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不拥有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user.full_search
|
|
|
|
|
|
message.content.review
|
|
|
|
|
|
user.sensitive.identity.full
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百章 Counselor 权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling.service.view
|
|
|
|
|
|
counseling.service.process
|
|
|
|
|
|
counseling.note.create
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
DataScope:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
assigned
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零一章 Content Editor 权限
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
content.view
|
|
|
|
|
|
content.create
|
|
|
|
|
|
content.edit
|
|
|
|
|
|
content.publish
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
默认:
|
|
|
|
|
|
|
|
|
|
|
|
> 无用户数据权限。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零二章 数据隐私增量要求
|
|
|
|
|
|
|
|
|
|
|
|
以下新增数据属于高敏感/较敏感:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
本地资格佐证
|
|
|
|
|
|
咨询申请内容
|
|
|
|
|
|
咨询服务摘要
|
|
|
|
|
|
婚前辅导服务内容
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
需要加入:
|
|
|
|
|
|
|
|
|
|
|
|
> Data Classification。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零三章 建议分类
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
L2
|
|
|
|
|
|
服务预约信息
|
|
|
|
|
|
|
|
|
|
|
|
L3
|
|
|
|
|
|
本地资格佐证
|
|
|
|
|
|
|
|
|
|
|
|
L3
|
|
|
|
|
|
婚恋咨询服务信息
|
|
|
|
|
|
|
|
|
|
|
|
L3
|
|
|
|
|
|
婚前辅导记录
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
具体分类可统一到现有安全规范。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零四章 咨询隐私
|
|
|
|
|
|
|
|
|
|
|
|
普通 Platform Admin:
|
|
|
|
|
|
|
|
|
|
|
|
> 不默认看咨询正文。
|
|
|
|
|
|
|
|
|
|
|
|
管理统计只看:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
数量
|
|
|
|
|
|
状态
|
|
|
|
|
|
完成情况
|
|
|
|
|
|
服务时效
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零五章 本地资格文件
|
|
|
|
|
|
|
|
|
|
|
|
Signed URL 前必须:
|
|
|
|
|
|
|
|
|
|
|
|
> 权限校验。
|
|
|
|
|
|
|
|
|
|
|
|
不能因为知道 FileId 就能下载。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零六章 新增审计行为
|
|
|
|
|
|
|
|
|
|
|
|
必须 Audit:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner发布/下架
|
|
|
|
|
|
服务站编辑
|
|
|
|
|
|
预约改期
|
|
|
|
|
|
咨询分配
|
|
|
|
|
|
咨询完成
|
|
|
|
|
|
查看本地资格证明
|
|
|
|
|
|
内容发布
|
|
|
|
|
|
专项项目成员审批
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零七章 SensitiveAccessLog 增量
|
|
|
|
|
|
|
|
|
|
|
|
至少:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
local_eligibility_evidence.view
|
|
|
|
|
|
counseling_sensitive_note.view
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果这些数据被定义为高敏感访问。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零八章 Notification 增量类型
|
|
|
|
|
|
|
|
|
|
|
|
增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_appointment_submitted
|
|
|
|
|
|
service_appointment_confirmed
|
|
|
|
|
|
service_appointment_changed
|
|
|
|
|
|
service_appointment_cancelled
|
|
|
|
|
|
|
|
|
|
|
|
counseling_assigned
|
|
|
|
|
|
counseling_scheduled
|
|
|
|
|
|
counseling_completed
|
|
|
|
|
|
|
|
|
|
|
|
premarital_service_scheduled
|
|
|
|
|
|
|
|
|
|
|
|
local_eligibility_need_evidence
|
|
|
|
|
|
local_eligibility_verified
|
|
|
|
|
|
local_eligibility_rejected
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百零九章 外部通知文案
|
|
|
|
|
|
|
|
|
|
|
|
微信订阅通知等外部消息:
|
|
|
|
|
|
|
|
|
|
|
|
> 使用中性文案。
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
你的公益服务预约已有更新
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
避免:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
你的婚恋焦虑心理咨询已安排
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
减少锁屏隐私暴露。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十章 Analytics 增量
|
|
|
|
|
|
|
|
|
|
|
|
新增指标:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
BANNER_IMPRESSIONS
|
|
|
|
|
|
BANNER_CLICKS
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_APPOINTMENTS
|
|
|
|
|
|
SERVICE_APPOINTMENTS_COMPLETED
|
|
|
|
|
|
|
|
|
|
|
|
COUNSELING_REQUESTS
|
|
|
|
|
|
COUNSELING_COMPLETED
|
|
|
|
|
|
|
|
|
|
|
|
PREMARITAL_GUIDANCE_REQUESTS
|
|
|
|
|
|
PREMARITAL_GUIDANCE_COMPLETED
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_STATION_USERS
|
|
|
|
|
|
|
|
|
|
|
|
CONTENT_VIEWS
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL_ELIGIBILITY_VERIFIED_USERS
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_PROGRAM_USERS
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十一章 服务用户数与服务人次
|
|
|
|
|
|
|
|
|
|
|
|
必须区分。
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
UNIQUE_SERVICE_USERS
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
与:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
SERVICE_OCCURRENCES
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
一个用户接受4次服务:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
用户数 = 1
|
|
|
|
|
|
服务人次 = 4
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十二章 有效交友匹配指标
|
|
|
|
|
|
|
|
|
|
|
|
计划书提出年度“有效交友匹配”。
|
|
|
|
|
|
|
|
|
|
|
|
建议系统定义:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
EFFECTIVE_CONNECTION
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
一种推荐口径:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Mutual Match
|
|
|
|
|
|
+
|
|
|
|
|
|
Two-Way Chat Started
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但这是建议指标口径。
|
|
|
|
|
|
|
|
|
|
|
|
最终对外政府报送口径需要运营方确认后固化。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十三章 首页 Analytics
|
|
|
|
|
|
|
|
|
|
|
|
建议事件:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
home_banner_impression
|
|
|
|
|
|
home_banner_click
|
|
|
|
|
|
|
|
|
|
|
|
home_quick_entry_click
|
|
|
|
|
|
|
|
|
|
|
|
home_recommendation_impression
|
|
|
|
|
|
home_activity_click
|
|
|
|
|
|
home_service_location_click
|
|
|
|
|
|
home_content_click
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十四章 业务事实仍以后端为准
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling completed
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
以:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling_services.completed_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
为准。
|
|
|
|
|
|
|
|
|
|
|
|
不能只靠:
|
|
|
|
|
|
|
|
|
|
|
|
> 前端埋点。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十五章 用户准入 API 修订
|
|
|
|
|
|
|
|
|
|
|
|
原:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/me/status
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
localEligibilityStatus
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"loggedIn": true,
|
|
|
|
|
|
"phoneBound": true,
|
|
|
|
|
|
"realNameVerified": true,
|
|
|
|
|
|
"localEligibility": "verified",
|
|
|
|
|
|
"profileCompleted": true,
|
|
|
|
|
|
"profileReview": "approved"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十六章 App Routing 修订
|
|
|
|
|
|
|
|
|
|
|
|
启动路由建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
登录
|
|
|
|
|
|
↓
|
|
|
|
|
|
手机号
|
|
|
|
|
|
↓
|
|
|
|
|
|
实名
|
|
|
|
|
|
↓
|
|
|
|
|
|
本地资格声明
|
|
|
|
|
|
↓
|
|
|
|
|
|
资料
|
|
|
|
|
|
↓
|
|
|
|
|
|
择偶条件
|
|
|
|
|
|
↓
|
|
|
|
|
|
审核
|
|
|
|
|
|
↓
|
|
|
|
|
|
正常首页
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十七章 本地资格补充佐证不能阻断所有公益内容
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
> 婚恋反诈课堂
|
|
|
|
|
|
|
|
|
|
|
|
可以开放。
|
|
|
|
|
|
|
|
|
|
|
|
真正婚恋匹配:
|
|
|
|
|
|
|
|
|
|
|
|
> 按平台 Eligibility 要求决定是否阻断。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十八章 Home API Capability
|
|
|
|
|
|
|
|
|
|
|
|
推荐后端返回:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
capabilities
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"canReceiveRecommendations": true,
|
|
|
|
|
|
"canSearchUsers": true,
|
|
|
|
|
|
"canApplyMatchmakingActivity": true,
|
|
|
|
|
|
"canApplyCounseling": true
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
前端不要自行推测。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百一十九章 Capability 是统一设计的重要延续
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 新模块加入后:
|
|
|
|
|
|
|
|
|
|
|
|
更应该由:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
CapabilityService
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
统一判断。
|
|
|
|
|
|
|
|
|
|
|
|
避免每个页面自己写:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
if verified && approved...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十章 新模块代码目录建议
|
|
|
|
|
|
|
|
|
|
|
|
Backend 增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
banner/
|
|
|
|
|
|
service_location/
|
|
|
|
|
|
appointment/
|
|
|
|
|
|
counseling/
|
|
|
|
|
|
content/
|
|
|
|
|
|
service_program/
|
|
|
|
|
|
local_eligibility/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十一章 不新增过度“Service Center”超级模块
|
|
|
|
|
|
|
|
|
|
|
|
虽然用户前台叫:
|
|
|
|
|
|
|
|
|
|
|
|
> 公益服务中心。
|
|
|
|
|
|
|
|
|
|
|
|
后端仍保持独立领域:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Appointment
|
|
|
|
|
|
Counseling
|
|
|
|
|
|
Content
|
|
|
|
|
|
ServiceLocation
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不要全部塞进:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
一个巨型模块。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十二章 Miniapp Service API
|
|
|
|
|
|
|
|
|
|
|
|
增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
services/banner.ts
|
|
|
|
|
|
services/serviceLocation.ts
|
|
|
|
|
|
services/appointment.ts
|
|
|
|
|
|
services/counseling.ts
|
|
|
|
|
|
services/content.ts
|
|
|
|
|
|
services/localEligibility.ts
|
|
|
|
|
|
services/serviceProgram.ts
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十三章 Admin Modules
|
|
|
|
|
|
|
|
|
|
|
|
新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
modules/banner/
|
|
|
|
|
|
modules/counseling/
|
|
|
|
|
|
modules/content/
|
|
|
|
|
|
modules/service-location/
|
|
|
|
|
|
modules/service-program/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十四章 API 幂等要求
|
|
|
|
|
|
|
|
|
|
|
|
以下 POST 建议支持:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Idempotency-Key
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
包括:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
创建服务预约
|
|
|
|
|
|
提交咨询申请
|
|
|
|
|
|
提交本地资格审核
|
|
|
|
|
|
申请专项服务
|
|
|
|
|
|
活动互选确认
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十五章 Service Appointment 并发
|
|
|
|
|
|
|
|
|
|
|
|
同一预约被:
|
|
|
|
|
|
|
|
|
|
|
|
- 用户取消
|
|
|
|
|
|
- 工作人员确认
|
|
|
|
|
|
|
|
|
|
|
|
同时发生。
|
|
|
|
|
|
|
|
|
|
|
|
最终必须:
|
|
|
|
|
|
|
|
|
|
|
|
> 单一合法状态。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十六章 Counseling Assign 并发
|
|
|
|
|
|
|
|
|
|
|
|
两名管理员同时给同一咨询分配人员。
|
|
|
|
|
|
|
|
|
|
|
|
必须:
|
|
|
|
|
|
|
|
|
|
|
|
> 原子更新。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十七章 Counseling Service 不使用医疗术语
|
|
|
|
|
|
|
|
|
|
|
|
API 内部可以叫:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
前台主要使用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
婚恋咨询
|
|
|
|
|
|
公益婚恋指导
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不要将服务包装成:
|
|
|
|
|
|
|
|
|
|
|
|
> 心理诊断。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十八章 API 错误码新增
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
BANNER_NOT_AVAILABLE
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_LOCATION_NOT_AVAILABLE
|
|
|
|
|
|
|
|
|
|
|
|
APPOINTMENT_CONFLICT
|
|
|
|
|
|
APPOINTMENT_ALREADY_CANCELLED
|
|
|
|
|
|
|
|
|
|
|
|
COUNSELING_SERVICE_NOT_AVAILABLE
|
|
|
|
|
|
COUNSELING_ALREADY_CLOSED
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL_ELIGIBILITY_REQUIRED
|
|
|
|
|
|
LOCAL_ELIGIBILITY_EVIDENCE_REQUIRED
|
|
|
|
|
|
LOCAL_ELIGIBILITY_REVIEWING
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_PROGRAM_NOT_AVAILABLE
|
|
|
|
|
|
SERVICE_PROGRAM_ALREADY_JOINED
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百二十九章 页面与 API 对照
|
|
|
|
|
|
|
|
|
|
|
|
## 首页 U18
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /home
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 服务站 U50
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /service-locations/{id}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 服务预约 U51
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
POST /service-appointments
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 我的预约 U52
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /service-appointments
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 婚恋课堂 U53
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /content/articles
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 内容详情 U54
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /content/articles/{id}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 婚恋咨询 U55/U56/U57
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /counseling/services
|
|
|
|
|
|
POST /counseling/services
|
|
|
|
|
|
GET /counseling/services/{id}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 婚前辅导 U58/U59
|
|
|
|
|
|
|
|
|
|
|
|
复用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/counseling/services
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
参数:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
serviceType = premarital_guidance
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 婚恋反诈 U60
|
|
|
|
|
|
|
|
|
|
|
|
复用:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/content/articles?category=anti_fraud
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 本地资格 U62/U63
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/local-eligibility
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十章 首页性能要求
|
|
|
|
|
|
|
|
|
|
|
|
Home Aggregate API:
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
P95 < 1.5s
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
作为技术目标。
|
|
|
|
|
|
|
|
|
|
|
|
具体上线 SLA 结合实际环境压测确认。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十一章 Home Cache
|
|
|
|
|
|
|
|
|
|
|
|
可缓存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner
|
|
|
|
|
|
公开服务站
|
|
|
|
|
|
公开内容
|
|
|
|
|
|
活动摘要
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不能盲目缓存:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
用户Capability
|
|
|
|
|
|
用户推荐
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
涉及用户状态必须正确失效。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十二章 首页推荐仍调用 Match Engine
|
|
|
|
|
|
|
|
|
|
|
|
Home API 不能自己写:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
SELECT users ORDER BY created_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
必须调用:
|
|
|
|
|
|
|
|
|
|
|
|
> RecommendationService。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十三章 Banner 定时任务
|
|
|
|
|
|
|
|
|
|
|
|
可:
|
|
|
|
|
|
|
|
|
|
|
|
> 查询时按时间过滤。
|
|
|
|
|
|
|
|
|
|
|
|
不一定需要定时 Job 改状态。
|
|
|
|
|
|
|
|
|
|
|
|
保持简单。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十四章 Service Location 当前只有一个阵地
|
|
|
|
|
|
|
|
|
|
|
|
仍然支持:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
status
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
未来暂停服务:
|
|
|
|
|
|
|
|
|
|
|
|
> 可立即下线预约入口。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十五章 服务站临时公告
|
|
|
|
|
|
|
|
|
|
|
|
建议直接增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
notice_text
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或使用 Notification/Content。
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 不需要独立:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
service_location_notices
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
除非后续公告很多。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十六章 婚前辅导双人参加
|
|
|
|
|
|
|
|
|
|
|
|
如果平台内双方希望共同参加:
|
|
|
|
|
|
|
|
|
|
|
|
可以增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
counseling_service_participants
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但 V1.1 第一阶段不强制。
|
|
|
|
|
|
|
|
|
|
|
|
简单方案:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
primary_user_id
|
|
|
|
|
|
companion_user_id nullable
|
|
|
|
|
|
companion_confirmed_at
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十七章 不允许一方擅自把对方加入辅导
|
|
|
|
|
|
|
|
|
|
|
|
如果 companion_user_id 是平台用户:
|
|
|
|
|
|
|
|
|
|
|
|
必须:
|
|
|
|
|
|
|
|
|
|
|
|
> 对方确认。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十八章 Service Program 与隐私
|
|
|
|
|
|
|
|
|
|
|
|
Program管理员只能看到:
|
|
|
|
|
|
|
|
|
|
|
|
> 服务项目必要信息。
|
|
|
|
|
|
|
|
|
|
|
|
不能因为用户加入某专项项目:
|
|
|
|
|
|
|
|
|
|
|
|
> 自动放开其全部婚恋档案。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百三十九章 内容与主办单位
|
|
|
|
|
|
|
|
|
|
|
|
文章可以增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
publisher_organization_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
> 乐活公益发布。
|
|
|
|
|
|
|
|
|
|
|
|
但内容展示不必每篇都堆多个组织Logo。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十章 用户服务历史统一视图
|
|
|
|
|
|
|
|
|
|
|
|
U64 公益服务记录建议由:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
ServiceHistoryQueryService
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
聚合:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
MatchmakerService
|
|
|
|
|
|
CounselingService
|
|
|
|
|
|
ActivityRegistration
|
|
|
|
|
|
ServiceAppointment
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不新建:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user_service_history
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
重复保存所有业务。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十一章 服务历史 API
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
GET /api/v1/me/service-history
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
返回统一结构:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "counseling",
|
|
|
|
|
|
"title": "公益婚恋咨询",
|
|
|
|
|
|
"occurredAt": "...",
|
|
|
|
|
|
"status": "completed",
|
|
|
|
|
|
"businessId": "..."
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十二章 数据库 Migration 建议顺序
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
V1xx__add_home_banners
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_service_locations
|
|
|
|
|
|
V1xx__add_service_appointments
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_counseling_services
|
|
|
|
|
|
V1xx__add_counseling_followups
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_content_categories
|
|
|
|
|
|
V1xx__add_content_articles
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_local_eligibility
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_service_programs
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__extend_activities_v11
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__add_activity_mutual_connection_consent
|
|
|
|
|
|
|
|
|
|
|
|
V1xx__extend_organization_relationships
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
具体编号由当前数据库版本决定。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十三章 数据库索引增量
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
home_banners(status,start_at,end_at,sort_order)
|
|
|
|
|
|
|
|
|
|
|
|
service_appointments(user_id,status)
|
|
|
|
|
|
service_appointments(service_location_id,preferred_date,status)
|
|
|
|
|
|
|
|
|
|
|
|
counseling_services(user_id,status)
|
|
|
|
|
|
counseling_services(assigned_operator_id,status)
|
|
|
|
|
|
counseling_services(scheduled_start_at)
|
|
|
|
|
|
|
|
|
|
|
|
content_articles(category_id,status,publish_at)
|
|
|
|
|
|
|
|
|
|
|
|
user_local_eligibilities(user_id)
|
|
|
|
|
|
user_local_eligibilities(verification_status)
|
|
|
|
|
|
|
|
|
|
|
|
service_program_members(service_program_id,status)
|
|
|
|
|
|
service_program_members(user_id,status)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十四章 唯一约束建议
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
user_local_eligibilities.user_id
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
原则上一个用户一个当前本地资格主体。
|
|
|
|
|
|
|
|
|
|
|
|
Program:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
UNIQUE(service_program_id,user_id)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
预约:
|
|
|
|
|
|
|
|
|
|
|
|
> 不建议做 lifetime unique。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十五章 状态历史
|
|
|
|
|
|
|
|
|
|
|
|
重要状态变更可以通过:
|
|
|
|
|
|
|
|
|
|
|
|
> Audit / domain event
|
|
|
|
|
|
|
|
|
|
|
|
保留。
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 不需要给每个小业务都建 status_history 表。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十六章 删除规则
|
|
|
|
|
|
|
|
|
|
|
|
Banner:
|
|
|
|
|
|
|
|
|
|
|
|
> soft disable。
|
|
|
|
|
|
|
|
|
|
|
|
ServiceLocation:
|
|
|
|
|
|
|
|
|
|
|
|
> disable。
|
|
|
|
|
|
|
|
|
|
|
|
Counseling:
|
|
|
|
|
|
|
|
|
|
|
|
> close,不物理删除。
|
|
|
|
|
|
|
|
|
|
|
|
Article:
|
|
|
|
|
|
|
|
|
|
|
|
> offline。
|
|
|
|
|
|
|
|
|
|
|
|
ServiceProgram:
|
|
|
|
|
|
|
|
|
|
|
|
> closed/disabled。
|
|
|
|
|
|
|
|
|
|
|
|
Local Evidence:
|
|
|
|
|
|
|
|
|
|
|
|
> 按数据保留政策处理。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十七章 数据保留待确认
|
|
|
|
|
|
|
|
|
|
|
|
需要写入:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
PENDING_DECISIONS.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
包括:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
本地资格佐证保留多久
|
|
|
|
|
|
婚恋咨询记录保留多久
|
|
|
|
|
|
婚前辅导记录保留多久
|
|
|
|
|
|
服务预约历史保留多久
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不得代码硬编码。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十八章 V1.1 权限矩阵增量
|
|
|
|
|
|
|
|
|
|
|
|
| 功能 | 平台管理员 | 红娘 | 咨询人员 | 服务站人员 | 内容编辑 | 志愿者 |
|
|
|
|
|
|
|---|---:|---:|---:|---:|---:|---:|
|
|
|
|
|
|
| Banner | 管理 | 否 | 否 | 否 | 按授权 | 否 |
|
|
|
|
|
|
| 服务站 | 管理 | 查看 | 查看 | 是 | 否 | 当前服务必要 |
|
|
|
|
|
|
| 预约 | 管理 | 相关 | 相关 | 是 | 否 | 否 |
|
|
|
|
|
|
| 婚恋咨询 | 管理摘要 | 转介 | 分配服务 | 申请登记 | 否 | 否 |
|
|
|
|
|
|
| 咨询记录 | 默认否 | 否 | Assigned | 否 | 否 | 否 |
|
|
|
|
|
|
| 内容 | 管理 | 查看 | 查看 | 查看 | 是 | 查看 |
|
|
|
|
|
|
| 本地资格证明 | 特殊权限 | 否 | 否 | 否 | 否 | 否 |
|
|
|
|
|
|
| 专项项目 | 管理 | 按服务 | 按服务 | 按服务 | 否 | 否 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百四十九章 关键隐私测试新增
|
|
|
|
|
|
|
|
|
|
|
|
必须增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
咨询人员访问未分配服务 → 403
|
|
|
|
|
|
|
|
|
|
|
|
红娘访问咨询记录 → 403
|
|
|
|
|
|
|
|
|
|
|
|
服务站人员访问身份证 → 403
|
|
|
|
|
|
|
|
|
|
|
|
内容编辑访问用户详情 → 403
|
|
|
|
|
|
|
|
|
|
|
|
机构A查看机构B专项项目成员 → 403
|
|
|
|
|
|
|
|
|
|
|
|
普通管理员直接访问本地资格佐证文件 → 403
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十章 首页测试新增
|
|
|
|
|
|
|
|
|
|
|
|
必须测试:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner按时间显示
|
|
|
|
|
|
|
|
|
|
|
|
Banner按用户状态显示
|
|
|
|
|
|
|
|
|
|
|
|
已过期Banner不显示
|
|
|
|
|
|
|
|
|
|
|
|
核心8入口顺序固定
|
|
|
|
|
|
|
|
|
|
|
|
未实名用户不返回真实推荐
|
|
|
|
|
|
|
|
|
|
|
|
Paused不返回新推荐
|
|
|
|
|
|
|
|
|
|
|
|
Successful不返回找对象推荐
|
|
|
|
|
|
|
|
|
|
|
|
Service Location停用时入口正确降级
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十一章 咨询流程测试
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
用户申请
|
|
|
|
|
|
↓
|
|
|
|
|
|
管理员分配
|
|
|
|
|
|
↓
|
|
|
|
|
|
咨询人员查看
|
|
|
|
|
|
↓
|
|
|
|
|
|
排期
|
|
|
|
|
|
↓
|
|
|
|
|
|
完成
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
同时验证:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
无权限Operator不能访问
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十二章 本地资格测试
|
|
|
|
|
|
|
|
|
|
|
|
必须:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
声明丹阳工作
|
|
|
|
|
|
↓
|
|
|
|
|
|
要求补充佐证
|
|
|
|
|
|
↓
|
|
|
|
|
|
上传
|
|
|
|
|
|
↓
|
|
|
|
|
|
审核
|
|
|
|
|
|
↓
|
|
|
|
|
|
verified
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
以及:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
无需补充的规则场景
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果运营以后允许。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十三章 Activity V1.1 测试重点
|
|
|
|
|
|
|
|
|
|
|
|
必须修订旧测试:
|
|
|
|
|
|
|
|
|
|
|
|
错误旧逻辑:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Activity mutual → Match
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
新逻辑:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Activity mutual
|
|
|
|
|
|
↓
|
|
|
|
|
|
Mutual Result
|
|
|
|
|
|
↓
|
|
|
|
|
|
A confirm communication
|
|
|
|
|
|
↓
|
|
|
|
|
|
B confirm communication
|
|
|
|
|
|
↓
|
|
|
|
|
|
Match
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十四章 如果一方不确认沟通
|
|
|
|
|
|
|
|
|
|
|
|
结果:
|
|
|
|
|
|
|
|
|
|
|
|
> 不创建Conversation。
|
|
|
|
|
|
|
|
|
|
|
|
单向拒绝原因:
|
|
|
|
|
|
|
|
|
|
|
|
> 不向对方详细披露。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十五章 Existing Active Match
|
|
|
|
|
|
|
|
|
|
|
|
如果活动双方已经有 Active Match:
|
|
|
|
|
|
|
|
|
|
|
|
> 不创建新 Match。
|
|
|
|
|
|
|
|
|
|
|
|
可以直接:
|
|
|
|
|
|
|
|
|
|
|
|
> 引导已有聊天。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十六章 Prior Unmatch
|
|
|
|
|
|
|
|
|
|
|
|
如果双方以前曾 Unmatch:
|
|
|
|
|
|
|
|
|
|
|
|
本次重新形成沟通:
|
|
|
|
|
|
|
|
|
|
|
|
> 创建新的 Match Episode。
|
|
|
|
|
|
|
|
|
|
|
|
不要恢复旧 Episode。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-09-16 14:37:44 +08:00
|
|
|
|
# 第一百五十七章 WorkBuddy 开发计划影响
|
2026-09-09 22:05:00 +08:00
|
|
|
|
|
|
|
|
|
|
原 Phase 01~26 不推翻。
|
|
|
|
|
|
|
|
|
|
|
|
建议调整如下。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十八章 在 Phase 04 增加
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Local Eligibility基础字段与页面
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但人脸核验具体 Provider:
|
|
|
|
|
|
|
|
|
|
|
|
> 保持 Pending。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百五十九章 Phase 11 Notification 增加
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
预约
|
|
|
|
|
|
咨询
|
|
|
|
|
|
本地资格
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
通知。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十章 Phase 13 后新增 Phase 13A
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
公益咨询与婚前辅导
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十一章 Phase 14 Activity 升级
|
|
|
|
|
|
|
|
|
|
|
|
新增:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
activity_type
|
|
|
|
|
|
registration_policy
|
|
|
|
|
|
行业专场
|
|
|
|
|
|
多组织关联
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十二章 Phase 16 Activity Mutual 修正
|
|
|
|
|
|
|
|
|
|
|
|
改成:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Mutual Interest
|
|
|
|
|
|
+
|
|
|
|
|
|
双向开启沟通确认
|
|
|
|
|
|
+
|
|
|
|
|
|
Match Episode
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十三章 Phase 19 Admin 增加
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner
|
|
|
|
|
|
公益咨询
|
|
|
|
|
|
内容
|
|
|
|
|
|
服务站
|
|
|
|
|
|
专项服务项目
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十四章 Phase 20 Analytics 增加
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
服务站
|
|
|
|
|
|
咨询
|
|
|
|
|
|
婚前辅导
|
|
|
|
|
|
内容
|
|
|
|
|
|
专项项目
|
|
|
|
|
|
来源渠道
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十五章 推荐新增 Phase 19A
|
|
|
|
|
|
|
|
|
|
|
|
如果希望开发计划更清晰,可以在 Phase 19 前增加:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Phase 19A 公益内容与服务站
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但不是必须。
|
|
|
|
|
|
|
|
|
|
|
|
仍可放 Phase 19。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十六章 V1.1 新增配置
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
banner.maxActiveCount
|
|
|
|
|
|
|
|
|
|
|
|
localEligibility.enabled
|
|
|
|
|
|
localEligibility.evidencePolicy
|
|
|
|
|
|
|
|
|
|
|
|
counseling.enabled
|
|
|
|
|
|
premarital.enabled
|
|
|
|
|
|
|
|
|
|
|
|
serviceLocation.enabled
|
|
|
|
|
|
|
|
|
|
|
|
content.enabled
|
|
|
|
|
|
|
|
|
|
|
|
activity.mutualConnectionConfirmationEnabled
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十七章 已确认配置
|
|
|
|
|
|
|
|
|
|
|
|
以下功能:
|
|
|
|
|
|
|
|
|
|
|
|
> 已确认进入 V1.1。
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Banner
|
|
|
|
|
|
8个核心入口
|
|
|
|
|
|
服务站
|
|
|
|
|
|
婚恋咨询
|
|
|
|
|
|
婚前辅导
|
|
|
|
|
|
婚恋课堂
|
|
|
|
|
|
婚恋反诈
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
所以不是:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
PENDING_PRODUCT_SCOPE
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Feature Flag 只是为了灰度和故障关闭。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十八章 仍然待确认
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
人脸核验是否首发强制
|
|
|
|
|
|
人脸Provider
|
|
|
|
|
|
所有用户是否强制上传工作/居住佐证
|
|
|
|
|
|
佐证触发规则
|
|
|
|
|
|
咨询人员实际组织和资质
|
|
|
|
|
|
服务站开放时间
|
|
|
|
|
|
Banner最大数量
|
|
|
|
|
|
服务预约具体时段规则
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百六十九章 V1.1 API 模块总览
|
|
|
|
|
|
|
|
|
|
|
|
新增后:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/home
|
|
|
|
|
|
|
|
|
|
|
|
/banners(后台)
|
|
|
|
|
|
/service-locations
|
|
|
|
|
|
/service-appointments
|
|
|
|
|
|
|
|
|
|
|
|
/counseling/services
|
|
|
|
|
|
|
|
|
|
|
|
/content/categories
|
|
|
|
|
|
/content/articles
|
|
|
|
|
|
|
|
|
|
|
|
/local-eligibility
|
|
|
|
|
|
|
|
|
|
|
|
/service-programs
|
|
|
|
|
|
|
|
|
|
|
|
/operator/...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十章 不需要增加 API Gateway
|
|
|
|
|
|
|
|
|
|
|
|
仍然:
|
|
|
|
|
|
|
|
|
|
|
|
> 单一 Modular Monolith Backend。
|
|
|
|
|
|
|
|
|
|
|
|
所有:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/api/v1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
统一服务。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十一章 不需要为内容单独做CMS服务
|
|
|
|
|
|
|
|
|
|
|
|
Content Module:
|
|
|
|
|
|
|
|
|
|
|
|
> 直接在主后台。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十二章 不需要为咨询单独开发App
|
|
|
|
|
|
|
|
|
|
|
|
咨询人员:
|
|
|
|
|
|
|
|
|
|
|
|
> 登录同一 Web 后台。
|
|
|
|
|
|
|
|
|
|
|
|
根据权限看到:
|
|
|
|
|
|
|
|
|
|
|
|
> 公益咨询工作台。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十三章 不需要服务站专用App
|
|
|
|
|
|
|
|
|
|
|
|
服务站人员:
|
|
|
|
|
|
|
|
|
|
|
|
> 响应式 Web 后台。
|
|
|
|
|
|
|
|
|
|
|
|
现场手机/平板也能使用。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十四章 V1.1数据库最终新增结构
|
|
|
|
|
|
|
|
|
|
|
|
最终建议确认如下:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
home_banners
|
|
|
|
|
|
|
|
|
|
|
|
service_locations
|
|
|
|
|
|
service_appointments
|
|
|
|
|
|
|
|
|
|
|
|
counseling_services
|
|
|
|
|
|
counseling_followups
|
|
|
|
|
|
|
|
|
|
|
|
content_categories
|
|
|
|
|
|
content_articles
|
|
|
|
|
|
|
|
|
|
|
|
user_local_eligibilities
|
|
|
|
|
|
local_eligibility_evidences
|
|
|
|
|
|
|
|
|
|
|
|
service_programs
|
|
|
|
|
|
service_program_members
|
|
|
|
|
|
|
|
|
|
|
|
organization_relationships
|
|
|
|
|
|
activity_organizations
|
|
|
|
|
|
|
|
|
|
|
|
activity_mutual_connection_consents
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这是 V1.1 最合理的增量范围。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十五章 明确不新增
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
community_posts
|
|
|
|
|
|
comments
|
|
|
|
|
|
group_chat
|
|
|
|
|
|
feed
|
|
|
|
|
|
points
|
|
|
|
|
|
user_rankings
|
|
|
|
|
|
financial_budget
|
|
|
|
|
|
donations
|
|
|
|
|
|
face_embeddings
|
|
|
|
|
|
psychological_medical_records
|
|
|
|
|
|
complex_workflow_engine
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十六章 V1.1数据模型核心原则
|
|
|
|
|
|
|
|
|
|
|
|
> **已有业务不重复建表。**
|
|
|
|
|
|
|
|
|
|
|
|
> **新的公益服务尽量复用现有用户、组织、通知、审计、风险和文件模块。**
|
|
|
|
|
|
|
|
|
|
|
|
> **婚前辅导复用 CounselingService,而不是另造一套系统。**
|
|
|
|
|
|
|
|
|
|
|
|
> **婚恋反诈复用 Content + Risk,而不是另造反诈平台。**
|
|
|
|
|
|
|
|
|
|
|
|
> **服务站预约和专业咨询分开:预约是“什么时候来”,咨询是“具体提供什么服务”。**
|
|
|
|
|
|
|
|
|
|
|
|
> **本地资格独立于实名认证,避免把两个不同概念混为一谈。**
|
|
|
|
|
|
|
|
|
|
|
|
> **活动继续共用 Activity,但通过 ActivityType 和 RegistrationPolicy 支持多类型公益活动。**
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十七章 V1.1 API核心原则
|
|
|
|
|
|
|
|
|
|
|
|
> **所有核心行为继续服务端判断。**
|
|
|
|
|
|
|
|
|
|
|
|
> **Home API只聚合,不复制业务规则。**
|
|
|
|
|
|
|
|
|
|
|
|
> **新增服务必须复用统一Authentication、Permission、DataScope和Audit。**
|
|
|
|
|
|
|
|
|
|
|
|
> **所有敏感文件访问先授权再签名。**
|
|
|
|
|
|
|
|
|
|
|
|
> **所有关键POST考虑幂等。**
|
|
|
|
|
|
|
|
|
|
|
|
> **所有待确认参数配置化。**
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 第一百七十八章 最终结论
|
|
|
|
|
|
|
|
|
|
|
|
V1.1 增量后,系统数据库和 API 将从原来的:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
用户
|
|
|
|
|
|
+
|
|
|
|
|
|
匹配
|
|
|
|
|
|
+
|
|
|
|
|
|
聊天
|
|
|
|
|
|
+
|
|
|
|
|
|
活动
|
|
|
|
|
|
+
|
|
|
|
|
|
红娘
|
|
|
|
|
|
+
|
|
|
|
|
|
风控
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
正式升级为:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
可信用户体系
|
|
|
|
|
|
+
|
|
|
|
|
|
本地资格
|
|
|
|
|
|
+
|
|
|
|
|
|
线上婚恋匹配
|
|
|
|
|
|
+
|
|
|
|
|
|
安全聊天
|
|
|
|
|
|
+
|
|
|
|
|
|
公益红娘
|
|
|
|
|
|
+
|
|
|
|
|
|
多类型公益活动
|
|
|
|
|
|
+
|
|
|
|
|
|
固定线下服务站
|
|
|
|
|
|
+
|
|
|
|
|
|
服务预约
|
|
|
|
|
|
+
|
|
|
|
|
|
婚恋咨询
|
|
|
|
|
|
+
|
|
|
|
|
|
婚前辅导
|
|
|
|
|
|
+
|
|
|
|
|
|
婚恋课堂
|
|
|
|
|
|
+
|
|
|
|
|
|
婚恋反诈
|
|
|
|
|
|
+
|
|
|
|
|
|
专项公益项目
|
|
|
|
|
|
+
|
|
|
|
|
|
多组织协同
|
|
|
|
|
|
+
|
|
|
|
|
|
项目服务统计
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
同时仍然保持:
|
|
|
|
|
|
|
|
|
|
|
|
> 一个 PostgreSQL。
|
|
|
|
|
|
|
|
|
|
|
|
> 一个模块化单体后端。
|
|
|
|
|
|
|
|
|
|
|
|
> 一个微信小程序。
|
|
|
|
|
|
|
|
|
|
|
|
> 一个统一 Web 后台。
|
|
|
|
|
|
|
|
|
|
|
|
没有因为 V1.1 新增公益服务而引入不必要的微服务、工作流引擎、社区系统或大数据架构。
|
|
|
|
|
|
|
|
|
|
|
|
这使“善缘丹阳”既能完整承接最新项目计划书要求的线上线下一体化公益服务,又能保持开发、部署和后期维护成本可控。
|