# 咔碰 · 功能说明 V4

> 2026-11-03 实现更新：注册与基础资料已接入 PostgreSQL；配置 DATABASE_URL 后启动自动事务迁移 users，本期实际 1 张业务表，全闭环目标仍 10 张。会话摘要、资料草稿、真实照片引用保存在同一用户行；本地照片二进制保存于受控持久目录。下文早期“文件存储 / PostgreSQL 未接入 / 照片占位 / 重启丢失会话”的描述为历史状态，以 [注册与资料持久化方案](../registration-profile-design.md) 及 [开发说明](../../develop/auth.md) 为准。真实微信授权与短信服务不因本地测试而视为已接入。

更新日期：2026-10-31。本说明汇总当前 V4 的完整目标功能，供产品、设计和开发交接使用；与[交互文档](interaction-spec.html)、[交互原型](index.html)配套阅读。

**交付状态：本目录为浏览器交互原型；小程序原生页面已按 V4 移植，未发布。** 原生实现、真实资料编辑与未接入服务边界见 [小程序 V4 实现](../../develop/miniprogram-v4.md)。 人物、推荐分、奖励、价格、会员身份、聊天、认证和支付结果均为示例；本地状态通常在刷新后重置。目标能力不等于后台已实现。下文明确区分页面行为和正式服务职责。

## 1. 产品入口与导航

| 一级入口 | 用户可以做什么 |
| --- | --- |
| 发现 | 浏览推荐、筛选、查看今日浏览记录、了解契合与共同点、喜欢或不喜欢、邀请见面 |
| 社区 | 浏览推荐或关注动态、查看详情、点赞评论、发布生活动态 |
| 喜欢 | 查看消息和喜欢我的对象；从列表发起邀请 |
| 邀请 | 回应新邀约、追踪计划、查看赴约安排、和军师聊天、取消赴约、约会中求助 |
| 我的 | 查看咔贝和积分、充值、签到、编辑及预览资料、语音完善资料、认证、会员、我的动态、设置 |

一级入口统一称“邀请”，二级业务文案保留“新邀约 / 接受邀约”。喜欢页仅有“消息 / 喜欢我的”，不保留“我喜欢的”列表。Tab 切换保存子栏目、滚动位置及已加载内容；二级页返回恢复来源上下文。喜欢 Tab 提示消息未读，邀请 Tab 提示新邀约未读。

标题栏采用统一左中右结构，支持按页配置或整体隐藏。小程序目标方案使用自定义业务导航，保留宿主胶囊和系统安全区。固定按钮及底部 Tab 不得遮住末尾内容；弹窗锁定背景滚动，关闭恢复位置。

## 2. 登录与账户状态

小程序通过微信手机号授权登录。登录页在授权按钮下提供「手机号注册/登录」。进入后默认是登录，顶部用与邀约「新邀约 / 计划」相同的文字下划线切换，登录在左、注册在右。注册填写手机号、密码和验证码，并先获取验证码。手机号直接作为账号，不另设账号名。密码登录填写手机号和密码，也可以使用已注册手机号的验证码登录。密码 8–20 位，且同时包含字母和数字。手机号为大陆 11 位，规范化后唯一对应用户 ID；已注册号码不能再次注册，未注册号码不能验证码登录。同号返回原用户，换号进入另一用户，不迁移原资料。OpenID 不用于跨号码合并或无手机号验证的新登录。有效 Token 可继续使用，到期或退出后重新主动授权。

原型不发送短信，示例账号（手机号）13800138261、密码 clara123 只存在于原型内存，视为基础资料已完成。小程序和 H5 已按本稿以手机号作为账号接通注册、密码登录和验证码登录；手机号与密码摘要仍写在同一用户记录，不新增表。验证码仍不发送短信，获取后任意非空内容可以通过，服务重启后需要重新获取。这不是短信通道已经接入。

需要账户的喜欢、邀请、发布、消息、资料保存等操作引导登录。微信登录及手机号登录注册页的用户协议与隐私政策默认勾选，支持手动取消；取消后不能发起微信授权，也不能在手机号页面获取验证码或提交。页面默认勾选不代替系统隐私授权；系统授权只在用户主动点击微信登录时处理。拒绝微信手机号授权返回原页面。登录成功恢复原目标，涉及发送、发布等动作仍由用户主动确认，不自动补发。

未完成基础资料的账户先进入 18 步填写。新用户完成资料后先处理可跳过的语音介绍。当天未签时自动弹出签到，关闭或领取后继续原目标，无指定目标时进入发现的每日推荐流程。当天已签直接继续。

正式服务负责账户身份、登录态、可浏览范围和权限。退出登录需确认，清除该账户权限、资产视图与敏感草稿；切换账户重新加载专属数据，不能沿用前一账户记录。

## 3. 注册：18 步基础资料

注册与后续编辑共用字段定义、校验和保存数据。每步有下一步，返回保留有效草稿，不因选中选项直接跳页。末步点击“完成填写”完整校验并保存，**无额外资料确认页**；失败保留草稿并定位问题。

