Files
hfb_sys/docs/business-rules.md
T
2026-05-22 17:48:46 +08:00

138 lines
7.9 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`;扣押金、释放押金、赔付号主会将订单置为 `completed`
- 仲裁完成后账号和发布恢复为 `published`
- 当前仲裁不做真实扣款、退款、赔付落账,后续接真实支付后再补资金流水和审计日志。
## 开发态系统配置
- 系统配置接口为 `/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/audit-logs`,前端页面为 `/admin/audit-logs`
- 当前可查看管理员、操作动作、业务类型、业务 ID、IP、User-Agent、操作明细和创建时间。
- 当前已写入审计日志的动作包括系统配置创建/更新、用户冻结和用户解冻。
- 审计日志只做追加和只读查询,不提供后台删除或修改入口。