后端: - V056 matchmaker_contact_authorizations 表:channel CHECK(phone/offline_meeting/full_contact)、六态状态机(pending_approval→pending_consent→active→expired/revoked, →rejected)、部分唯一索引 uq_mm_contact_auth_active 防同红娘-同用户-同渠道多 ACTIVE、双态惰性收敛(active 过期 + pending_consent 超同意窗口) - ContactAuthorizationConfig 五 canonical key(matchmaker.contact.*):enabled 代码缺省 false fail-safe(yml 显式 true)/approver-authorities 双岗并列/consent-deadline-hours 72/default-validity-days 7/retention-days 365,全部 DEFAULT+CONFIG 待产品+法务终审 - ContactAuthorizationPolicy.assertContactAllowed(404 化 deny 先审计后 404) + canContact 徽标查询 - ContactAuthorizationService:request(须有效分配+purpose 必填)/approve(权限码动态判定∈配置+组长组织范围)/consent(用户本人,仅 pending_consent)/decline/revoke(reason 必填)/disclose(唯一披露出口:enabled fail-safe→assertActiveAssignment→assertContactAllowed→仅返回 phone/disclosedAt/authorizationId 三键,每次落 SensitiveAccessLog user_phone_disclosure,phone 不落应用日志) - 双控制器:运营端 /operator/matchmaker/contact-authorizations + C 端 /contact-authorizations(UserPrincipal 归属校验,独立端点无预同意参数),不碰 SecurityConfig 守卫翻转(机械锁强制复审机制按设计生效): - MatchmakerContactGuardTest 由「锁不存在」翻转为「锁新契约」五条:回显白名单类收敛/端点前缀收敛(受治理三包)/到期语义/consent 独立性三端扫描(后端+miniapp+admin-web,修复原只扫后端的预同意参数逃逸缺口)/ReferralService 白名单与无 @Scheduled 保留 - run-backend-contracts CURATED 18→20 前端: - miniapp 新页 pages/contact-consent(目的/渠道/窗口明示+独立同意拒绝按钮无预勾选,app.json 第 64 页) + 红娘工作台申请/列表/撤销 - admin-web「联系授权审批」tab(审批岗队列+本人授权撤销,枚举码中文映射) 验证:mvn verify 895/895(3 skip)、UI 契约 24/24(64 页)、后端契约门禁 228/CURATED 20、小程序真编译 87 WXML 0 失败;负向注入 5(工程师)+2(QA 不同落点)判红→还原复绿;QA 抓 disclose 键数收敛断言缺口已补并回归;QA fresh eyes PASS 0 P0/P1
118 lines
4.1 KiB
JSON
118 lines
4.1 KiB
JSON
{
|
|
"usingComponents": {},
|
|
"sitemapLocation": "sitemap.json",
|
|
"style": "v2",
|
|
"pages": [
|
|
"pages/index/index",
|
|
"pages/discover/discover",
|
|
"pages/messages/messages",
|
|
"pages/activity/activity",
|
|
"pages/mine/mine",
|
|
"pages/login/login",
|
|
"pages/bind-phone/bind-phone",
|
|
"pages/verification/verification",
|
|
"pages/profile-basic/profile-basic",
|
|
"pages/profile-lifestyle/profile-lifestyle",
|
|
"pages/profile-photos/profile-photos",
|
|
"pages/profile-interests/profile-interests",
|
|
"pages/profile-intent/profile-intent",
|
|
"pages/profile-intro/profile-intro",
|
|
"pages/profile-preference/profile-preference",
|
|
"pages/profile-confirm/profile-confirm",
|
|
"pages/review-pending/review-pending",
|
|
"pages/review-rejected/review-rejected",
|
|
"pages/profile-detail/profile-detail",
|
|
"pages/fate-center/fate-center",
|
|
"pages/chat/chat",
|
|
"pages/activity-detail/activity-detail",
|
|
"pages/activity-register/activity-register",
|
|
"pages/my-activities/my-activities",
|
|
"pages/checkin/checkin",
|
|
"pages/activity-feedback/activity-feedback",
|
|
"pages/activity-matches/activity-matches",
|
|
"pages/matchmaker/matchmaker",
|
|
"pages/matchmaker-apply/matchmaker-apply",
|
|
"pages/matchmaker-progress/matchmaker-progress",
|
|
"pages/settings/settings",
|
|
"pages/privacy-settings/privacy-settings",
|
|
"pages/relationship-status/relationship-status",
|
|
"pages/blacklist/blacklist",
|
|
"pages/notifications/notifications",
|
|
"pages/report/report",
|
|
"pages/my-reports/my-reports",
|
|
"pages/help-center/help-center",
|
|
"pages/about/about",
|
|
"pages/account-status-page/account-status-page",
|
|
"pages/account-logout/account-logout",
|
|
"pages/account-status/account-status",
|
|
"pages/appeal/appeal",
|
|
"pages/matchmaker-login/matchmaker-login",
|
|
"pages/matchmaker-workbench/matchmaker-workbench",
|
|
"pages/local-eligibility/local-eligibility",
|
|
"pages/local-eligibility-supplement/local-eligibility-supplement",
|
|
"pages/counseling-intro/counseling-intro",
|
|
"pages/counseling-request/counseling-request",
|
|
"pages/my-counseling/my-counseling",
|
|
"pages/premarital-intro/premarital-intro",
|
|
"pages/premarital-request/premarital-request",
|
|
"pages/activity-mutual-result/activity-mutual-result",
|
|
"pages/activity-mutual-waiting/activity-mutual-waiting",
|
|
"pages/service-center/service-center",
|
|
"pages/service-station/service-station",
|
|
"pages/service-appointment/service-appointment",
|
|
"pages/my-appointments/my-appointments",
|
|
"pages/content/content",
|
|
"pages/content-detail/content-detail",
|
|
"pages/anti-fraud/anti-fraud",
|
|
"pages/service-program/service-program",
|
|
"pages/service-history/service-history",
|
|
"pages/contact-consent/contact-consent"
|
|
],
|
|
"window": {
|
|
"navigationBarTitleText": "丹阳公益婚恋",
|
|
"navigationBarBackgroundColor": "#171D72",
|
|
"navigationBarTextStyle": "white",
|
|
"backgroundColor": "#F4F5FA",
|
|
"backgroundTextStyle": "dark",
|
|
"enablePullDownRefresh": false
|
|
},
|
|
"tabBar": {
|
|
"color": "#47528C",
|
|
"selectedColor": "#F4005A",
|
|
"backgroundColor": "#FFFFFF",
|
|
"borderStyle": "black",
|
|
"list": [
|
|
{
|
|
"pagePath": "pages/index/index",
|
|
"text": "首页",
|
|
"iconPath": "assets/tabbar/home.png",
|
|
"selectedIconPath": "assets/tabbar/home-active.png"
|
|
},
|
|
{
|
|
"pagePath": "pages/discover/discover",
|
|
"text": "找对象",
|
|
"iconPath": "assets/tabbar/discover.png",
|
|
"selectedIconPath": "assets/tabbar/discover-active.png"
|
|
},
|
|
{
|
|
"pagePath": "pages/messages/messages",
|
|
"text": "消息",
|
|
"iconPath": "assets/tabbar/message.png",
|
|
"selectedIconPath": "assets/tabbar/message-active.png"
|
|
},
|
|
{
|
|
"pagePath": "pages/activity/activity",
|
|
"text": "活动",
|
|
"iconPath": "assets/tabbar/activity.png",
|
|
"selectedIconPath": "assets/tabbar/activity-active.png"
|
|
},
|
|
{
|
|
"pagePath": "pages/mine/mine",
|
|
"text": "我的",
|
|
"iconPath": "assets/tabbar/mine.png",
|
|
"selectedIconPath": "assets/tabbar/mine-active.png"
|
|
}
|
|
]
|
|
}
|
|
}
|