| 步骤 | 内容 | 规则 |
| --- | --- | --- |
| 1 / 18 | 性别 | 登记前可修正，成功登记后编辑只读，错误更正走客服路径 |
| 2 / 18 | 昵称 | 去首尾空白后 2–20 字 |
| 3 / 18 | 生日 | 独立年月日选择，禁止未来和无效日期；年龄按完整周岁派生 |
| 4 / 18 | 身高 | 独立数值选择，cm；示例 100–230、步进 1 |
| 5 / 18 | 体重 | 独立数值选择，kg；示例 30–200、步进 0.5 |
| 6 / 18 | 现居地 | 独立省市区，可选定位；授权解析后仍由用户确认 |
| 7 / 18 | 籍贯 | 独立省市区，不被现居地或定位覆盖 |
| 8 / 18 | 学历 | 大专 / 本科 / 硕士 / 博士 / 其他 |
| 9 / 18 | 学校 | 独立文本 0–100 字，可跳过 |
| 10 / 18 | 职业 | 独立文本，可跳过，不等于工作认证 |
| 11 / 18 | 年收入 | 可跳过的区间单选：5万以下、5–10万、10–20万、20–30万、30–50万、50–100万、100万以上（人民币 / 年，区间下限含、上限不含）。取消保留旧值，确定写入草稿；跳过清空为未知，不按零收入处理 |
| 12 / 18 | 婚姻状态 | 必选单选，使用正式配置枚举，不推断默认值 |
| 13 / 18 | 恋爱目标 | 必选；短期内希望结婚 / 认真交往，合适时考虑结婚 / 先认真谈一场恋爱 / 还在探索中 |
| 14 / 18 | 六张生活照 | 六个槽位全部有效上传成功，才可继续；支持删除后点击 + 上传和拖动排序 |
| 15 / 18 | 我喜欢 | 兴趣多选 2–4 项 |
| 16 / 18 | 我是怎样的人 | 人物标签多选 2–3 项 |
| 17 / 18 | 更多爱好 | 图文网格 0–20 项，可不选，保存并继续 |
| 18 / 18 | 写下你的生活与期待 | 自我介绍、家庭背景、兴趣爱好、家庭观、我为什么单身、期待的另一半、理想的生活；七段均可空，每项最多 1000 字；完成填写统一校验保存，成功进入可跳过的语音介绍 |

生日演示年龄范围为 18–80 岁，身高体重范围均为可配置示例，不代表正式准入。省市区原型仅含七个省市示例，正式需完整地区码库。省或市变化清除失效下级，取消选择保留原值。定位拒绝、超时或失败不阻断手动选择，原型不获取真实坐标。

注册不再展示故事问答页，也不提供新增问答入口。七段文字与资料编辑复用同一份草稿和公开生效值，输入保留同会话草稿，返回不丢失，清空表示删除；兴趣标签和语音来源不得自动覆盖公开文字。旧问答仅为兼容历史数据保留，不转写为新文字。

## 4. 共用资料页及来源行为

所有公开资料和本人预览复用同一组件。资料内容同源，来源仅决定操作和返回路径。

| 来源 | 底部不喜欢 / 邀请 / 喜欢 | 喜欢或不喜欢成功后 |
| --- | --- | --- |
| 发现 | 显示 | 切到下一位，批次结束进入推荐完成页 |
| 今日浏览记录 | 显示 | 停留当前人，返回同步关系标记 |
| 喜欢我的 | 隐藏 | 邀请从列表按钮发起 |
| 新邀约 | 隐藏 | 接受 / 婉拒在邀约卡片操作 |
| 计划 | 隐藏 | 返回原计划 |
| 本人预览 | 隐藏 | 返回我的或编辑草稿 |
| 社区作者、消息头像等 | 默认隐藏 | 返回原动态 / 会话 |

资料头部固定展示 P1，无轮播或切图箭头。展示姓名、可用的年龄 / 距离 / 匹配信息、基础字段及认证结果；缺失项隐藏，不伪造值。匹配度和共同点可进入说明，但原型分数与理由均为示例。

正文依次为自我介绍、家庭背景、兴趣爱好、家庭观、我为什么单身、期待的另一半、理想的生活。P2 紧随家庭背景、P3 紧随兴趣、P4 紧随家庭观、P5 紧随单身原因、P6 紧随另一半期待；自我介绍和理想生活后不额外插图。缺文和缺图独立隐藏，不重新分配照片槽位。末尾有动态才展示“我的动态”。

图片可打开独立预览，按存在照片顺序查看；返回不改变 P1。存量资料不足六张时浏览兼容，编辑保存仍需补齐六张。

## 5. 发现、关系决策与浏览记录

每天首次打开时，按登录账号和北京时间自然日刷新推荐。过渡动画在刷新成功后切换到发现，同日重开继续原队列。失败时可重试。

发现推荐在喜欢或不喜欢成功后移出队列，同时写入今日浏览记录。其他入口主动打开他人资料并成功展示后写入浏览记录。同日同人更新原记录，按最近一次有效浏览时间倒序。提交期间锁定操作，失败时停留当前资料。

筛选包含城市、年龄双范围、身高双范围、学历、婚姻状态。年龄示例 18–60、身高示例 100–230 cm。条件先改草稿；重置仅重置草稿，应用才请求新队列，取消保留原条件。无候选、队列已完成和服务异常分别展示，不用推荐完成页代替错误。

