嗯来吧 · 需求文档(研发交付版)
版本 v1.0 | 整理自《嗯来吧需求文档.doc》+本轮原型迭代确认结论 | 原型基准:嗯来吧-融合版.新原型.html(2,165,723 字节)
阅读顺序建议:第 1 节(总览)→ 第 3 节(分模块)→ 第 4 节(全局规则)→ 第 7、8 节(移动端与必读坑位)→ 第 9 节(验收)→ 第 10 节(待确认)。原型只作为交互参考,实现口径以本文档为准。
1. 需求总览
共 16 项需求,按模块归入 M1–M7。"原型状态"列说明该需求在当前原型里的完成度,供评估工作量时参考。
| 编号 | 模块 | 需求 | 优先级 | 原型状态 | 依赖 |
|---|
| R1 | M1 账号 | 企业/机构/个体注册(含 OCR 反显与审核) | P0 | 未实现 | OCR 服务、企查查类接口 |
| R2 | M2 首页 | 大学社与附近商家宫格位置互换,大学社主位 | P0 | 已实现 | — |
| R3 | M2 首页 | 瀑布流场景位「今日最新 / 新潮热门」同位轮播 | P1 | 未实现 | 推荐服务 |
| R4 | M2 首页 | 底部任务单跑马灯(5 条,已接单自动隐藏) | P1 | 未实现 | 订单状态订阅 |
| R5 | M2 首页 | 顶部达人榜(按学校/同校规则) | P1 | 已实现(静态) | 学籍认证数据 |
| R6 | M3 大学社 | 大学生专区进入后默认「校园互助」 | P0 | 已实现 | — |
| R7 | M3 大学社 | 顶部学校选择 + 学籍认证(拍照 OCR) | P0 | 已实现(OCR 为模拟) | OCR 服务 |
| R8 | M3 大学社 | 发布动态(校园帖子) | P0 | 已实现 | — |
| R9 | M4 校园互助 | 接单详情「施助人数」点击查看施助记录(打码) | P1 | 未实现 | 隐私脱敏规则 |
| R10 | M4 校园互助 | 发布入口:技能 / 求助订单 / 紧急求救 / 活动 / 闲置转让 / 组队 | P0 | 已实现(入口) | — |
| R11 | M4 小组队 | 组队付费模型:免费 / AA 平摊 / 主办方(参与者付费) | P0 | 已实现 | 支付、托管、结算 |
| R12 | M4 紧急求救 | 语音输入求助;接单页展示语音条目 | P1 | 未实现 | 语音录制/存储/时长限制 |
| R13 | M4 技能 | 发布技能页调整优化 | P1 | 已实现(基础) | — |
| R14 | M4 转让 | 闲置转让页 | P1 | 已实现(基础) | — |
| R15 | M5 圈子 | 更多圈子:创建 / 加入 / 退出;圈子详情与成员展示 | P0 | 已实现 | 圈子权限 |
| R16 | M6 我的 | 我发的:按技能/求助/组队/活动/紧急求救分类标签 | P1 | 部分(分类未做) | — |
2. 角色、身份与术语
2.1 角色
- 个人用户:学生与普通用户。当前版本个人用户是唯一可进行交易(发布、接单、报名付费)的身份。
- 机构 / 企业 / 个体:以组织名义入驻,用于发布岗位、项目招募、商家活动;企业身份不参与平台内交易。
2.2 双身份
- 同一账号可在「个人 / 企业」之间切换,切换为互斥单选。
- 企业身份下:不展示余额、不参与接单与支付;发布内容走企业岗位 / 项目招募口径。
- 身份切换的入口与状态需在顶部固定可见,切换后页面内容与可操作项同步变化。
2.3 术语(技术口径,避免歧义)
| 术语 | 口径 |
|---|
| 公示 | 公开招募:在接单大厅/列表可见,任何人可报名。 |
| 非公示 | 定向邀请:不进列表,仅被邀请人可见可报名。 |
| AA 平摊 | 按「所需人数 × 单价」预收,每人支付固定人均金额;人均不因实到人数变化而重算。 |
| 打赏 | 费用由参与者自愿支付,金额不固定。 |
| 免费 | 无资金流,仅占位。 |
| 托管 / 冻结 | 费用进入平台专户,成行前不可动用。 |
| T+1 放款 | 组队结束、确认完成后,次日放款给发起人。 |
| 10% 返现 | 余额段费用返还 10%,返现口径见 4.2。 |
3. 分模块需求
M1 账号与注册(R1)
页面:注册/登录页 → 注册身份选择(个人 / 机构 / 企业 / 个体,单选)。
- 选择「企业」→ 我是法人:拍照上传营业执照 → OCR 识别 → 自动反显企业名称、统一社会信用代码、法定代表人等 → 用户补充手机号并验证 → 提交注册 → 进入审核。
- 选择「企业」→ 我是经办人:上传手持营业执照照片 + 个人身份证正反面 → OCR 反显 → 手机号验证 → 提交审核。
- 机构 / 个体:同样走 OCR 自动识别与反显,表单字段与 OCR 返回字段一一对应。
- 提交后状态:审核中 → 审核通过 / 驳回(驳回需给出原因并可重新提交)。
- 后续可接第三方核验接口(如企查查)做真实性校验,接口接入不改变前端流程。
- 字段:企业名称、统一社会信用代码、法定代表人、注册资本、经营范围、注册地址、联系人、手机号、营业执照图、身份证图、手持照。
- 异常:OCR 识别失败可手动填写;图片模糊给出重拍提示;手机号已注册给出明确提示;重复提交做幂等处理。
- 验收:四类身份均可注册;OCR 反显字段与图片内容一致率 ≥ 95%;审核状态可查、可重新提交。
M2 首页(R2–R5)
图 4:首页(个人身份):大学社主位、任务单与瀑布流R2 宫格调整:大学社与附近商家活动宫格位置互换,大学社占主位(更大、更靠前)。
R3 瀑布流场景位:在同一位置轮播「今日最新」与「新潮热门」,实时替换,不新增占位。
- 「今日最新」= 今日发布的内容;已选择地理位置时优先展示距离最近,未选择时展示当日最早发布。
- 点击「查看服务」进入服务详情页。
- 轮播间隔与切换方式需产品确认(见第 10 节)。
R4 底部任务单跑马灯:滚动展示任务单,最多 5 条,被接单后自动不再展示。
- 文案示例:找一个人帮我遛狗,周六下午。
- 点击「去接单」进入订单详情页。
- 已选择省份时按最近距离展示,否则按最新发布展示。
R5 顶部达人榜:展示最近的学校达人榜;用户已认证学校时,优先按同校展示。
- 榜单项包含:头像、昵称、学校、荣誉(如接单王/新晋达人)、施助人数。
- 数据来源与刷新频率需产品确认(见第 10 节)。
M3 大学生专区·大学社(R6–R8)
图 5:大学生专区:顶部学校入口 + 学籍认证氛围条- 底部三个页签:校园社区 / 校园互助 / 企业机会;进入大学社默认落在「校园互助」。
- 顶部:返回、当前学校(可点击切换)、学籍认证徽章。
- 顶部学校点击 → 选择学校浮层:按所在省份优先展示(默认选中),可切换省份或搜索;列表显示"省份 · 共 N 所"。
- 学籍认证(R7):认证氛围条 →「去认证」→ 学籍认证页:拍照上传学生证 / 录取通知书 → OCR 识别学校、姓名、学籍号、院系 → 自动回填表单 → 可手动修正 → 提交 → 审核中 → 审核通过显示「学籍已认证」+ 学生认证徽章(认证后氛围条收回,仅保留顶部徽章,避免重复展示)。
- 发布动态(R8):发布校园帖子,成功后进入信息流;信息流内不展示评论,点击卡片进入动态详情页看评论与发表评论。
已确认:认证完成后「氛围条」与「顶部徽章」只保留一个(顶部徽章可点击查看认证详情)。
图 1:学籍认证:拍照 → OCR 识别 → 自动回填表单
图 2:选择学校:所在省份优先,可切换省份或搜索
图 3:认证完成标识:仅保留顶部徽章(氛围条收回)M4 校园互助(R9–R14)
图 9:校园互助:+ 打开发布面板(技能/求助/求救/活动/转让/组队)R9 接单详情·施助人数:详情页展示施助人数;点击头像或数字弹出该用户的施助记录。
- 记录内容:时间、订单类型、是否完成;涉及个人信息需打码(昵称部分字符、手机号中间四位等)。
- 脱敏规则需产品明确(见第 10 节)。
R10 发布入口:校园互助右下「+」→ 发布面板,包含发布技能、求助订单、紧急求救、活动、闲置转让、组队。
R11 组队付费模型:见 4.2 资金与结算,及下列流程规则。
- 创建即草稿:可编辑、删除、取消;草稿不冻结资金、不进接单大厅。
- 发布前选「公示 / 非公示」。
- 正式发布时按「所需人数 × 单价」冻结发起人资金(AA 模式)。
- 参与者申请报名 → 发起人同意 / 拒绝(双方同意才成局)。
- AA 模式必须由参与者本人确认支付(免密不等于免确认),15 分钟内未支付则释放名额。
- AA 按所需人数扣款,不按实到人数重算;人数不足时的差额由发起人承担。
- 资金进入平台专户 → 组队结束 → 解冻 → T+1 放款给发起人 → 余额段返 10%。
R12 紧急求救:支持语音输入;求救单在接单页展示语音条目,可试听。
- 语音时长上限、是否允许同时发文字、是否限定位精度需产品确认。
- 安全相关:求救单需置顶推送给附近志愿者,并保留操作留痕。
R13 发布技能页调整优化:字段与交互按第 5 节字段表;R14 闲置转让页:商品图、价格、成色、交易方式、校内自提等。
图 6:发布组队:付费方式(免费/AA/打赏)+ 公示/非公示
图 7:紧急求救详情(语音求助为待实现项)
图 8:接单详情:施助人数 → 施助记录(信息脱敏)M5 圈子与内容(R15)
图 10:圈子详情:圈内信息 + 圈内动态
图 11:圈内成员仅展示一行,未加入不可见其余
图 12:创建圈子
图 13:热门圈子:切换当前圈子(不新开页面)- 更多圈子:可创建圈子、加入圈子、退出圈子;创建需填写名称、简介、分类、加入方式(自由加入 / 申请加入)。
- 圈子详情页:圈子信息(头像、名称、成员数、类型、圈主/自由加入标签)、简介、数据行(学校 / 成员数 / 动态数 / 活跃度)、圈内动态列表、圈内成员。
- 成员展示:仅展示一行;未加入时其余成员不可见(提示"加入后可见"),加入后可查看全部。
- 状态:已加入显示「退出圈子」;未加入显示「申请加入」;圈主额外显示管理入口。
- 热门圈子:点击即切换"当前圈子"(不新开页面),顶部显示当前圈子与人数,所选圈子在热门圈子行高亮。
M6 我的(R16)
图 14:我发的:分类标签与台账- 「我发的」增加分类标签:技能 / 求助 / 组队 / 活动 / 紧急求救;标签切换过滤列表。
- 列表项展示状态;操作收进详情页(列表不放置主要操作按钮)。
- 草稿:创建即草稿,草稿可继续编辑 / 删除 / 取消;正式发布后才冻结资金并对外可见。
图 17:发布校园动态
图 18:动态详情页:查看评论与发表评论4. 全局规则
图 15:分享面板:微信/朋友圈/QQ/微博/海报/二维码/链接/口令
图 16:分享海报(独立层,可保存 / 分享给好友)4.1 身份与权限矩阵
| 能力 | 个人 | 企业/机构/个体 |
|---|
| 发布技能 / 求助 / 组队 / 活动 / 转让 | 可 | 不可(走岗位/项目招募) |
| 接单 / 报名 / 支付 | 可 | 不可 |
| 余额与提现 | 可 | 不可 |
| 发布岗位 / 项目招募 | 不可 | 可 |
| 发布商家活动 | 不可 | 可 |
4.2 资金与结算
扣款顺序:余额 → 报酬 → 买卖所得。所有资金先进平台专户(托管),成行/验收后再放款。
| 场景 | 预收方式 | 人数不足时 | 放款对象 | 返现 |
|---|
| 求助订单(悬赏) | 发布时冻结赏金 | 按实际人数多退少补 | 施助者(验收后) | 余额段返 10% |
| 组队 · AA 平摊 | 按所需人数 × 单价冻结 | 人均不重算,差额由发起人承担 | 发起人(T+1) | 余额段返 10% |
| 组队 · 免费 | 无资金流 | — | — | — |
| 组队 · 打赏 | 参与者自愿支付 | 按实际支付 | 发起人 | 余额段返 10% |
| 紧急求救 | 无预收或按需 | — | 志愿者(可选) | — |
三条容易写错的口径,务必按此实现:① AA 报名款托管后放款给发起人(与求助订单相反);② AA 人均固定,不按实到人数重算;③ 组队是"草稿 → 选公示 → 正式发布才冻结"。
4.3 状态机
- 求助订单:审核中 → 发布中 → 已确认 → 履约中 → 已完成 → 已结算(异常分支:已取消 / 已退款 / 已关闭)。
- 组队:草稿 → 招募中 → 待成行 → 进行中 → 已完成 → 已结算(异常:已取消 / 已退款)。
- 报名(参与者):待支付 → 已占位 / 已释放(15 分钟超时)→ 已确认 / 已拒绝 → 已退款。
- 紧急求救:发起 → 响应中 → 已响应 → 已结束。
- 圈子成员:未加入 → 申请中 → 已加入 → 已退出 / 已移出。
- 学籍认证:未认证 → 审核中 → 已认证 / 已驳回。
4.4 消息与通知路由
- 通知必须按"事件 → 接收方 → 渠道"明确:报名、同意/拒绝、支付成功、成行、取消、退款、纠纷、审核结果。
- 同一事件对不同角色文案不同(发起人 / 参与者 / 志愿者)。
- 原型坑位:消息路由不要做成"所有事件都推给同一人"。
5. 关键数据字段
| 实体 | 核心字段 |
|---|
| 订单(求助) | id、类型、标题、描述、图片、酬金、公示状态、地理位置、发布时间、截止时间、状态、发起人、施助者、托管金额 |
| 组队单 | id、标题、付费方式(免费/AA/打赏)、单价、所需人数、已占位、人均金额、公示状态、成行截止、状态、发起人 |
| 报名记录 | id、组队单 id、用户 id、支付状态、占位时间、支付时间、退款状态 |
| 结算单 | id、订单/组队 id、托管金额、平台服务费、返现金额、放款时间、放款对象 |
| 圈子 | id、名称、简介、分类、加入方式、成员数、圈主、状态 |
| 动态 | id、作者、内容、图片、圈子 id、点赞数、评论数、发布时间 |
| 学籍认证 | 用户 id、学校、姓名、学籍号、院系、证件图、状态、提交时间、通过时间 |
| 施助记录 | 用户 id、订单 id、类型、完成状态、时间(对外展示需脱敏) |
6. 异常与边界
- 人数不足:求助订单按实际人数多退少补;AA 不重算,差额由发起人承担。
- 名额已满:允许候补,有人退出时按候补顺序递补并通知。
- 超时未支付:15 分钟释放名额,订单回退到可报名状态。
- 取消与退款:成行前可退;成行后按规则协商,退款申请限 1 次且可撤回,不同意后不可再次进入。
- 纠纷:一人一案;平台可介入,必要时走司法途径;处理期间冻结相关资金。
- 并发抢位:同一名额必须做原子占位,防止超卖。
- 重复提交:所有"提交/发布/支付"接口需幂等。
- 内容合规:图片与文字需审核,违规内容拦截并留痕。
7. 移动端规范(强制)
- 所有可点元素触摸区 ≥ 44×44;视觉可小、热区不可小。
- 顶部与底部适配安全区(safe-area-inset-top / bottom),全面屏与刘海屏不被遮挡。
- 每个可点元素必须有按下反馈;不依赖 hover。
- 正文字号 ≥ 14px,辅助说明 ≥ 12px,行高 ≥ 1.5。
- 弹层统一从底部上滑;超过一屏时内部滚动、标题吸顶。
- 列表项整行可点,右侧留 44px 可点区域。
- 输入框聚焦时键盘不遮挡提交按钮(滚动到可视区)。
- 手势:右滑返回、下拉刷新;按钮区域禁用长按选中文本。
8. 研发须知(原型验证出的坑,务必按规范实现)
本轮在原型里发现 7 个"按钮在、点了没反应"的问题,全部源于两类写法。实现时必须遵守以下规范,不要照抄原型的兜底逻辑。
8.1 事件绑定
- 禁止内联 onclick 调用闭包里定义的函数(内联只能调用全局,否则静默失败)。
- 统一使用 addEventListener 或框架的 onClick。
- 确需全局暴露时显式 window.xxx = xxx,并在启动时做一次函数存在性自检。
- 捕获阶段的监听器不要无条件 stopPropagation(),否则会吞掉子元素自身的点击。
8.2 弹层层级(这一条本轮踩了 3 次)
- 每个弹层使用独立容器,禁止多个业务面板共用同一个滚动容器(否则会互相污染内容)。
- 层级统一规划:普通弹层 < 全屏页 < 确认层 < 分享/海报层 < Toast。
- 打开新弹层前先关闭同层级弹层,避免叠层导致"看着像没反应"。
- 禁止在弹层内部以定时器周期性重绘整块内容(会污染同容器的其它面板)。
8.3 反馈与可测性
- 任何点击都要有可感知反馈(面板 / Toast / loading / 状态变化)。
- 关键路径(发布、报名、支付、分享、认证)必须有自动化冒烟用例:点击后断言目标面板出现。
- 发版前逐页执行"按钮体检":每个 onclick 目标函数 typeof === function,且点击后页面有变化。
9. 验收清单
- 四类身份(个人/机构/企业/个体)均可注册;企业法人/经办人两条路径均可提交并进入审核。
- 首页宫格位置正确、场景位轮播正常、跑马灯最多 5 条且被接单后消失。
- 大学生专区默认进入校园互助;学校可按省份选择;学籍认证可拍照识别并提交,通过后显示认证徽章。
- 发布动态可发布并在信息流展示;点击卡片进入详情页可查看并发表评论。
- 接单详情可查看施助人数并弹出施助记录(脱敏)。
- 组队:草稿→公示→发布冻结→报名→发起人同意→参与者确认支付→占位→成行→结束→T+1 放款→返现,全链路可走通。
- 圈子的创建 / 加入 / 退出可用;圈子详情成员仅展示一行,未加入不可见其余成员。
- 紧急求救可发语音,接单页可试听。
- 「我发的」可按 5 类标签过滤。
- 分享:详情页可调起分享面板,并生成海报。
- 全站无"沉默按钮";移动端触摸区与安全区全部合规。
10. 待确认问题(需产品/业务拍板)
- 场景位轮播:「今日最新 / 新潮热门」的切换间隔与是否支持手动滑动?
- 跑马灯:5 条是并发上限还是滚动队列长度?被接单后立即消失还是播完本轮?
- 达人榜:榜单周期(周榜/月榜)?同校优先的具体排序权重?
- 学籍认证:OCR 用哪家服务?是否需要人工复核?审核时限?
- 语音求助:时长上限、是否必须同时录入文字、是否允许撤回?
- 施助记录脱敏规则:昵称打码位数、是否展示金额?
- 「我发的」分类标签:一个订单是否可能同时属于多个标签(如组队+紧急求救)?
- 企业身份是否完全隔离交易,还是允许"企业账号下的个人行为"?