release: freeze 2026-10-15 validated release baseline
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s

This commit is contained in:
WorkBuddy
2026-10-15 09:47:31 +08:00
parent 827c23db1d
commit 3c2b967274
149 changed files with 4324 additions and 348 deletions
@@ -0,0 +1,54 @@
# 全平台公开编号覆盖清单
日期:2026-10-14。状态:Task 1 盘点完成;编号实现未完成。
用户已确认择偶条件“下一步”重新编译后目视复验通过。本轮不改变该页面。
## 数据与接口覆盖矩阵
内部主键、关联字段和操作参数继续使用 UUID;以下字段为展示增量,不能作为授权凭证。
| 实体 / 关联 | 创建入口(Service) | 读取与 DTO 覆盖 | Web / 小程序 | 展示编号 | 权限要求 |
|---|---|---|---|---|---|
| users / id | AuthService;IdentityVerificationService 生成用户编号 | UserService、用户列表/详情、推荐与举报关联查询 | 用户管理、用户详情、审核、推荐;个人资料、推荐卡片 | displayNumber / YH | 维持实名、脱敏、DataScope |
| operators / id | OperatorManagementService | 操作员、分配、联系授权、审计与咨询人员查询 | 人员管理、红娘服务;红娘工作台 | displayId / HN 或 GL | 不扩大组织范围 |
| activities / id | ActivityService.createActivity / createActivityFromAdmin | ActivityService、ActivityInterestService、CheckinService | 活动管理、互选、签到;活动详情、转介确认 | displayId / HD | 单向意向保密 |
| review_tasks / id、user_id | ReviewService 及审核任务生产方 | ReviewController、ReviewTaskDetailDTO、用户关联 | ReviewView | displayId / RW;userDisplayNumber / YH | 审核领取、敏感材料权限不变 |
| reports / id、reported_user_id | ReportService | 举报列表/详情、举报用户关联 | ReportCenterView;举报页面 | displayId / JB;reportedUserDisplayNumber / YH | 案件权限与数据范围不变 |
| matchmaker_services / id、user_id、assigned_operator_id | MatchmakerService.submitServiceRequest;MatchmakerServiceService.applyService | MatchmakerManagementService、服务详情/列表 | MatchmakerManagementView;工作台、服务详情、服务进展 | displayId / FW;关联 YH、HN | 仅负责/授权服务 |
| matchmaker_recommendations / id、user_id、target_user_id | MatchmakerService.createRecommendation;MatchmakerServiceService.recommendPartner | 推荐列表、管理端及用户端推荐详情 | 红娘推荐列表;工作台、推荐进展 | displayId / TJ;userDisplayNumber、targetUserDisplayNumber / YH | 不能代用户 Like |
| matchmaker_contact_authorizations / id、operator_id、user_id | ContactAuthorizationService.request | MatchmakerContactAuthorizationMapper 与审批响应 | 联系授权审批(红娘服务下);工作台 | displayId / LX;operatorDisplayId、userDisplayNumber | 手机号仍授权后读取并审计 |
| matchmaker_assignments / id、user_id、operator_id | MatchmakerAssignmentService.create / transfer | 分配查询与红娘工作台 | 分配列表;工作台 | displayId / FP;关联 YH、HN | 分配范围不变 |
| matchmaker_followups / id、service_id、operator_id | MatchmakerServiceService.addFollowup 及其他跟进写入方 | 服务详情跟进列表 | 服务详情;服务进展 | displayId / GJ;关联 FW、HN/GL | 不读取咨询正文 |
| service_appointments / id、user_id、assigned_operator_id | ServiceAppointmentService;ReferralService.referToServiceStation | 预约运营列表与转介历史 Map | ServiceAppointmentView、ReferralManagementView;转介确认 | 预约 displayId / YY **待确认**;转介 referralDisplayId / ZF | 预约所属人员权限不变 |
| activity_registrations / id、activity_id、user_id | ActivityService.registerActivity;ReferralService.referToActivity | 活动报名、转介历史 Map | 活动参与者、转介记录;转介确认 | 关联 HD、YH;转介 referralDisplayId / ZF | 不为未展示的普通报名 ID 新造前缀 |
| MatchmakerService.ReferralRecord(非持久化 Java record) | MatchmakerService.createReferral | 返回值、通知文案;代码注释称有跟进写入,但方法未实际 insert | 服务转介与通知调用链需后续行为验证 | ZF;必须先保证可持久化追溯 | 保持“转介建议,用户自行确认”语义 |
| audit_logs / operator_id、resource_id | AuditLogService | 审计列表、资源编号解析 | AuditLogView | 人员 HN/GL;资源复用已确认编号 | 不可解析/无权限显示类型与脱敏说明 |
| organization / organization_id | 组织管理 | 活动组织列表与人员 orgMap | ActivityManagementView、OperatorManagementView | 建议显示已有机构名称,不新增机构编号 | 组织关系不授予数据权限 |
| 专项服务参与者 / user_id | ServiceProgram 相关创建方 | 参与者列表 | ServiceProgramView | 复用 YH | 数据范围不变 |
## 模板检查证据
执行 `node tests/public-id-display-coverage.cjs --self-check`:7 项 PASS。
执行 `node tests/public-id-display-coverage.cjs`:扫描 114 个 Vue/WXML 模板,31 个审查候选,退出码 1。该 FAIL 是尚未修复的公开编号差距,不能将清单完成写成全局展示 PASS。
确认可见 UUID / UUID 输入集中在:活动签到及互选、红娘推荐及联系授权、审核、举报、预约、转介、专项服务参与者、审计、小程序工作台。具体文件与行号由检查命令即时输出。
人工剔除的名称映射候选:`ContentManagementView` 的 `categoryLabel(row.categoryId)`;`OperatorManagementView` 的 `orgMap[row.organizationId]` 及其组织列有自定义名称模板。检查器保守报告,不能仅因字段含 Id 就认定实际泄露。
额外动态文案差距:`miniapp/pages/referral-confirmation/referral-confirmation.js` 将 `activityId` 作为 detail 文案;`ReferralService.getOperatorName` 在找不到操作员或异常时回退 operatorId;`MatchmakerService.createReferral` 将 referralTarget 拼入通知。需要在后续 DTO/行为测试中处理,模板扫描不能发现这些间接绑定。
编号输入覆盖:推荐用户选择、人工签到用户、互选活动搜索、咨询人员分配、Banner 的站内目标选择。推荐/签到/分配需解析展示编号或使用选项选择器;Banner 可优先按已有活动/文章名称选择并保留内部寻址,不因内部配置键新增无业务意义的编号。
## 实施前待确认的具体增量
建议预约编号 `YY20261014001`。预约与转介分别显示 `YY`、`ZF`:同一预约由红娘发起时具有预约公开号和转介公开号;活动转介使用 ZF,活动本身仍为 HD。无需变更 UUID 路由,也无需新建统一转介表;为已有预约/报名记录增加转介编号字段(仅转介记录非空)。
机构展示名称;无公开编号的审计资源依既有规格显示中文类型和脱敏说明。以上不新增其他前缀。
## 后续验证边界
本轮仅新增盘点与检查工具,未执行数据库迁移、全量后端测试、端到端页面验收。后端覆盖测试应在 Task 3 使用真实响应与创建流程验证,不写仅检查源码字符串的空泛 Java 测试。
迁移前必须验证用户实名性别缺失的处理、旧新号映射、并发与回滚。普通序号 999 可使用,超过 999 拒绝;男性最多 500 个奇号,女性最多 499 个偶号。H2 测试不能代替 PostgreSQL UPSERT 并发与 Flyway 实测。