今日浏览记录仅自己可见，按 Asia/Shanghai 业务日展示今日对象。行内显示最近浏览时间及当前“已喜欢 / 未喜欢”，进入资料停留处理，返回同步状态和位置。跨日刷新，资料不可用时禁止继续展示敏感缓存。

## 6. 社区与动态

社区分推荐 / 关注，保留各流位置。卡片展示作者、时间、文字、照片、话题和互动数量；头像进入只读资料，照片可预览，正文进入详情。

点赞失败恢复状态；评论不能为空，失败保留输入。发布支持最多 500 字文字、照片、话题、位置及可见范围。上传逐图反馈，取消选图不删除旧选择；失败保留草稿，成功返回来源流。离开未发布内容时可继续编辑、保存草稿或放弃。正式图片上限、审核、可见范围枚举与发布权限待服务配置。

## 7. 喜欢、消息与真人聊天

消息列表沿用改动前的布局，展示头像、姓名、最后消息、时间、未读角标；锁定行保持原样式，不新增右侧聊天/日历操作图标。阅读同步未读状态；点击去向仍按首次有效赴约开始时间判断。喜欢我的列表可查看只读资料，也可直接点邀请按钮，不冒泡进入资料。成功发送后显示已邀请 / 查看新邀约；失败保留列表。

**真人聊天从第一次有效赴约的开始时间开放。** 双方首个有效、双方同版本确认的见面计划到达服务端认定的开始时间（server_now >= meeting_at）后即可聊天；不等待实际到场、见面完成或人工核验。开始前在消息列表点击对方会话进入对应见面计划，达到开始时间后进入现有聊天页。互相喜欢、接受意向及客户端自报到场均不提前授权。未确认或开始前取消的计划不授予资格，屏蔽、停用及访问权限仍优先检查。 军师聊天与真人聊天权限独立，沿用现有计划/聊天设计。

聊天支持时间分组、双方气泡、文本输入、发送中 / 成功 / 失败重试。空白不可发送，断网保留输入；重试使用同一消息标识防重复。正式媒体、撤回等未定义功能不因原型展示而默认开放。

## 8. 发起邀请与接受邀约

发起和接受共用意向弹窗，绑定当前对象和模式，展示系统提供的时间与地点。**两种模式均须至少 3 个有效时间段和 3 个有效地点，不设恰好三项上限。** 选 4、5 项有效，取消到不足三项立即禁用提交；不足候选时刷新或稍后再试。

已有选择关闭保留同会话草稿，不跨对象使用。候选过期保留有效项并要求补足，失败不清空，提交中防重复，超时先查询。发起成功为“邀请已发送 / 待对方确认”，接受成功且双方均已接受为“已接受邀约 / 待安排”；双方提交不等于已有最终排期。

后端负责候选有效性、资源归属、重复邀请、关系权限和排期。原型不向对方发送邀请或消息。

## 9. 计划、赴约与军师

新邀约只汇总收到待回应、已发待对方接受项，按最新编辑时间 `updatedAt` 倒序及稳定ID排序。收到项可接受/婉拒，已发待对方接受卡片无操作按钮，仅用一行时间/地点意向数量摘要，点击整卡查看对方资料，返回恢复列表位置。发起成功仍回新邀约；双方接受成功后，同一邀约移出新邀约并进入计划，结果页提供查看约会计划。计划先展示已排期记录，按约见时间 `meetingAt` 倒序及稳定ID排序，约会中不置顶；之后单列未排期的待安排分组，按 `updatedAt` 倒序及稳定ID排序。待安排不伪造时间地点，不授予聊天、军师或依赖排期的24小时取消入口；双方同版本确认安排后才进入待赴约。分页与刷新规则一致。

待赴约详情依次展示对象状态、时间地点、第一次有效赴约开始时间到达即可聊天的说明和内嵌指引。主按钮“和军师聊天”，下方弱化“取消赴约”。仅距开始超过24小时时允许取消并二次确认；不足或恰好24小时置灰说明原因，服务端拒绝；保留计划不改变状态；成功同步列表与详情，隐藏该计划军师和取消入口，失败可重试。取消不解锁聊天。

军师绑定计划 ID 和对象 ID，提供公开兴趣、开场话题、见面建议，明确 AI 身份，区分事实和建议。不同计划会话隔离，返回再进入保留同计划记录；不提供私密画像、原始访谈、联系方式或对方聊天，不向对方发消息。当前为固定示例回复，未接模型。正式需权限过滤、发送重试、幂等和会话失效处理。

## 10. 约会中的一键报警与安全记录

约会中只在计划列表原卡片内并列提供“举报”与“一键报警”：举报直接进入该对象举报页，一键报警进入现有安全记录页，不提供查看约会按钮、不进入独立约会中详情，也不另增一条业务流程。待赴约、已完成、已取消不展示这一卡片入口，不把待赴约直接认作约会中。

报警流程：进入紧急求助确认页 → 展示当前约会和紧急号码 → 长按 2 秒 → 再次确认拨打 → 正式产品交由系统拨号确认。提前松手、移出、失焦、退后台、返回均取消长按，下次重新开始。拨号不依赖摄像头和录音权限；唤起拨号不能显示为警方接警或报警成功。原型不拨真实电话，显示未实际拨号；正式号码按所在地配置。

