| 编号 | 规则 |
|---|
| R-D01 | 发布类型六类:技能、求助、紧急求救、活动、闲置转让、组队。 |
| R-D02 | 从大学生专区发布:学校必选(默认本校);从首页发布:学校选填。 |
| R-D03 | 发布过程自动保存草稿;草稿不冻结资金、不进列表;仅「正式发布」冻结资金。 |
| R-D04 | 同一账号 24 小时内发布超过 10 条,进入人工审核队列。 |
| R-D05 | 图片 ≤9 张、单张 ≤5MB;超出限制压缩后上传;「AI 帮写」仅辅助,不替代用户内容。 |
| R-D06 | 审核状态:待审核 → 通过 / 驳回;驳回需附原因,可修改后重新提交。 |
| R-D07 | 选择「看着给」时服务费为 0、不冻结资金,价格区展示「看着给」而非 ¥0。 |
| R-D08 | 紧急求救支持语音输入(≤60 秒),可转文字后编辑;接单页可展示语音求助条目。 |
| R-D09 | 服务时长 = 时长数值(1–24)+ 单位(小时 / 天 / 次);未填写则详情页不展示该行。 |
| R-D10 | 审核中的内容仅发布者可见,并标注「审核中」。 |
| 编号 | 规则 |
|---|
| R-E01 | 组队付费四种:免费、AA 平摊、主办方打赏、参与者付费。 |
| R-E02 | AA 平摊:人均 = 所需总金额 ÷ 所需人数;发起人只付自己 1 份,参与者各付 1 份。 |
| R-E03 | 主办方打赏:仅发起人出资,成行后平均打赏给每位参与者。 |
| R-E04 | 参与者付费:发起人不付费,参与者按人均付费。 |
| R-E05 | 付费模式:支付成功才占位;免费模式报名即占位。 |
| R-E06 | 报名后 15 分钟未支付自动释放名额,名额可被他人抢占。 |
| R-E07 | 名额满后报名进入候补队列;出现空位时候补 #1 自动获得名额并通知。 |
| R-E08 | 成行条件:已付人数 ≥ 所需人数。 |
| R-E09 | 到期人数不足:发起人可补足差额成行,或选择流局(参与者全额退回)。 |
| R-E10 | 发起人成员管理四动作:同意参加、不予同意(退款)、剔除(退款)、恢复报名。 |
| R-E11 | 剔除仅限成行前 / 施助开始前;剔除后名额优先转候补 #1,无候补则公开释放。 |
| R-E12 | 同一成员最多被剔除 2 次;同一发起人 7 天内剔除 ≥3 次触发风控审核。 |
| R-E13 | 发起人不可剔除或拒绝自己;发起人退出视为流局,需二次确认。 |
| R-E14 | 状态机:草稿 → 招募中 → 待补足 / 已成行 → 已结束 / 已流局。 |
| R-E15 | 结算:活动结束解冻后 T+1 放款;AA 模式下发起人净支出 = 1 份。 |
| R-E16 | 报名区仅做展示(头像一行 + 还差几人);管理动作统一从「查看全部成员」入口进入,处理一条审批 ≤2 次点击。 |
| 编号 | 规则 |
|---|
| R-T01 | 位置:底部导航上方,高 44px,不遮挡「发布」。 |
| R-T02 | 内容:仅求助订单。 |
| R-T03 | 条数:默认 5 条(可配 3–8;不足按实际;0 条隐藏)。依据:一轮时长须控制在 20–30 秒(5 × 5–6 秒)、第 6 条后曝光≈0、同城 20km 未接单池通常十几到几十条;另提供「查看全部 ›」入口承接想看更多的需求。 |
| R-T04 | 停留时长 = 基础(按标题字数)+ 加成,封顶 12 秒、下限 4 秒。基础:≤10 字 4s / 11–15 字 5s / 16–20 字 6s / 21–25 字 7s / ≥26 字 8s;加成:本轮第 1 条 +2s、含打赏 +1s、综合金额 ≥500 元 +1s、已曝光 2 轮 −1s;长按暂停不计时。 |
| R-T05 | 排序:开定位 → 距离最近;未开定位 → 金额最高。 |
| R-T06 | 城市:手动选城优先于定位;未开定位默认 上海。 |
| R-T07 | 距离基准:一律以采用城市为基准计算(选了城就按所选城市中心算);无定位时显示「同城」,不显示公里数。 |
| R-T08 | 范围:仅取采用城市同城 + 20km 半径内可接的求助订单。 |
| R-T09 | 点击:点条目 → 订单详情页;点「去接单」→ 详情页并定位到报名区。 |
| R-T10 | 消除:点「×」→ 二次确认 → 当天不再显示,次日 0 点恢复。 |
| R-T11 | 消除记录:本地 + 服务端双写,换设备仍生效。 |
| R-T12 | 更新:已接单订单移除并补位;不足 5 条按实际条数;0 条则隐藏跑马灯。 |
| R-T13 | 暂停/出现:长按、页面不可见、请求中暂停(恢复后从剩余时长继续);进首页延迟 1.5 秒出现,下滑超 300px 隐藏。 |
| R-T14 | 选城 ≠ 定位城市时:跑马灯按所选城市展示,顶部提示「当前按【X】展示 · 恢复定位」,点击恢复定位城市并重排。 |
| R-T15 | 默认态(未选城):有定位 → 定位城市 + 按距离最近;无定位 → 上海 + 按金额最高。 |
| R-T16 | 选城后:订单池、距离基准、半径筛选、排序全部按所选城市;顶部提示「当前按【X】展示 · 恢复定位」;选择持久化。 |
| R-T17 | 位置基准:一律按「采用城市」;仅当未选城时才用定位(无定位则用上海)。 |
| R-T18 | 内容池:仅取「招募中 + 未被接单 + 未过期」的求助订单;最多 5 条;不足按实际条数(不用过期单凑数);0 条则隐藏跑马灯。 |
| R-T19 | 取数分层:近 24 小时发布优先 → 不足用近 3 天补齐 → 仍不足按实际条数展示。 |
| R-T20 | 排序:有定位 = 距离 → 发布时间 → 金额;无定位 = 金额 → 发布时间。排序第 1 条为「主推条」(停留 +2 秒)。 |
| R-T21 | 滚动顺序:按排序顺序循环播放;每轮顺序固定;每 15 分钟或下拉刷新重算;新单下一轮生效(金额高于首条可插入队首)。 |
| R-T22 | 淘汰与补位:被接单 / 已过期 → ≤30 秒内移除,后续条目前移补位(不重新排序,避免跳动)。 |
| R-T23 | 疲劳控制:同一条订单 1 小时内最多曝光 3 轮,超出顺延展示下一条。 |
| R-T24 | 定位精度分级:精确(GPS,<1km)→ 城市级(大致位置 / 1–5km)→ 省级(仅省份或 IP 定位) → 无定位。 |
| R-T25 | 省级模式:头部显示「省份名 + 全省」并给「选城市」入口;订单池 = 全省可接求助单;距离显示「同省」(不显示公里数);排序 = 金额最高 → 发布时间倒序;不做 20km 半径过滤。 |
| R-T26 | 精度升级引导:检测到省级精度时,提示「定位精度较低,选择城市可获得更准推荐」+ 一键选城市(优先推荐省会、其次上次选择的城市);用户选城后按城市级处理。 |
| R-T27 | 兜底顺序:所选城市 > 精确定位 > 城市级定位 > 省级定位(全省模式)> 默认上海。 |
| R-T28 | 入池条件:仅求助订单;招募中/待接单且未接单、未过期;属采用城市;同城 ≤20km(省级模式不限);审核通过、信用分 >50、赏金已托管、内容合规。 |
| R-T29 | 控屏:同一发布者最多占 2 条;同一条订单 1 小时内最多曝光 3 轮。 |
| R-T30 | 排序(本期定稿):① 有定位时按距离档 ASC(≤1/1–3/3–5/5–10/10–20km;无定位与省级跳过)→ ② 金额分 DESC(min(综合金额,500)÷500,综合金额 = 酬金(现金)+ 打赏豆数×0.1)→ ③ orderId ASC 兜底。急单硬规则:距截止 ≤3 小时在同档内提到最前并打「即将截止」标。不做加急、不做付费置顶、不用时效/新鲜评分。 |
| R-T31 | 金额两要素:酬金=现金 / 余额(订单基础报酬,走资金托管,履约后进接单者余额,可提现);打赏=吧豆(积分,发布者追加鼓励;接单者获得吧豆,不可提现,只能换权益 / 排名)。跑马灯分开显示:【酬金 80¥】【打赏 50 豆】。 |
| R-T32 | 排序折算:综合金额 = 酬金 + 打赏豆数 × 0.1(折算率可配),金额分 = min(综合金额,500) ÷ 500;打赏只影响排序、不参与现金结算;单条订单打赏折算部分不超过 50 元(防刷曝光)。本期无加急、无付费置顶。 |
| R-T33 | 补位时效:主链路实时推送 ≤30 秒;降级轮询 60 秒;下拉刷新/切城/回前台立即拉取;兜底 T+1 全量 + 每 15 分钟重排。 |
| R-T34 | 补位方式:只前移不重排;新单下一轮生效;不足 5 条按实际;0 条隐藏跑马灯。 |
| R-T35 | 切换城市/省份:立即清空并按新城市拉取(骨架 ≤300ms,不展示旧内容);场景位与瀑布流同步重算;失败保留旧内容并提示重试。 |
| R-T36 | 消除记录维度:按「城市 + 日期」存储;换城市后重新展示;以服务端时间为准。 |
| 编号 | 规则 |
|---|
| R-G01 | 达人榜(可能认识的达人):候选为同校 / 同圈子用户,优先订单多、技能多者;位置固定,「校园互助」与「校园社区」都展示。 |
| R-G02 | 推荐得分 = 信用 40% + 完成订单 30% + 好评率 20% + 在线状态 10%;同校 / 同城加权;接单率 <50% 降权。 |
| R-G03 | 固定场景位:同一位置在「今日最新 ↔ 新潮热门」间轮换,各停留 8 秒;用户手动切换后暂停 24 秒。 |
| R-G04 | 「今日最新」取数:有定位取距离最近;无定位取当日最早发布;未授权定位默认上海。 |
| R-G05 | 跑马灯:仅求助订单、5 条、每条停留 5 秒;点「消除」当天不再显示;已被接单的自动移除并补位。 |
| R-G06 | 「新潮热门」按热度分排序(浏览 + 收藏 + 成交加权),新奇技能加权 1.3。 |
| R-G07 | 今日最新显示 3 条(不足按实际),底部「查看更多 ›」进入列表页;新潮热门同样 3 条+查看更多,两态结构对称、卡片高度一致(防瀑布流跳动)。 |
| R-G08 | 查看更多列表页:标题随来源(今日最新 / 新潮热门);排序与卡片一致(有定位距离升序、无定位时间升序),顶部可切换排序;上滑分页,每页 20 条;空态显示「今天还没有新内容」+「去发布」;返回首页时卡片停留在进入时的那一态。 |
| R-G09 | 接口:F 场景位返回 today[]/hot[] 各最多 3 条,并带 total 与 hasMore;列表页接口为 GET /scene-slot/today|hot?city=&page=&size=20&sort=。 |
| 编号 | 规则 |
|---|
| R-O01 | 判定机制:优先 WebSocket 长连接 + 心跳 30 秒;无 WS 时退化为 HTTP 轮询 60 秒;打开首页 / 发消息 / 接单等关键动作即时上报一次。 |
| R-O02 | 时间基准:一律以服务端时间与 lastActiveAt 为准,客户端时间不参与判定。 |
| R-O03 | 状态阈值:心跳 ≤ 90 秒 = 在线;90 秒~5 分钟 或 App 在后台 >2 分钟 = 离开;> 5 分钟 无心跳 = 离线;从未上报 = 未知(按离线展示)。 |
| R-O04 | 杀进程 / 崩溃:无法上报,按心跳超时兜底 → 最长 90 秒后显示「离开」、5 分钟后「离线」。因此关键时刻(点「现在可聊」、发送消息)必须实时校验一次。 |
| R-O05 | 切后台 / 锁屏:立即上报 appState=background,状态转「离开」;若被系统冻结(iOS 常见)则退化为心跳超时判定。 |
| R-O06 | 无网络 / 飞行模式:客户端本地立即显示离线;服务端在 5 分钟内仍为「离开」,恢复网络后 5 秒内同步为在线。 |
| R-O07 | 弱网抖动:断连 < 30 秒 不改变状态(防闪烁),重连即恢复;超过 30 秒按心跳规则降级。 |
| R-O08 | 多设备:同一账号任一设备在线即账号在线,展示「在线(多端)」;设备维度状态各自保留。 |
| R-O09 | 服务端重启 / 长连接断开:客户端 30 秒内自动重连;期间按最后 lastActiveAt 判定,不批量置为在线。 |
| R-O10 | 退出登录 / 切换身份:立即上报离线;切换身份后按新身份重新上报。 |
| R-O11 | 封禁 / 审核中:强制离线,不对外展示在线。 |
| R-O12 | 异常心跳:同一账号心跳来自大量不同设备 / 固定周期脚本 → 风控标记,不计入在线。 |
| R-O13 | 用途边界:在线状态仅用于展示与引导,不作为拦截条件 —— 离线用户仍可发布、接单、发消息(转留言)。 |
| R-O14 | 展示规则:头像角标 🟢在线 / 🟡离开 / ⚪离线;离线展示「最近在线 X 分钟前」(比"离线"信息量更大)。 |
| R-O15 | 「现在可聊」:在线 → 直接进会话;离开 → 可用但提示「可能回复较慢」;离线 → 降级为「留言」,提示「对方不在线,已留言」。 |
| R-O16 | 隐私开关:设置项「展示在线状态」默认开启;关闭后他人一律看到「离线」,但消息送达不受影响。 |
| R-O17 | 接口字段:presence:{status:online|away|offline, lastActiveAt, deviceCount};心跳接口 POST /presence/ping(30 秒,带 appState);会话页与接单页订阅对方 presence 变更。 |
| R-O18 | 验收用例:①杀进程→90 秒内「离开」、5 分钟内「离线」;②切后台立即「离开」、回前台 3 秒内「在线」;③断网重连 5 秒内恢复且不闪烁;④双设备任一端在线=账号在线;⑤关闭隐私开关后他人看到离线但消息必达;⑥篡改客户端时间不影响状态。 |