4dedb43d7f
数据模型: - 新增 tenant_discounts(运营端载体折扣) - 新增 tenant_user_discounts(载体端账号折扣) - 新增 compute_recharges(算力充值记录) - 新增 compute_balance_allocations(余额分配记录) - 新增 compute_usage_records(算力使用记录) - 扩展 park_tenants(default_company_discount, default_user_discount) - 扩展 park_companies(compute_balance, compute_balance_used) - 扩展 company_members(role, compute_balance, compute_balance_used, left_at, left_reason) 核心服务: - compute_pricing_service.py:四级折扣价格计算、余额扣费、企业余额管理 API接口(/api/compute): - 运营端:载体折扣管理、标准价管理 - 载体端:企业折扣设置、账号折扣设置、默认折扣设置 - 企业端:余额充值、成员余额分配/回收、充值/分配记录 - 个人端:我的余额、使用记录、退出企业 - 内部:价格查询、算力扣费 数据库迁移:0064_compute_discount_balance.py
84 lines
6.3 KiB
Bash
84 lines
6.3 KiB
Bash
# 微信小程序配置(真实微信登录)
|
||
# 复制本文件为 server/.env 并填入真实值;或直接在部署环境设置环境变量。
|
||
# 获取方式:微信公众平台 mp.weixin.qq.com → 开发 → 开发管理 → 开发设置 → AppID / AppSecret
|
||
WX_APPID=你的小程序AppID
|
||
WX_SECRET=你的小程序AppSecret
|
||
|
||
# ── 微信支付 V3(算力充值,app/pay 子应用)────────────────────────────
|
||
# 商户平台 pay.weixin.qq.com 获取;凭据只放部署环境 .env,勿提交
|
||
PINEAGENTS_WECHATPAY_MCHID=
|
||
PINEAGENTS_WECHATPAY_CERT_SERIAL_NO=
|
||
PINEAGENTS_WECHATPAY_APIV3_KEY=
|
||
# 商户 API 证书私钥路径(默认 serverdata/keys/wechatpay/apiclient_key.pem)
|
||
PINEAGENTS_WECHATPAY_PRIVATE_KEY_PATH=
|
||
# 平台公钥(可选,公钥模式时配置);否则平台证书自动更新落盘
|
||
PINEAGENTS_WECHATPAY_PUBLIC_KEY_PATH=
|
||
# 支付回调地址:须为微信可达的公网 HTTPS
|
||
PINEAGENTS_WECHATPAY_NOTIFY_URL=https://opc.pinesound.cn/opc/pay/notify
|
||
# Native 扫码用 appid(公众号/开放平台,须绑定到该商户号);空回退开放平台/小程序 appid
|
||
PINEAGENTS_WECHATPAY_NATIVE_APPID=
|
||
# 小程序 JSAPI 用 appid;空回退 PINEAGENTS_WECHAT_APPID
|
||
PINEAGENTS_WECHATPAY_JSAPI_APPID=
|
||
# 充值套餐兜底 JSON([{id,amount(元),bonus(赠送元),label}]);DB system_configs 的 recharge_packages 优先
|
||
PINEAGENTS_WECHATPAY_PACKAGES=[{"id":"p10","amount":10,"bonus":0,"label":"10 元"},{"id":"p50","amount":50,"bonus":5,"label":"50 元"},{"id":"p100","amount":100,"bonus":15,"label":"100 元"}]
|
||
# 自由金额范围(元)与订单有效期(分钟)
|
||
PINEAGENTS_RECHARGE_MIN_YUAN=1
|
||
PINEAGENTS_RECHARGE_MAX_YUAN=5000
|
||
PINEAGENTS_RECHARGE_EXPIRE_MINUTES=15
|
||
|
||
# ── 微信支付【服务商】分账 / 资金托管配置(OPC 收款认证)─────────────────
|
||
# ⚠️ 与上方直连商户配置并存:收单走直连商户号,分账/进件用服务商商户号;
|
||
# 分账功能以本段为开关(SP_MCHID + 服务商证书/APIv3 + 回调地址齐备才启用 profitsharing_enabled())。
|
||
# ⚠️ 开通前提:平台主体需有营业执照,在微信支付商户平台完成「服务商入驻」+
|
||
# 「服务商分账」产品开通 + 绑定服务商 AppID + 配置分账回调(无需 ICP/EDI)。
|
||
# ⚠️ 关键:服务商商户号通常 ≠ 直连商户号,是两个独立商户号,**必须为服务商单独配置
|
||
# API 证书/序列号/APIv3 密钥**(下方 SP_* 证书项),否则分账/进件签名失败(SIGN_ERROR)。
|
||
#
|
||
# PINEAGENTS_WX_SP_MCHID —— 服务商商户号(10 位数字,sp_mchid,发起分账/进件的请求主体)
|
||
# 在哪里获取:微信支付商户平台 pay.weixin.qq.com → 登录服务商账户 → 「商户信息」→ 服务商商户号
|
||
PINEAGENTS_WX_SP_MCHID=
|
||
# PINEAGENTS_WX_SP_APPID —— 服务商 AppID(PERSONAL_OPENID 个人分账接收方的 openid 归属该 AppID;
|
||
# 分账接口的 appid 参数也用它)
|
||
# 在哪里获取:微信公众平台 mp.weixin.qq.com → 小程序/公众号 → 「开发」→「开发管理」→ AppID;
|
||
# 注意:该 AppID 需在服务商后台「AppID 授权」中完成与服务商商户号的绑定
|
||
PINEAGENTS_WX_SP_APPID=
|
||
# PINEAGENTS_WX_SP_CERT_SERIAL_NO —— 服务商 API 证书序列号(APIv3 请求签名头 Wechatpay-Serial)
|
||
# 在哪里获取:微信支付服务商商户平台 pay.weixin.qq.com/partner → 「账户中心>API安全>API证书」
|
||
# → 查看证书序列号(形如 15DF0640...)
|
||
PINEAGENTS_WX_SP_CERT_SERIAL_NO=
|
||
# PINEAGENTS_WX_SP_PRIVATE_KEY_PATH —— 服务商 API 私钥 apiclient_key.pem 落盘路径
|
||
# 在哪里获取:服务商商户平台「API安全>API证书」→ 下载证书,解压得 apiclient_key.pem,
|
||
# 上传到服务器(如 serverdata/keys/wechat_certs/sp_certs/apiclient_key.pem)
|
||
PINEAGENTS_WX_SP_PRIVATE_KEY_PATH=serverdata/keys/wechat_certs/sp_certs/apiclient_key.pem
|
||
# PINEAGENTS_WX_SP_APIV3_KEY —— 服务商 APIv3 密钥(32 位;回调报文解密用,勿与直连商户相同)
|
||
# 在哪里获取:服务商商户平台「账户中心>API安全>APIv3密钥」→ 设置/重置后保存
|
||
PINEAGENTS_WX_SP_APIV3_KEY=
|
||
# PINEAGENTS_WX_SP_CERT_DIR —— 服务商平台证书/公钥自动更新落盘目录(运行时数据)
|
||
# 在哪里获取:自行指定目录(如 serverdata/keys/wechat_certs/sp_certs),首次请求自动下载
|
||
PINEAGENTS_WX_SP_CERT_DIR=serverdata/keys/wechat_certs/sp_certs
|
||
# PINEAGENTS_WX_SP_PUBLIC_KEY_PATH / _ID —— 服务商公钥模式(可选,二选一)
|
||
# 新服务商商户启用「微信支付公钥」模式时配置 pub_key.pem 与 PUB_KEY_ID(在 API安全>公钥 获取);
|
||
# 未配置则走平台证书自动更新(推荐,无需人工维护)
|
||
PINEAGENTS_WX_SP_PUBLIC_KEY_PATH=
|
||
PINEAGENTS_WX_SP_PUBLIC_KEY_ID=
|
||
# PINEAGENTS_WX_SPLIT_NOTIFY_URL —— 分账结果回调通知地址(必须是微信可达的公网 HTTPS)
|
||
# 在哪里获取:平台自己的回调 URL(本项目为 https://opc.pinesound.cn/opc/pay/profitsharing/notify),
|
||
# 并到微信商户平台 → 服务商分账 → 「回调设置」配置相同的地址,接收分账结果通知
|
||
PINEAGENTS_WX_SPLIT_NOTIFY_URL=https://opc.pinesound.cn/opc/pay/profitsharing/notify
|
||
# PINEAGENTS_WX_SPLIT_COMMISSION_RATE —— 平台佣金比例(分账给服务商商户号的部分,默认 0.05=5%)
|
||
# 在哪里获取:平台自身运营策略,需与 settlement_service 的 COMMISSION_RATE 保持一致
|
||
PINEAGENTS_WX_SPLIT_COMMISSION_RATE=0.05
|
||
|
||
# ---- 数据库(SQLite→MySQL 切换;未配置默认 serverdata/data/app.db)----
|
||
# 示例:mysql+asyncmy://user:pass@192.168.1.3:8091/opc?charset=utf8mb4
|
||
# 首次迁移:uv run python scripts/migrate_sqlite_to_mysql.py(建表+搬数据+行数校验)
|
||
PINEAGENTS_DEMO_DATABASE_URL=
|
||
|
||
# ---- 桌面端版本管理(/desktop-updates/*)----
|
||
# 桌面端更新源对外地址前缀(如 https://opc.pinesound.cn),用于生成 manifest 里的绝对下载 URL;
|
||
# 留空则回退请求 Host。
|
||
PUBLIC_BASE_URL=
|
||
# minisign 签名公钥(与桌面端 tauri.conf.json plugins.updater.pubkey 一致)。
|
||
# 配置后,admin 上传 .sig 时校验签名 key id 是否匹配,防止混入非本机私钥签名的产物。
|
||
DESKTOP_UPDATER_PUBKEY=
|