安全中心顶部统一紫色主按钮为“开启安全记录 / 停止记录”，下方“一键报警”为 `#c3272b` 红色按钮，始终可独立求助。开启前短提示可能唤起摄像头及麦克风。点击后进入一个授权页面，以摄像头和麦克风两个独立开关选择设备；切换只保存本次选择，不自动采集，取消不提交。至少打开一项后点击“开始记录”才生效，不再串行经过两张授权页。正式接入仍需系统实际许可，拒绝时须恢复真实开关状态。允许部分权限只使用已允许能力，全部拒绝不开始；拒绝不阻断报警，不循环逼迫授权。记录期间显示状态和停止操作；停止、离页、退后台、卸载均停止并释放设备，失败不能伪装仍在记录。

当前安全流程仅演示状态，不调用设备、不生成或上传媒体。正式服务需落实保存位置、保留期限、删除、访问控制及单独上传授权；分享、举报不自动附带安全记录，也不自动通知对方或承诺传送给警方。

## 11. 我的、编辑资料与六张照片

我的包含头像昵称、完成度、双资产、签到充值、资料编辑预览、语音完善资料、认证、会员、我的动态及设置。昵称右侧不设设置图标和透明热区，设置从列表进入；我的动态不显示条数。**我的和编辑资料提供语音完善入口，替代已删除的旧问卷。**

编辑回填已保存资料，基础字段与注册同源。七段公开文字分别编辑：每项最多 1000 字，可空；实时计数，超限不静默截断。未保存草稿不更新公开页。

照片为两行三列固定槽位，支持删除后点击 + 上传、拖拽 / 移动端长按及方向键排序（无文字移动按钮）。排序只改草稿，保存后同步 P1 与正文。恰好六张有效且上传成功才保存；删除后显示 +，单图上传失败可单独重试，第七张不增加槽位。

退出未保存编辑可保留草稿 / 放弃修改 / 继续编辑，同会话可恢复。保存失败保留全部内容与顺序，成功同步所有入口。正式后端原子校验字段、图片归属、数量和顺序。

## 12. 语音完善资料入口

旧问卷的总览、11 个问题页、完成页及所有入口均删除。基础资料保存成功后先进入可跳过的语音介绍；基础未完成不能开始。我的、编辑及五个一级 Tab 顶部未完成提示进入同一语音流程，新访谈显示开始，未完成访谈显示继续；旧题深链回到语音开始页。基础资料、六张照片和关系目标保留同一事实源，语音不直接覆盖已保存公开值。

## 13. 智能球语音收集

语音流程在基础资料完成后可跳过地引导，也由我的、编辑资料及一级 Tab 顶部提示可达，替代原问卷；未完成内容可继续，结束返回来源。简短说明后点击开始直接请求系统麦克风权限；功能选择默认开启不绕过系统授权，也不等于自动发布、覆盖资料或用于模型训练。

精简为开始介绍、主题提问、语音收集、已暂停、麦克风异常、连接异常、采集完成七页 / 状态。操作球 72px，介绍装饰球 76px，浅色中心配蓝紫粉暖流光。轻触开始 / 暂停 / 继续；暂停减少动效，支持减少动态效果。问题可随时跳过或提前结束。

不再设置转写核对、纠正原话、用途逐项选择或主页草稿对照等中间页。正式目标每轮直接由支持语音的大模型转写为文本，不保存录音或音频引用；仅保存文本、summary 和提取来源。临时音频在结束、失败或退出时清理，转写失败且无已存文本需重新回答。不为歧义强制追问，保留事实来源和未知状态，不能将移除核对页解释为用户确认了所有内容。

当前原型请求麦克风后立即释放，不录音、不识别、不上传、不接模型；“回答完毕”填入 source=demo 的预设内容，完成仅为示例画像摘要，不进入真实匹配或覆盖公开资料。权限拒绝、占用、无设备和网络异常支持恢复，离页晚到授权必须释放，不拉回访谈。

## 14. 三类认证

| 类型 | 目标流程 |
| --- | --- |
| 实名 | 说明 → 姓名证件信息 → 必要证件面上传 → 活体单独授权 → 活体 → 提交审核 → 结果 |
| 学历 | 说明 → 学校学历毕业信息 → 证明 → 材料授权 → 提交审核 → 结果 / 补充 |
| 工作 | 说明 → 单位职位必要信息 → 在职证明 → 材料授权 → 提交审核 → 结果 / 补充 |

三类状态独立，包括未开始、草稿、待授权、提交中、审核中、通过、未通过、需补充和服务不可用。提交成功仅表示待审核，通过以服务端为准；拒绝授权不等于失败或通过。失败给可理解原因与重试，超时先查询避免重复。

公开资料只显示结果，不展示证件、活体和证明原件。原型不接收真实敏感材料；正式需供应商、审核、缓存加密、保留删除和访问规则，职业文本不能替代认证。

## 15. 会员单页订阅

推荐耗尽保留结束状态，不强制付费。用户从我的、设置、社区广告或推荐完成入口直接进入同一个会员页面，方案、权益、协议及订阅反馈均在同页完成；旧方案确认页不再作为独立步骤，返回恢复原来源。

