Files
hfb_sys/docs/business-rules.md
T

164 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 业务规则
业务规则以 [项目计划](project-plan.md) 为准。
一期关键边界:
- 哈夫币是游戏账号内资产,不是平台币。
- 哈夫币数量由号主手动填报,订单创建时生成账号资产快照。
- 平台不保存游戏账号密码,不代收验证码,不绕过游戏安全机制。
- 账号交接采用号主手动交接。
- 资金先做账务模型,不直接接真实支付和提现。
- 押金、交接超时、归还超时、短信限流等阈值进入系统配置。
## 开发态实名认证
- 当前实现为 mock 实名服务。
- 提交合法姓名和 18 位身份证号后直接通过认证。
- 后端只返回脱敏姓名和脱敏证件号。
- 用户表 `realname_status` 会同步更新为 `verified`
- 后续接入阿里云或腾讯云实名服务时,保持 `POST /api/realname/start``GET /api/realname/status` 的业务语义不变。
## 开发态租号发布
- 发布租号前必须登录并完成实名认证。
- 一期创建发布时同时创建 `game_accounts``rental_listings`
- 哈夫币数量是号主手动填报值,不代表实时值。
- 当前提交审核会进入 `review_status = pending`,由后台商品审核通过后才上架。
- 后台审核通过后,发布状态变为 `published`,审核状态变为 `approved`,账号状态变为 `published`
- 后台审核拒绝后,发布保留为草稿,审核状态变为 `rejected`,拒绝原因写入 `review_reason`
- 公开列表只展示 `status = published``review_status = approved` 的发布。
## 开发态订单创建
- 创建订单需要登录。
- 一期创建订单暂不接真实支付和押金冻结,创建成功后直接进入 `pending_handoff`
- 创建订单时会在数据库事务内锁定发布和账号,防止同一账号重复出租。
- 创建订单时生成 `account_snapshot`,记录下单时账号资产状态。
- 订单创建后发布状态变为 `rented`,不再出现在公开租号列表。
- 待交接订单可以由租客取消,取消后发布状态恢复为 `published`
## 开发态账号交接
- 创建订单后状态为 `pending_handoff`,交接状态为 `pending_owner`
- 只有号主可以提交交接说明。
- 号主提交交接说明后,交接状态变为 `pending_renter_confirm`
- 只有租客可以确认收号。
- 租客确认收号后,订单状态变为 `renting`,交接状态变为 `received`
- 确认收号时会重新计算租赁开始时间和结束时间。
- 交接记录保存在 `handoff_records`,订单双方都可以查看。
## 开发态归还与完成
- 租赁中订单可以由租客提交归还。
- 租客提交归还后,订单状态变为 `pending_return_confirm`,交接状态变为 `pending_owner_return_confirm`
- 只有号主可以确认归还。
- 号主确认归还后,订单状态变为 `completed`,交接状态变为 `returned`,结算状态先标记为 `settled`
- 订单完成后,账号和发布状态恢复为 `published`
- 当前会生成开发态模拟钱包流水,不代表真实支付或提现。
## 开发态钱包账务
- 钱包账务当前为模拟流水,不代表真实支付、充值或提现。
- 创建订单时为租客生成一笔冻结流水,金额为租金加押金。
- 取消待交接订单时释放租客冻结金额。
- 订单完成时释放租客冻结金额,给号主生成租金入账流水,并给租客生成押金退回流水。
- 每笔流水记录 `balance_after`,用于后续对账。
- 后台资金流水接口为 `/api/admin/wallet/ledger`,前端页面为 `/admin/wallet-ledger`
- 后台可按用户、订单和业务类型查看最近流水,用于客服核对押金、租金、释放和结算记录。
- 后续接入真实支付后,需要把模拟冻结替换为支付成功后的真实冻结。
## 开发态站内信
- 订单创建后通知号主和租客。
- 租客取消订单后通知号主和租客。
- 号主提交交接说明后通知租客。
- 租客确认收号后通知号主。
- 租客提交归还后通知号主。
- 号主确认归还后通知号主和租客。
- 发起申诉后通知对方和发起人。
- 仲裁完成后通知号主和租客。
- 站内信支持列表查询和标记已读。
## 开发态申诉仲裁
- 订单双方都可以在非终态订单发起申诉。
- 同一个订单同一时间只允许存在一个 `open``processing` 申诉。
- 发起申诉后订单状态变为 `disputing`,账号和发布保持锁定。
- 开发态后台仲裁接口为 `/api/admin/disputes`,当前只要求登录,后续接后台管理员和 RBAC。
- 仲裁会释放开发态模拟冻结金额,并根据结果生成钱包流水。
- 全额退款:释放冻结金额后,将租金加押金作为可用余额退给租客,订单置为 `closed`
- 部分退款:需要填写退给租客的金额,剩余冻结金额结算给号主,订单置为 `closed`
- 释放押金:租金结算给号主,押金退给租客,订单置为 `completed`
- 扣押金/赔付号主:可填写从押金中赔付给号主的金额;不填默认处理全额押金,订单置为 `completed`
- 关闭订单:只释放冻结金额,不产生可用余额结算,订单置为 `closed`,关联商品和账号下架。
- 仲裁完成会写入 `audit_logs`,记录裁决结果、金额、订单状态和资金处理。
- 当前仍是开发态模拟账务,不代表真实退款、扣款或提现;接入真实支付后需要替换为支付渠道退款、分账和对账逻辑。
## 开发态系统配置
- 系统配置接口为 `/api/admin/system-configs`
- 首次查询会自动补齐一组默认配置,包括交接超时、归还确认超时、短信限流、最低押金、实名下单开关、平台抽成和提现门槛。
- 更新配置会写入 `audit_logs`,记录操作人、配置项、修改前值和修改后值。
- 当前后台接口已使用独立管理员登录和后台 JWT;后续接入角色和权限后再限制可操作配置项。
## 开发态后台登录
- 后台登录接口为 `/api/admin/auth/login`,前端页面为 `/admin/login`
- 后台页面使用独立管理布局,不再混用用户端侧边栏。
- 后台登录前必须先请求 `/api/admin/auth/captcha` 获取图形验证码。
- 图形验证码为后端生成的 SVG,验证码答案保存在 Redis,默认 3 分钟过期,校验后立即删除。
- 后台 JWT 与普通用户 JWT 区分 `admin``user`,普通用户 Token 不能访问 `/api/admin/*`
- 开发态首次后台登录会自动初始化默认管理员:用户名 `admin`,密码 `admin123456`
- 默认管理员只用于本地开发;正式部署前必须改为初始化脚本、强密码和管理员密码修改流程。
## 开发态后台仪表盘
- 后台仪表盘接口为 `/api/admin/dashboard`,前端页面为 `/admin/dashboard`
- 当前统计用户数、实名用户数、商品数、上架数、订单数、租赁中订单、今日订单、今日钱包流水。
- 待处理事项包括待审核商品、待仲裁申诉、待交接订单和待归还确认订单。
- 最近订单和最近申诉用于运营快速定位问题,后续接入后台订单管理和商品审核后再跳转到对应详情页。
## 开发态用户管理
- 用户管理接口为 `/api/admin/users`,前端页面为 `/admin/users`
- 后台可查看用户手机号、实名状态、风险状态、信用分、订单数、发布数和申诉数。
- 冻结用户会将 `users.status` 改为 `frozen``risk_status` 改为 `frozen`,被冻结用户不能继续登录。
- 解冻用户会将 `users.status` 改为 `active``risk_status` 改为 `normal`
- 冻结和解冻都会写入 `audit_logs`,记录管理员、用户、前后状态和原因。
## 开发态订单管理
- 订单管理接口为 `/api/admin/orders`,前端页面为 `/admin/orders`
- 后台可查看全量订单、租客、号主、订单状态、交接状态、结算状态、租金和押金。
- 订单详情页 `/admin/orders/:id` 展示订单状态、双方用户、租期、交接记录和账号资产快照。
- 高风险客服操作集中放在订单详情页处理,必须填写原因并写入审计日志。
## 开发态商品管理
- 商品管理接口为 `/api/admin/listings`,前端页面为 `/admin/listings`
- 后台可查看全量商品、号主、账号 ID、区服、平台、段位、哈夫币、时租、押金、商品状态和审核状态。
- 当前支持按号主 ID、商品状态、审核状态和查询条数筛选。
- 商品详情页为 `/admin/listings/:id`,支持查看完整账号、价格、租期和审核信息。
- 后台可对非租赁中的商品执行强制下架和标记异常。
- 强制下架会将商品和账号状态改为 `offline`,标记异常会将商品和账号状态改为 `abnormal`
- 强制下架和标记异常必须填写原因,写入 `audit_logs`,并通知号主。
- 租赁中的商品暂不允许直接下架或标记异常,需要先处理关联订单。
## 开发态订单客服操作
- 订单详情页 `/admin/orders/:id` 支持客服关闭订单和标记异常。
- 已完成、已取消、已关闭订单为终态,不允许再次客服关闭或标记异常。
- 客服关闭订单会将订单状态改为 `closed`,交接状态改为 `admin_closed`,结算状态改为 `closed`
- 客服关闭订单会释放开发态模拟冻结金额,并将关联商品和账号下架为 `offline`
- 标记异常会将订单状态改为 `abnormal`,交接状态改为 `admin_abnormal`,关联商品和账号改为 `abnormal`
- 客服关闭和标记异常必须填写原因,写入 `audit_logs`,并通知租客和号主。
- 当前不处理真实退款、扣款或赔付,真实支付接入后需要补充资金裁决逻辑。
## 开发态审计日志
- 审计日志接口为 `/api/admin/audit-logs`,前端页面为 `/admin/audit-logs`
- 当前可查看管理员、操作动作、业务类型、业务 ID、IP、User-Agent、操作明细和创建时间。
- 当前已写入审计日志的动作包括系统配置创建/更新、用户冻结和用户解冻。
- 审计日志只做追加和只读查询,不提供后台删除或修改入口。