## 背景 用户指令:「先将 codex 的任务一并改为 workbuddy 的任务」。 Codex 已不再运行,当前由 WorkBuddy 承担开发执行,文档署名需同步。 ## 判定规则(用大小写精确区分) | 类别 | 写法 | 处置 | |---|---|---| | 工具署名 | 大写 Codex | → WorkBuddy | | 分支名 | codex/ui-v11-fidelity | → workbuddy-ui-v11-fidelity(去斜杠,规避本仓库 ref 清理) | | 已删除文件的历史路径 | 小写 2026-09-11-codex-baseline-cleanup* | 保持原样(记录真实曾存在的文件名,改了即失真) | 结果:26 个文件、126 处署名替换。残留小写 codex 仅 8 处,全部是历史路径。 ## 文件重命名(git mv,保留历史) - Codex开发执行总指令、项目规则与任务拆解.md → WorkBuddy 同名 - Codex首轮启动提示词 + Phase 01~Phase 26 Jira级任务清单 + 每阶段验收条件.md → WorkBuddy 同名 - docs/善缘丹阳 V1.1 Codex 开发执行计划修订版.md → docs/善缘丹阳 V1.1 WorkBuddy 开发执行计划修订版.md - docs/善缘丹阳 V1.1 Codex-Jira 最终开发任务增量清单.md → docs/善缘丹阳 V1.1 WorkBuddy-Jira 最终开发任务增量清单.md - docs/善缘丹阳 V1.1 Codex最终主启动提示词(整合版).md → docs/善缘丹阳 V1.1 WorkBuddy最终主启动提示词(整合版).md 引用已同步:AGENTS.md 6 处、AGENTS_SUMMARY.md、以及 4 份计划/规格文档。 ## AGENTS.md 两处特别处理 - 「git config user.name = Codex」一句改为不点名工具的表述 - 「feature/ fix/ codex/ ui/ 前缀」示例去掉 codex/ ## 有意未改动 - ui-tests/ui-document-baseline-contracts.mjs 的废弃清单仍列 codex-baseline-cleanup* 那是「必须不存在」的断言目标,改了会让哨兵失去意义 - 仓库 git config user.name 仍是 Codex —— 未擅自改动环境身份。 如需彻底交接:git config user.name WorkBuddy && git config user.email workbuddy@local 验证:UI 契约门禁 13/13;AGENTS.md 零 Codex 残留;5 个新文件名与全部引用一致
3507 lines
43 KiB
Markdown
3507 lines
43 KiB
Markdown
# “善缘丹阳”公益婚恋服务平台
|
||
# 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。
|
||
|
||
---
|
||
|
||
# 第一百五十七章 WorkBuddy 开发计划影响
|
||
|
||
原 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 新增公益服务而引入不必要的微服务、工作流引擎、社区系统或大数据架构。
|
||
|
||
这使“善缘丹阳”既能完整承接最新项目计划书要求的线上线下一体化公益服务,又能保持开发、部署和后期维护成本可控。 |