| 方案 | 价格 | 权益 |
| --- | --- | --- |
| 免费版 | 免费 | 基础匹配推荐每日10位；免费AI军师；免费回看；查看谁对你心动 |
| 月度会员 | ¥198 / 月 | 智能匹配升级每日20位；个性化条件筛选匹配；更多次数AI军师；更多签到积分和咔贝；优先推荐曝光；每月免费10张约见券；专属客服支持 |
| 季度会员 | ¥458 / 季 | 月度会员全部权益；约见优先安排；每月1次免费身份认证；1v1专属匹配顾问；优先体验新功能 |

付费会员继承免费版能力，“查看谁对你心动”不再作为月度专属权益。AI具体次数和签到奖励从后台配置读取；不自设额外次数、无限权益、未确认折扣或节省金额。

选择方案原位更新权益及应付金额，协议同页展开，默认不勾选，勾选后才可订阅。支付取消、失败、成功反馈同页展示；处理中禁重复及切档，失败保留选择，成功联动会员签到示例。免费选项不发起支付、不降级已有会员。

原型不扣款、不创建真实订单、不自动续费。正式价格、有效期、续费方式及可售状态须完整披露，服务端校验订单并据有效回调幂等开通；结果未知查询恢复。自动续费如提供需单独明确授权，可取消，取消后当前有效周期内继续享有权益。签到会员身份仍以领取时服务端状态为准。

## 16. 咔贝、积分、签到与连续奖励

我的展示咔贝与积分两类余额，咔贝旁有充值，资产区域可进入每日签到。余额和到账以服务端账户资产及流水为准，领取或充值后同步刷新。

签到弹窗采用极简展示，无“每日签到”上方图标。格组为**两行、四列、八个网格单位**：今日横向合并两单位，其余六日各一单位，展示当周情况。每种奖励使用完整行内短语，例如 **“积分 +5”“咔贝 +2”**，不将名称和数字拆成上下行。历史格置灰，领过标已签到，漏签明确“未签到”，未来待签到。

格组上方展示“连续签到 X 天 · 连续奖励 +XX 积分，+XX 咔贝”，连续加赠从后台奖励规则计算，展示相对本轮第1天的增量；各日奖励已含该增量，不重复发放，不挤入格内。会员显示会员加赠标识。底部保留领取主按钮和最简规则“7 天一轮 · 断签重计”，不堆叠说明。

业务日按服务端 Asia/Shanghai 日期。连续第 1–7 天积分和咔贝分别递增，第 8 天重新从第 1 天起算；漏一天后下次从第 1 天，不倒扣已到账资产。当周日历与连续周期独立，历史来自真实领取记录，不由连续天数倒推。

普通与会员分别从后台读取七天奖励表，会员每日两类奖励均增加。服务端验证配置版本、生效日、有效状态、整数范围、递增及会员加赠约束；页面示例数值不代表正式标准。身份以领取时认定为准，同日升级不重复领取、不补差；旧记录保留实际到账，不被新配置改写。

点击领取显示处理中并防重复，成功原位展示已得奖励，可收下关闭；失败可重试。配置失败显示重试，不以本地默认数值发奖。正式后端以账户和业务日期唯一约束，原子记录签到和双资产流水；结果未知先查记录。同日仅领一次。

## 17. 咔贝充值

我的咔贝旁充值 → 独立充值页 → 选择档位 → 显示应付金额 → 微信支付状态 → 到账反馈。最低100元起充，100人民币对应100咔贝，兑换比例固定1:1。展示当前余额、100/200/300/500/1000/2000元六档及等额咔贝；支付中禁重复和切档，演示成功返回我的增加咔贝，积分不变。

原型不扣款。正式档位来自后台配置，服务端强制校验至少100元、1元=1咔贝、价格和有效性，微信签名回调校验后按订单幂等入账，不能根据客户端成功直接加余额。取消和失败保留选择，超时、退出或回调延迟先查询订单，再展示到账或恢复支付。实际可用支付路径需按小程序能力接入。

## 18. 介绍给朋友、举报与屏蔽

全部资料入口共用底部：浅灰单行“介绍给朋友”，图标在左；其下居中低强调“举报/屏蔽”。本人可分享公开资料，不展示针对自己的举报 / 屏蔽。

分享为微信小程序卡片：展示咔碰小程序名称、公开标题和封面及“小程序”标记，点击“分享小程序给朋友”演示系统分享，再由接收端“打开小程序查看资料”。不提供图片海报或网页分享。正式宿主调用原生小程序分享，载荷为 `title/path/imageUrl`，公开资料落地路径绑定目标用户ID。目标绑定用户 ID，仅包含已保存公开姓名、年龄、头像等信息，不带草稿、联系方式、私密画像或约会信息。私密、被屏蔽、删除、停用及撤回公开的资料禁止分享；正式落地页再次鉴权。原型只预览，不发好友消息、不声称已发送。

举报页参考用户提供图片：标题“举报”，提示“请选择你要举报的事项类型”，**两列原因按钮**，选择以强调色区分；长原因在格内换行完整展示。下方“具体描述”多行输入，最多 300 字，并提供提交。原因如下：

| 原因 | 原因 |
| --- | --- |
| 头像非本人或无法看清正面 | 内容乱填/虚假资料 |
| 资料透露联系方式 | 垃圾营销广告 |
| 婚托/饭托/酒托等 | 色情低俗/诈骗等 |
| 聊天内容不适/骚扰（仅限本平台内聊天） | 其他 |

