| 项 | 说明 |
|---|---|
| 优先级 | P0 本期必做(缺失即不可上线)|P1 本期应做(可延后一个版本)|P2 后续迭代 |
| 编号规则 | FR-x.y 功能需求|BR-x.y 业务规则|FD-x 字段定义|ST-x 状态机|EX-x 异常兜底|AC-x 验收用例 |
| 需求描述要求 | 每条需求可测试:有明确触发条件、输入、输出 |
| 术语 | 定义 |
|---|---|
| 校园互助 | 大学生专区内「技能 / 求助 / 组队」内容的聚合模块,专区默认模块 |
| 校园社区 | 专区内「校园动态 + 圈子」的社区模块 |
| 企业直招 | 企业面向大学生发布的招聘/项目内容模块 |
| 认证学校 | 用户通过学籍认证绑定的学校,唯一且不可同时绑定多所 |
| 浏览学校 | 用户当前正在查看内容的学校,可与认证学校不同 |
| 展示范围 | 技能/求助的可见范围:仅本校 / 同城多校 / 不限 |
| 角色 | 未认证用户 · 已认证学生 · 社会用户 · 企业账号 |
| 编号 | 模块 | 需求 | 内容 |
|---|---|---|---|
| M1 | 专区框架 | FR-1.x | 顶部栏、模块 tab、默认模块、状态记忆 |
| M2 | 学校选择 | FR-2.x | 省份分组、搜索、切换浏览学校 |
| M3 | 达人榜 | FR-3.x | 你可能认识的达人 |
| M4 | 校园互助 | FR-4.x | 筛选、子 tab、内容卡片、发布挂件 |
| M5 | 校园社区 | FR-5.x | 认证氛围条、动态流、发布动态 |
| M6 | 学籍认证 | FR-6.x | 拍照识别、表单、提交、审核 |
| M7 | 圈子 | FR-7.x | 全部圈子、加入/退出、创建圈子 |
| M8 | 企业直招 | FR-8.x | 岗位列表、企业发布 |
| M9 | 发布 | FR-9.x | 专区发布(学校必选)、展示范围 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-1.1 | 专区入口 | P0 | 首页「大学生专区」卡片点击 → 进入专区首页 |
| FR-1.2 | 顶部栏 | P0 | 左侧返回;中间学校名(可点击);右侧无操作 |
| FR-1.3 | 模块 tab | P0 | 校园互助 / 校园社区 / 企业直招 三个 tab,可切换 |
| FR-1.4 | 默认模块 | P0 | 进入专区默认选中「校园互助」 |
| FR-1.5 | 状态记忆 | P1 | 本地记住最近一次的浏览学校与模块,再次进入时恢复 |
| FR-1.6 | 达人榜常驻 | P0 | 校园互助与校园社区两个模块均展示达人榜,位置固定在内容区上方 |
| 编号 | 规则 |
|---|---|
| BR-1.1 | 顶部学校名显示取当前浏览学校;若浏览学校为空则显示定位省份,再空则显示默认城市 |
| BR-1.2 | 已认证用户顶部学校名后追加标签:认证学校=浏览学校 →「已认证」(绿);否则 →「未认证」(灰) |
| BR-1.3 | 切换模块不重置滚动位置之外的任何状态;切换模块后列表回到顶部 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-2.1 | 打开选择器 | P0 | 点击顶部学校名 → 底部弹层「选择学校」,弹层高度 70% 屏幕 |
| FR-2.2 | 搜索 | P0 | 输入 ≥1 字符即实时过滤学校名;支持全称与简称(如"同济") |
| FR-2.3 | 省份切换 | P0 | 横向省份 chips,切换后列表刷新为该省学校 |
| FR-2.4 | 学校列表 | P0 | 学校 chips 列表;列表头显示「{省} · 共 {n} 所(可切换省份或搜索其他学校)」 |
| FR-2.5 | 选中生效 | P0 | 点击学校 → 顶部学校名更新 → 内容区整体切换该校内容 → 关闭弹层 → 轻提示「已切换到 {学校}」 |
| FR-2.6 | 切回本校 | P1 | 已认证用户浏览学校 ≠ 认证学校时,顶部显示提示条「已认证 {A},正在浏览 {B} · 切回本校」,点击一键切回 |
| 字段 | 类型 | 必填 | 来源 | 校验 | 说明 | |
|---|---|---|---|---|---|---|
| FD-2-1 | schoolId | String | 是 | 用户选择 | — | 学校唯一标识 |
| FD-2-2 | schoolName | String | 是 | 学校库 | ≤20 字 | 学校名称 |
| FD-2-3 | province | String | 是 | 学校库 | — | 所属省份,用于分组与 chips |
| FD-2-4 | certStatus | Enum | 是 | 系统 | unverified / pending / verified / rejected | 学校认证状态 |
| 编号 | 规则 |
|---|---|
| BR-2.1 | 默认省份 = 定位解析省份;无定位 → 默认省份(上海) |
| BR-2.2 | 学校排序:同城 → 同省 → 其他,同层内按学校热度(近 30 天内容量)降序 |
| BR-2.3 | 切换浏览学校不改变认证归属;认证学校仅可由学籍认证流程变更 |
| BR-2.4 | 未认证用户选择学校仅影响浏览范围,不产生认证状态 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-3.1 | 展示 | P0 | 专区内容区顶部固定卡片,标题「你可能认识的达人」,一行横排 4 个,可横向滑动 |
| FR-3.2 | 卡片信息 | P0 | 头像、昵称、标签(≤2)、技能数、信用分 |
| FR-3.3 | 点击 | P1 | 点击卡片 → 进入该用户个人主页 |
| 编号 | 规则 |
|---|---|
| BR-3.1 | 候选集 = 同校 ∪ 同圈子用户;若浏览学校为空,则放宽为同城 |
| BR-3.2 | 排序:同校优先 → 近 30 天完成订单数降序 → 技能数降序 → 信用分降序 |
| BR-3.3 | 排除:本人、已拉黑、信用分 ≤50、被限流账号 |
| BR-3.4 | 同一用户 24 小时内不重复出现在「换一批」前后两屏(P2) |
| 编号 | 标签规则 |
|---|---|
| BR-3.5 | 接单王 = 近 30 天完成订单 ≥20 |
| BR-3.6 | 新晋达人 = 入驻 ≤30 天 且 完成订单 ≥5 且 好评 ≥4.8 |
| BR-3.7 | 校园达人 = 近 30 天完成订单 ≥50 |
| BR-3.8 | 好评之星 = 好评率 ≥98% 且 评价数 ≥20 |
| BR-3.9 | 认证学生 = 学籍认证通过;信用极好 = 信用分 ≥95 |
| BR-3.10 | 同屏最多展示 2 个标签,优先级:认证学生 > 信用极好 > 校园达人 > 接单王 > 好评之星 > 新晋达人 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-4.1 | 一级筛选 | P0 | 为你推荐(默认)/ 单纯任务 / 日结任务 / 远程助理 / 一级标签(校园跑腿、学习辅导、家政维修、摄影设计、活动组局、情绪陪伴、二手转让、新奇体验) |
| FR-4.2 | 子 tab | P0 | 「为你推荐」下含:找服务(技能)|接任务(求助/订单) |
| FR-4.3 | 内容卡片 | P0 | 见 FD-4 字段表 |
| FR-4.4 | 发布挂件 | P0 | 右下悬浮 + 按钮 → 进入专区发布(见 M9) |
| FR-4.5 | 上滑分页 | P0 | 每页 20 条,到底提示「没有更多了」 |
| 字段 | 类型 | 必填 | 来源 | 校验 | 说明 | |
|---|---|---|---|---|---|---|
| FD-4-1 | coverUrl | String | 否 | 发布内容 | ≤9 张 | 无图显示占位图 |
| FD-4-2 | price | Number / 枚举 | 是 | 发布内容 | ≥0 或「看着给」 | 显示为 ¥{price} + 单位 |
| FD-4-3 | priceUnit | Enum | 否 | 发布内容 | 次 / 小时 / 天 | 默认「次」 |
| FD-4-4 | title | String | 是 | 发布内容 | ≤30 字 | 超长 2 行省略 |
| FD-4-5 | desc | String | 否 | 发布内容 | ≤100 字 | 2 行省略 |
| FD-4-6 | publisherName | String | 是 | 用户资料 | — | 昵称 |
| FD-4-7 | publisherSchool | String | 是 | 发布内容 | — | 学校名;未认证显示省份 |
| FD-4-8 | joinCount | Number | 是 | 系统 | ≥0 | 已报名人数,显示「已报名 N 人」 |
| FD-4-9 | deadline | Timestamp | 否 | 发布内容 | > 当前时间 | 显示「今天 14:34 前完成」 |
| FD-4-10 | distance | Number | 否 | 系统 | — | 有定位显示公里;否则「同城」 |
| FD-4-11 | scopeTag | Enum | 否 | 系统 | 本校 / 跨校 | 跨校显示角标 |
| FD-4-12 | isNovel | Boolean | 否 | 系统 | — | 新奇技能显示角标 |
| 编号 | 规则 |
|---|---|
| BR-4.1 | 找服务排序 = 技能热度(浏览×0.30 + 收藏×0.25 + 评价数×0.20 + 评分×0.15 + 成交×0.10;新奇技能 ×1.3) |
| BR-4.2 | 接任务排序 = 金额分×0.4 + 紧急分×0.3 + 新鲜分×0.2 + 互动分×0.1;有定位时先按距离档(≤1/1–3/3–5/5–10/10–20km)再按分数 |
| BR-4.3 | 内容范围 = 浏览学校;浏览学校为空时 = 全部学校 |
| BR-4.4 | 过滤:审核中、已下架、发布者信用分 ≤50 的内容不展示 |
| BR-4.5 | 同一发布者在首屏最多占 2 条 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-5.1 | 认证氛围条 | P0 | 未认证:显示「完成学籍认证,接单更可信」+ 说明 + 「去认证」按钮;已认证:不展示氛围条,顶部仅保留认证徽标 |
| FR-5.2 | 热门圈子 | P0 | 横向滑动,显示前 5 个圈子 + 「更多圈子」入口 |
| FR-5.3 | 动态流 | P0 | 卡片含:头像、昵称、学校院系年级、关系提示、正文、图片(1–9 九宫格)、学校/位置标、收藏数、评论数、点赞数 |
| FR-5.4 | 互动 | P0 | 点赞/取消点赞、收藏/取消收藏、评论、举报;本人动态可删除 |
| FR-5.5 | 查看评论 | P0 | 底部「查看评论 (N)」→ 展开评论列表 |
| FR-5.6 | 发布动态 | P0 | 右下「发布动态」→ 弹层(见 FR-5.7) |
| FR-5.7 | 发布动态表单 | P0 | 字段:选择学校(必填)、动态内容、添加图片(≤9) |
| 字段 | 类型 | 必填 | 来源 | 校验 | 说明 | |
|---|---|---|---|---|---|---|
| FD-5-1 | schoolId | String | 是 | 用户选择 | 须在浏览省份内 | 发布动态的归属学校 |
| FD-5-2 | content | String | 是 | 用户输入 | 1–1000 字 | 动态正文;空则拦截提交 |
| FD-5-3 | images | Array | 否 | 用户上传 | ≤9 张,单张 ≤5MB | 超出压缩 |
| FD-5-4 | relationTip | String | 否 | 系统 | — | 如「你的 3 位学院同学认识 TA」;无关联不返回 |
| FD-5-5 | likeCount / favCount / commentCount | Number | 是 | 系统 | ≥0 | 互动计数 |
| 编号 | 规则 |
|---|---|
| BR-5.1 | 关系提示生成条件:同校 / 同院系 / 有共同好友,命中任一才展示;否则不展示该行 |
| BR-5.2 | 动态范围 = 归属学校;用户切换浏览学校后动态流随之切换 |
| BR-5.3 | 社区为审核制时,发布后提示「已提交,审核中」且仅自己可见 |
| BR-5.4 | 点赞、收藏为幂等操作,重复点击切换状态 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-6.1 | 入口 | P0 | 校园社区氛围条「去认证」;及「我的」页认证入口 |
| FR-6.2 | 拍照识别 | P0 | 按钮「立即拍照 / 上传」→ 识别学生证/录取通知书 → 自动填入学校、姓名、学号、院系 |
| FR-6.3 | 表单 | P0 | 字段见 FD-6;学校支持「切换」 |
| FR-6.4 | 提交 | P0 | 点击「提交认证」→ 校验通过 → 进入「审核中」状态 → 提示「预计 1 个工作日内完成审核」 |
| FR-6.5 | 结果 | P0 | 通过 → 认证徽标生效;驳回 → 展示驳回原因 + 「重新提交」 |
| 字段 | 类型 | 必填 | 来源 | 校验 | 说明 | |
|---|---|---|---|---|---|---|
| FD-6-1 | schoolId | String | 是 | OCR / 手选 | 须在学校库内 | 认证学校 |
| FD-6-2 | realName | String | 是 | OCR / 手填 | 2–20 字 | 姓名 |
| FD-6-3 | studentNo | String | 是 | OCR / 手填 | ≥6 位,数字或字母 | 学籍号 |
| FD-6-4 | department | String | 否 | OCR / 手填 | ≤30 字 | 院系 |
| FD-6-5 | certImage | File | 是 | 拍照/上传 | ≤10MB | 证件照,仅审核可见 |
| 项 | 说明 |
|---|---|
| ST-6 认证状态机 | unverified(未认证)→ 提交 → pending(审核中)→ 通过 → verified(已认证);→ 驳回 → rejected(可重新提交,最多每日 3 次) |
| 重复提交 | pending 状态下「提交认证」按钮置灰,文案「审核中」 |
| 互斥 | 一个用户同时只能有一个 pending 或 verified 的认证学校 |
| 编号 | 规则 |
|---|---|
| BR-6.1 | OCR 识别置信度低于阈值时,对应字段留空并高亮提示「识别失败,请手动填写」,不阻断提交 |
| BR-6.2 | 学号与姓名由运营/自动核验;同一学校同一学号不可被两个账号认证 |
| BR-6.3 | 证件照对外打码;预览链接 5 分钟一次性有效并记录审计日志 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-7.1 | 全部圈子页 | P0 | 入口:校园社区「更多圈子」。页内 tab:我的圈子 | 发现圈子 |
| FR-7.2 | 分类侧栏 | P0 | 推荐 / 人气 / 户外 / 运动 / 收藏 / 摄影 / 宠物 / 二次元 / 娱乐 / 手作 / 潮玩 / 游戏 / 其他 |
| FR-7.3 | 圈子卡片 | P0 | 头像、圈名、成员数与标签(如「1240 成员 · 学习 · 券商实习」)、加入按钮 |
| FR-7.4 | 加入 / 退出 | P0 | 自由加入→立即生效;需要审核→提示「已申请」;已加入→按钮变为「进入」 |
| FR-7.5 | 编辑即退出 | P0 | 「我的圈子」右侧「编辑」→ 退出圈子(删除加入关系),需二次确认 |
| FR-7.6 | 创建圈子 | P0 | 弹层:名称(2–10 字)、分类、介绍(≤50 字)、加入方式(需要审核 / 自由加入)→ 提交 |
| 编号 | 规则 |
|---|---|
| BR-7.1 | 圈子名称全局唯一,重名拦截并提示「该圈子名称已存在」 |
| BR-7.2 | 创建的圈子需审核,约 1 个工作日;未通过前仅创建者可见 |
| BR-7.3 | 加入方式为「仅本校」时,要求用户学籍认证通过且认证学校 = 圈子归属学校 |
| BR-7.4 | 退出圈子后不再展示该圈子的帖子与标识;重新加入无需再次审核(原为自由加入时) |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-8.1 | 岗位列表 | P0 | 卡片:企业 logo、企业名 + 企业认证标、岗位名、薪资、需求人数 / 已投递、截止时间、标签、专业能力要求 |
| FR-8.2 | 筛选 | P1 | 按岗位类型 / 学校 / 薪资筛选 |
| FR-8.3 | 企业发布 | P0 | 发布表单新增「学校」字段(非必填);选择后内容仅在该学校下展示,不选则全平台展示 |
| FR-8.4 | 投递 | P1 | 岗位详情页「投递 / 联系企业」 |
| 编号 | 规则 |
|---|---|
| BR-8.1 | 企业账号不可交易:无接单入口、不可发布求助/闲置、组队仅免费模式 |
| BR-8.2 | 企业发布内容必须通过企业资质审核后才对外展示 |
| 编号 | 功能 | 优先级 | 需求描述 |
|---|---|---|---|
| FR-9.1 | 发布类型 | P0 | 技能 / 求助 / 紧急求救 / 活动 / 闲置转让 / 组队(与首页发布一致) |
| FR-9.2 | 学校字段 | P0 | 从专区发起的发布,学校为必填;默认取当前浏览学校 |
| FR-9.3 | 展示范围 | P0 | 仅本校 / 同城多校 / 不限;默认「仅本校」 |
| FR-9.4 | 跨校标识 | P0 | 展示范围非「仅本校」的内容,卡片展示「跨校」角标 |
| FR-9.5 | 联系手机号 | P1 | 求助类发布新增「联系手机号」字段,非必填 |
| 编号 | 规则 |
|---|---|
| BR-9.1 | 未认证用户从专区发布时必须手动选择学校;发布后内容标「未认证用户发布」 |
| BR-9.2 | 已认证用户默认发布到认证学校;若手动改为其他学校,需二次确认并标「跨校发布」 |
| BR-9.3 | 联系手机号默认走虚拟号(AXB);仅订单进入「施助中」后双方可见,点击可直接调起拨号;订单结束 24 小时回收 |
| BR-9.4 | 学校 / 展示范围为必选前置条件,缺失则「发布」按钮不可点击 |
| 角色 | 可见内容 | 发技能/求助 | 发动态 | 限制 |
|---|---|---|---|---|
| 未认证 · 未选校 | 省份内容(全部学校) | ✗ | 需先选校 | 可浏览/点赞/收藏 |
| 未认证 · 已选校 | 该校内容 | △ 需选校 | 该校动态需选校 | 内容标「未认证用户发布」 |
| 已认证 A 校 | 默认 A 校;可浏览 B 校 | ✓ 默认 A 校 | ✓ | 切校需标跨校 |
| 社会用户 | 可接大学生订单/技能 | ✓ 社会场 | ✗ | 不可发动态 |
| 企业账号 | 企业直招/技能/组队(免费) | ✗ 不可交易 | ✗ | 不可发求助/闲置 |
| 编号 | 场景 | 处理 |
|---|---|---|
| EX-1 | 首屏加载 | 骨架屏;失败保留上次缓存内容 + 「点击重试」,不弹错误窗 |
| EX-2 | 空态 | 「该学校暂无内容」+ 按钮「切换学校」「去发布」 |
| EX-3 | 图片失败 | 显示占位图,标题与点击不受影响 |
| EX-4 | OCR 失败 | 字段留空 + 高亮提示「识别失败,请手动填写」,可继续提交 |
| EX-5 | 切换学校失败 | 顶部学校名回滚到原值 + toast「切换失败,请重试」 |
| EX-6 | 发布失败 | 保留表单内容,按钮恢复可点,toast 展示失败原因 |
| EX-7 | 定位未授权 | 按未定位处理(默认省份),并在选择器首次打开时提示授权 |
| 编号 | 场景 | 操作 | 预期结果 |
|---|---|---|---|
| AC-1 | 未认证 + 有定位 | 进入专区 | 顶部显示省份名,无认证标签 |
| AC-2 | 未认证 + 选校 | 选择「同济大学」 | 顶部显示「同济大学 · 未认证」,内容切换为同济内容 |
| AC-3 | 已认证 A 校切 B 校 | 认证同济,切到复旦 | 顶部提示「已认证 同济大学,正在浏览 复旦大学 · 切回本校」;发布默认仍为同济 |
| AC-4 | 达人榜 | 进入校园互助 | 展示 4 个卡片,含技能数与信用分;切到校园社区仍在同一位置 |
| AC-5 | 子 tab | 点「接任务」 | 列表切换为求助/订单,排序符合 BR-4.2 |
| AC-6 | 专区发布 | 点发布挂件 → 技能 | 表单含「学校」且必填;不选学校时发布按钮不可点 |
| AC-7 | 展示范围 | 选择「同城多校」后发布 | 内容卡片出现「跨校」角标;在 B 校可见 |
| AC-8 | 学籍认证 | 不上传证件直接提交 | 拦截并提示「请上传学生证 / 录取通知书」 |
| AC-9 | 学籍号校验 | 输入 5 位学号 | 提交拦截,提示「学籍号至少 6 位」 |
| AC-10 | 认证审核中 | 提交后再点提交 | 按钮置灰,文案「审核中」 |
| AC-11 | 圈子编辑 | 我的圈子点「编辑」 | 二次确认后退出圈子,圈子从我的圈子移除 |
| AC-12 | 创建圈子 | 名称输入 1 字 | 拦截并提示「名称 2–10 字」 |
| AC-13 | 企业发布 | 企业选择学校后发布 | 内容仅在该学校下的企业直招模块展示 |
| AC-14 | 权限 | 企业账号进入校园互助 | 无接单/报名入口 |
| 不做 | 说明 |
|---|---|
| 跨校认证 | 一个用户同时认证多所学校 |
| 圈子内独立聊天/群聊 | 本期只做圈子帖子与成员关系 |
| 企业在线面试/简历投递闭环 | 本期仅展示与「联系企业」 |
| 校园动态视频 | 本期仅图片 + 文字 |
| AI 自动匹配学校(按定位猜学校) | 本期由用户显式选择 |