Files
server-core/alembic/versions/0063_desktop_versions.py
T
Pine 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
2026-09-06 17:59:56 +08:00

45 lines
1.7 KiB
Python

"""桌面端版本管理表(PineAgents 自动更新:版本 + 平台产物 + 发布控制)。
Revision ID: 0063_desktop_versions
Revises: 0062_service_ecommerce
Create Date: 2026-09-06
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
revision = "0063_desktop_versions"
down_revision = "0062_service_ecommerce"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"desktop_versions",
sa.Column("id", sa.String(length=255), primary_key=True),
sa.Column("version", sa.String(length=64), nullable=False),
sa.Column("channel", sa.String(length=32), nullable=False, server_default="stable"),
sa.Column("notes", sa.Text(), nullable=False),
sa.Column("status", sa.String(length=32), nullable=False, server_default="draft"),
sa.Column("rollout", sa.Integer(), nullable=False, server_default="0"),
sa.Column("min_version", sa.String(length=64), nullable=False, server_default=""),
sa.Column("artifacts_json", sa.Text(), nullable=False),
sa.Column("pub_date", sa.String(length=64), nullable=False, server_default=""),
sa.Column("created_by", sa.String(length=64), nullable=False, server_default=""),
sa.Column("created_at", sa.String(length=64), nullable=False, server_default=""),
sa.Column("updated_at", sa.String(length=64), nullable=False, server_default=""),
)
op.create_index(
"ix_desktop_versions_version",
"desktop_versions",
["version"],
unique=True,
)
def downgrade() -> None:
op.drop_index("ix_desktop_versions_version", table_name="desktop_versions")
op.drop_table("desktop_versions")