原因必选，描述选填；未选不可提交。输入按纯文本转义展示，提交中防重复，失败保留原因和描述，成功显示已提交状态。正式结果以服务端确认为准，后台负责频控、受理和处理；原型只更新本地状态，不构成真实举报。

屏蔽需二次确认，成功后拦截目标的资料互动、分享及邀请，可从屏蔽状态页解除。目标 ID 与来源页分离，切换本人主页不能绕过。正式同步过滤推荐、喜欢、消息和邀请；保留安全举报和必要约会记录，不自动取消计划或删除证据。屏蔽不等于报警。

## 19. 设置、通用状态与正式服务交接

设置包含账号安全、隐私、通知、帮助反馈、协议隐私、关于和退出。注销、改号码和通知权限需真实流程接入，不使用无反馈假跳转。

全流程区分加载、无数据、断网、资料失效、权限拒绝、提交中、失败、成功和结果未知。失败保留可恢复输入，上传逐项重试，返回恢复上下文；文本不直接渲染为 HTML。正式接口校验身份、归属、字段、数量、状态、配置版本和幂等，不接受客户端对会员、支付、聊天权限、审核结果的自报。

| 服务领域 | 必须接入的权威能力 |
| --- | --- |
| 账户与资料 | 登录、注册完成、同源字段、草稿版本、媒体上传审核、公开可见性 |
| 推荐与关系 | 推荐队列、浏览日去重、筛选、喜欢幂等及关系状态 |
| 邀请与消息 | 有效候选、发起报价及事务扣咔贝、双方排期、24小时取消限制、首次开始时间授权、消息去重 |
| 军师与语音 | 公开资料权限过滤、模型 / 识别、来源和不确定性、安全保存和删除 |
| 认证与内容治理 | 供应商、审核、材料隔离、举报受理、屏蔽过滤 |
| 资产与支付 | 普通 / 会员七日奖励配置、签到原子入账、充值订单回调、对账及权益同步 |
| 安全求助 | 当地号码、系统拨号、独立设备权限、媒体生命周期和受控访问 |

## 20. 验收与实施边界

核心验收覆盖：18 步回填及末步直接保存、六图排序和失败保旧、统一资料来源行为、至少 3+3 邀请、真人聊天权限、军师计划隔离、认证状态、旧问卷完全移除、我的和编辑语音入口可达、语音流程设备释放、双资产、七天轮回和断签、普通 / 会员配置、充值不增加积分、安全防误触和独立权限、分享目标、两列举报和屏蔽恢复。

现有原型配套规则与浏览器检查用于验证本地流程；其覆盖率不能作为生产应用整体覆盖率。设备、支付、邀请、分享、举报、认证、真实模型与后端事务须在对应服务接通后另做集成及真实宿主验证。正式上线前仍需确认价格权益、准入范围、全国地区库、排期及取消政策、材料保留、紧急号码和支付可售能力。


最新卡片规则：待赴约计划统一使用列表首张卡片的白底、细边框样式；正在约会卡片左侧为举报，右侧一键报警进入现有安全记录功能，安全记录页的报警按钮再进入原防误触求助流程。约会卡片举报绑定当前对象，提交或返回后恢复计划列表位置。


## 21. 算法与最少表设计

固定遵循：**数据库表要最小数量的设计，尽量避免分多个表进行数据表述。** 当前完整目标为 10 表；用户资料、画像和草稿合入用户聚合，邀约意向、安排、确认与反馈合入邀约，消息和语音回答逐条保存。首版推荐简化为五维双向评分，移除多余学习、向量和人格推断方案。详见 [需求](../requirements.md)、[算法数据库设计](../algorithm-database-design.md)、[准则](../design-principles.md)。本次代码仅先交付认证，其他为设计与原型。

## 2026-11-05：基础资料后的可跳过语音收集与顶部引导

基础资料 18 步全部校验并保存成功后，进入语音收集介绍页，提供主操作“开始语音收集”和弱操作“暂时跳过”；进入介绍页不申请麦克风权限，只有用户主动开始才申请。跳过不撤销基础资料完成、不标记语音完成、不阻断使用；跳过或完成后恢复此前目标，无目标回发现。基础资料未完成时，语音入口先引导补齐基础资料，不创建访谈或申请麦克风。

已登录且基础资料完成、语音尚未完成时，在发现、社区、喜欢、邀请、我的五个一级 Tab 的内容顶部（公共标题栏下、业务内容前）展示非阻断提示“完善语音资料，让我们更了解你”；未开始操作为“开始语音收集”，进行中/暂停/异常恢复为“继续语音收集”。提示参与正常布局，不遮挡内容、不重复叠加，不强加到二级页面；切 Tab、重新登录及刷新按当前账号服务端状态恢复。点击开始或继续进入同一语音流程，返回保留原 Tab/子栏目/滚动位置；我的卡片与编辑资料入口继续保留。跳过后提示仍保留，只有服务端确认语音已完成才隐藏；状态查询失败不伪造完成、不自动请求权限。

