Skip to content

平台管理与系统管理员

平台管理是云端商业运营的控制面:独立于用户账号体系的 admin 账号、覆盖用户/空间/计费/模型目录/系统配置的管理后台,以及支撑按量计费的账单与支付链路。本页按模块讲清管理后台能做什么、门控口径在哪里、计费的钱怎么算。

概念

概念说明
admin 账号独立账号体系(AdminUserapp/models/admin.py),与用户表分离,token 以 is_admin=True 解码
平台厂商接口ModelProviderAccount:平台侧持有的上游厂商 key 与余额,是「系统模型按量」通道的出资方
feature_flags系统级功能开关,含会员总开关 membership_enabled
plans会员定价方案(app/models/billing.pyPlan),价格与 features 门控清单
模型目录全站可选模型清单:BYOK 16 款(0 价)+ 平台系统行 8 款 + opencode 聚合 41 款

管理后台模块

admin 后台路由统一挂在 /api/admin/ 下(app/api/admin/endpoints/),独立登录入口 /api/admin/auth/login,管理员操作落 AdminAuditLog 审计表:

模块端点文件职责
仪表盘dashboard.py经营总览
用户管理users.py列表/详情(含订阅与余额)、状态(active/inactive/banned)、手动调 tier、删除
空间管理tenants.py租户 CRUD、席位与成员数
计费管理billing.py计费统计、订阅列表、优惠码(coupon)全生命周期
模型目录llm_models.py模型行 CRUD、平台厂商接口管理
系统配置system.py系统健康(DB/磁盘/内存/Ollama)、系统配置与 feature_flags、支付配置(加密存储、掩码回显)
监控指标monitoring.pymetrics.pyPrometheus 抓取端点、业务指标
其他content.pylogs.pyreports.pygdpr.pysupport.py内容管理、日志、运营日报查阅、GDPR 合规、工单

平台厂商接口与余额巡检

平台按量通道(sys- 前缀模型行)走 ModelProviderAccount 里登记的平台 key 扣费。管理后台可见可管的厂商接口共 4 家:opencode / deepseek / dashscope / glm

  • 账户字段含 balance_cny/balance_usd(余额登记)、failure_count/last_failure_at(健康度)、is_active/priority(调度口径)。
  • 连通性测试:POST /api/admin/.../provider-accounts/{id}/test 走生产分发路径实测,不是裸 ping。
  • 安全:base_url 更新过 SSRF 校验——必须是 http/https、禁 localhost/内网 IP/保留地址。
  • 运维口径:构建类任务先查上游余额。平台账户余额可以为负(DeepSeek 账户曾到 -0.17 并置 is_available=false),图谱构建/自动进化直连欠费账户会整链失败——「模型不通」先巡检余额与失败计数,再怀疑代码。

会员与定价门控

  • 会员总开关:feature_flags.membership_enabled(默认开=缺键即开),判定入口 billing_service.check_feature_access;关闸期间全员放行。桌面侧 desktop_gate.membership_enforced 同口径,断网沿用缓存、NULL fail-closed。
  • plans:Plan 行以 slug 为身份(显示名绝不当身份字段回写),价格以分存储(price_monthly/price_yearly),features/limits 为 JSON 清单;续费/权限/tier 判定全走 plan features,不写死 slug 判断。
  • 现行方案:Pro 三档同权(原价 / 6 折 / 3 折,功能完全一致),slug=storage 档独有每月返 ¥3 按量余额;折扣档不返 ¥3、不能用优惠码。
  • 改 plan 结构/价格/features 必须同步测试夹具:测试库的 plans 是 conftest fixture 播种的(血泪#66)。

模型目录管理

  • 目录行即账单数据:BYOK 行为 0 价非系统行(用户级 key 自付),平台行为 sys- 前缀有价 is_system 行。在架:BYOK 16 款 + 平台 8 款 + opencode 聚合 41 款。
  • 目录行不是通道分类器:本地模型为记用量也有目录行,通道判定必须走 app/services/llm_service/channel_policy.py(local 优先于目录查表),新增模型/通道代码只问「过没过 channel_policy」。
  • 管理端 CRUD 见 llm_models.py(模型行)与厂商接口端点;前端选型回填唯一入口是 consoleModel.ts

支付计费链路

账单服务 app/services/llm_billing_service.py 与支付服务 app/services/payment_service.py 的关键机制:

机制实现说明
乐观锁重试_atomic_update_balance / ConcurrentModificationError余额更新按版本号比较-交换;fail_with_retry 等封装冲突最多重试 3 次
冻结-结算-释放freeze / complete / fail调用前冻结预估价、成功结算实价、失败释放冻结;冻结超时由 sweep_stale_pending_records 清扫
验签 fail-closed微信 verify_webhookpayment_providers/wechat.pyenabled 但凭证缺失时拒绝放行;验签异常一律返回 None,不放过伪造回调
回调幂等_apply_payment_result终态保护(refunded/failed 不可再迁移)、已处理通知不重复充值/续订
微信退款out_refund_no 逐笔唯一部分退款可多次发起,幂号取「订单号+时间戳+随机段」
返 ¥3grant_pro_monthly_bonus幂等:reference_id = pro_bonus:{subscription_id}:{month},同月只发一次,按 features 门控

下一步

基于 AGPL-3.0 协议发布。