语音完成状态与基础资料完成独立，复用目标 users.voice_state 的有界状态，不新增提醒表或语音完成表。未开始、跳过、进行中、暂停及异常均不能冒充完成；用户主动提前结束且至少已有一条有效、已保存的回答时，可由服务端确认本次采集完成并隐藏提示，不要求问满十四类或补齐未知信息；全部跳过、没有任何有效表达或回答尚未保存时仍属未完成，不能仅因进入完成页写 completed。跳过整段引导不同于跳过当前题；恢复不重置每类最多两道系统问题的预算。原型演示完成不写入真实账号完成状态。

能力边界：本次同步现行交互目标与原型；客户端自动衔接、跨 Tab 顶部提示和服务端完成状态仍以开发验收记录为准，不能由文档或演示完成推定已真实接入。

## 2026-11-05 发起邀约扣咔贝与后台

完成发起模式3+3后先展示扣款确认：后台原价、可选折扣价、余额和应付；有折扣划掉原价，无折扣只展示原价。足额“确认并支付 N 咔贝”才创建并扣款；不足“去充值”保留意向，返回刷新余额/报价并重新主动确认。报价过期/变价需重新确认，失败留草稿，超时先查幂等结果。创建邀约、减余额、不可变流水同事务；接受模式本轮不收费，计划成功取消退原实付咔贝或新发1张免费约见券至原付款账户；拒绝/未成计划过期归还仍待定。后台必要模块及页面见 [后台交互设计](../admin-interaction-design.md)，后台位于 `/kapengadmin`，复用现有壳和组件，不新建重复后台。

取消以服务端时间判断：仅 server_now < meeting_at - 24小时可由用户取消，恰好24小时与之后均不可取消。取消不授予聊天资格，也不撤销更早有效计划已经授予的双方资格；屏蔽和账号受限仍独立限制消息。以上为本轮目标变更，旧演示测试不代表真实后端已支持。


### 2026-11-06 取消归还规则同步

成功取消约会计划时，按原支付来源归还至原付款账户：咔贝支付退回原订单实际支付数量的咔贝，不按原标价或当前价格计算；免费约见券支付向原账户发放1张新的免费约见券，旧已使用券不恢复。取消人和原付款人不同时仍只归还原付款账户。取消状态、余额/券权益与退款/新券流水同事务提交，失败全部回滚；同一原消费及取消业务键只归还一次，超时先查询，不能重复退款或重复发券。原消费流水不可改删。

原24小时规则保持：仅 server_now < meeting_at - 24小时允许普通用户取消，恰好24小时及之后不可取消，也不能触发本取消归还。此规则仅确定已排期计划成功取消的处理；邀约被拒、未成计划就过期、争议/运营例外仍按各自待定政策，不自动套用。新券有效期、适用范围及券/咔贝消费优先级由正式配置与产品策略明确，不擅自继承旧券期限或承诺永久有效。


## 2026-11-06 双方接受后归入约会计划

发起成功只代表发起方接受，仍在“新邀约”等待回应。对方完成接受意向提交后，双方已接受的同一邀约ID立即从“新邀约”移除，在“计划”中仅展示一次；失败不迁移，重复提交不重复建卡。未排期时显示“待安排”及时间/地点待安排，结果页主按钮为“查看约会计划”。

计划保留已排期记录的meetingAt倒序；待安排分组在后，按updatedAt倒序和稳定ID排序。双方接受不等于双方同版本确认排期，不提前开放真人聊天、军师或依赖确定排期的普通取消入口；既有24小时取消、原付款归还及首个有效计划到点聊天规则不变。原型旧排期与新待安排按不同ID隔离，遇到同人并列场景明确标注独立历史示例。

本次原型为本地状态演示；真实服务应以同一date_invitations状态及版本原子派生互斥列表，不另建计划或迁移记录。新规则的单元与失败/重复/账号重置E2E为invitation-acceptance.tests.cjs和invitation-acceptance.e2e.cjs；四态图见mutual-acceptance-board.html。

### 2026-11-12 注册末步公开文字同步

移除“用几个小故事认识你”。前 10 步不变，11 年收入（可跳过）、12 婚姻、13 目标、14 照片、15 兴趣、16 性格、17 更多爱好、18 七段公开文字。末页复用资料编辑多行输入、实时计数和 每项 1000 字上限，七项可空；保存前后使用同一份 public_texts，不新增表，不从旧问答或语音自动生成。保存成功再进入可跳过语音介绍。

### 注册表达与候选扩展（2026-11-12）

七段公开文字统一每项最多 1000 字、均可选填；逐项占位提示提供 2–3 个具体方向，注册与编辑使用同一文案，超限保留全文并禁止提交。兴趣、性格、更多爱好分别保留原有 26 / 19 / 24 项并新增 20 项，候选总数为 46 / 39 / 44；选择数量规则保持兴趣 2–4、性格 2–3、更多爱好 0–20 项，新增候选不改变旧值含义。


### 2026-11-12 品牌 Logo 更新

登录页与基础资料开始页统一使用用户最新提供的 logo(2).svg（192 × 192，顶部中间浅绿线条缩短版）品牌图形（深蓝、浅紫与浅绿碰撞标志），保留原始配色、透明背景、完整画布与等比缩放，不再使用旧心形作为品牌标志。客户端源文件为 `client/src/static/logo.svg`，小程序使用同源透明 PNG `client/src/static/logo.png`；现行原型使用 `assets/logo.svg`。原有外框、文案和流程保持，喜欢、会员等业务心形图标不变。小程序构建检查与真机视觉验收分别记录，不能以原型截图代替真机验收。


### 2026-11-12 图片放大预览水印

所有点击图片进入的放大预览统一在实际图片右下角展示「品牌 Logo + 咔碰App」水印：包含自己 / 对方资料照、资料动态、社区列表 / 详情和发布前预览。原始上传图片与列表缩略图不改写。使用原色 Logo、白色 13px 半粗文字，Logo 27px；深色半透明底，右 / 下距图片边缘 12px。图片完整等比显示，水印随图片缩放，不能停留在屏幕黑底角落。支持多图切换、当前图定位、双指缩放、关闭返回、加载失败重试；缩放时先还原再切换图片。预览地址仅在内存临时传递，不放入路由参数或持久存储。当前自定义预览不提供原生长按保存，不暴露绕过水印的原图保存入口。原型使用双击演示缩放、按钮 / 方向键切图；小程序实际手势与视觉仍须开发者工具 / 真机验收。


## 资料与图片缓存设计补充 2026-11-12

目标能力见 [全链路缓存设计](../cache-design.md) 和 [可切换加载状态演示](cache-loading-board.html)。同一照片跨推荐与资料复用，优先首图，逐张呈现，失败在原槽位重试；过期临时文件可恢复，图片加载不等待浏览记录写入。账户切换、屏蔽或资料失效清理旧展示；图片字节缓存不能代替查看权限。本轮交付为设计，业务实现、弱网指标和真机视觉验收仍待完成。


### 缓存改造首阶段实现状态 2026-11-12

推荐、今日浏览和社区资料已接统一会话图片缓存；生活照失败保留原位置并显示“图片加载失败，点击重试”，重试不重下成功图；图片解码失败清除该图引用。重新进入与前后台恢复先确认查看资格，租约最长30秒，到期隐藏再校验；不可查看时复用“此资料暂不可用”反馈。成功态布局、顺序和水印保持原规范。状态演示仅用于交互说明；原生小程序构建验证与浏览器联调不等于真机视觉或弱网验收。预览当前复用card图片，1600像素preview变体UI仍待接入。


2026-11-12 手机号登录注册流程修复：登录页始终保留「手机号注册/登录」入口；手机号页默认登录，登录在左、注册在右，保留密码/验证码登录切换。模拟短信开关只控制开发模拟提示，不隐藏业务入口或阻止切换。注册仍填写手机号、密码、验证码；验证码登录仍要求已注册号码。短信未接入时明确提示暂不可获取，并显示服务端错误；生产继续禁止模拟认证。原型为交互演示，不代表真实短信已接入。


2026-11-12 登录页入口调整：登录页协议区域下方不再展示首次使用提示或独立的完善注册资料入口；用户通过微信手机号授权或手机号注册/登录完成登录后，基础资料未完成时继续进入填写流程。


2026-11-12 七段文字提示样式：七段文字输入框的 placeholder 仅保留具体填写方向，移除末尾“选填，最多1000字。”；提示字号为 13px（小程序注册页 26rpx），行高为 1.8。注册与编辑资料共用此规则，仍允许留空、每段上限 1000 字，并保留独立字数计数。

### 2026-11-12 年收入可选步骤

基础资料在现有职业 / 工作信息步骤之后、婚姻状态之前增加第 11 步“你的年收入”，总计 18 步。复用底部单选选择器，区间为 5万以下、5–10万、10–20万、20–30万、30–50万、50–100万、100万以上，单位人民币 / 年，区间下限含、上限不含。初始不预选；取消保留旧值，确定才写入草稿。可不选择直接继续，也可点击“跳过”清空该值后进入婚姻状态。空值表示未提供，不推断为零收入，不阻断基础资料完成；编辑资料可再次选择。字段 `annual_income` 与基础资料同源保存，不新增表；本次不新增公开主页展示。旧草稿需按流程版本迁移，避免步骤错位；小程序照片重新进入规则顺延至第 14 步。

### 2026-11-12 真实推荐与演示隔离

真实登录账号始终读取真实发现与浏览接口；开发原型开关仅允许无会话示例。响应性别不合法或与当前账号相同则隐藏并提示重试。每日刷新成功日期来自服务端 `refresh_date`，不混用旧批次日期，空结果同样记成功。单纯看见推荐不写今日浏览，喜欢／不喜欢成功时原子记录并推进。

真实综合分有证据时展示“匹配参考”及独立信息覆盖率，明确仅供排序参考；缺覆盖率或来源失效时隐藏分数，未配置五维评价器时不展示虚构百分比。


## 2026-11-12 语音文本保存与语义开关

真实录音完成后将最终转写提交服务端，保存失败保留当前文字并可按原幂等键重试，不提前切题。重答使用新回答版本并使旧派生画像失效。只有至少一条有效文本已保存且完成接口确认后才进入正式完成状态、隐藏一级Tab提示；全题号齐全不代替服务端确认，零回答结束不冒充完成。完成说明为“回答文字已保存。本页只显示这次的转写。”，不新增页面、不宣称语义分析成功。新增画像和Embedding默认关闭，后台发布开启前不调用供应商；真实推荐不存在双方有效评分时保持无百分比。
