feat(platform): close AI expense value loop

Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
This commit is contained in:
caoxiaozhu
2026-07-17 14:14:08 +08:00
parent 242d68c36f
commit 787bc3a481
507 changed files with 82072 additions and 6344 deletions

View File

@@ -0,0 +1,178 @@
"""add commercial runtime quota reservations
Revision ID: 20260716_0019
Revises: 20260716_0018
Create Date: 2026-07-16 22:10:00
"""
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
revision: str = "20260716_0019"
down_revision: str | None = "20260716_0018"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def _require_postgresql() -> None:
dialect_name = op.get_bind().dialect.name
if dialect_name != "postgresql":
raise RuntimeError(
"20260716_0019 only supports PostgreSQL; "
f"refusing to mutate {dialect_name} without transactional constraint DDL"
)
def _require_empty_reservations_for_downgrade() -> None:
count = int(
op.get_bind().scalar(
sa.text("SELECT COUNT(*) FROM commercial_runtime_reservations")
)
or 0
)
if count:
raise RuntimeError(
"cannot downgrade commercial runtime reservations: "
f"operational quota holds exist ({count})"
)
def upgrade() -> None:
_require_postgresql()
op.create_table(
"commercial_runtime_reservations",
sa.Column("id", sa.String(length=36), nullable=False),
sa.Column("tenant_id", sa.String(length=64), nullable=False),
sa.Column("subscription_id", sa.String(length=36), nullable=False),
sa.Column("entitlement_id", sa.String(length=36), nullable=False),
sa.Column("run_id", sa.String(length=50), nullable=False),
sa.Column("tool_call_id", sa.String(length=36), nullable=False),
sa.Column("tool_type", sa.String(length=30), nullable=False),
sa.Column("tool_name", sa.String(length=100), nullable=False),
sa.Column("quantity_basis", sa.String(length=20), nullable=False),
sa.Column("reserved_quantity", sa.Numeric(20, 6), nullable=False),
sa.Column("actual_quantity", sa.Numeric(20, 6), nullable=True),
sa.Column("period_key", sa.String(length=32), nullable=False),
sa.Column("status", sa.String(length=32), nullable=False),
sa.Column("request_fingerprint", sa.String(length=64), nullable=False),
sa.Column("meter_config_json", sa.JSON(), nullable=False),
sa.Column("resolution_code", sa.String(length=64), nullable=True),
sa.Column("expires_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("settled_at", sa.DateTime(timezone=True), nullable=True),
sa.Column(
"created_at",
sa.DateTime(timezone=True),
server_default=sa.func.now(),
nullable=False,
),
sa.Column(
"updated_at",
sa.DateTime(timezone=True),
server_default=sa.func.now(),
nullable=False,
),
sa.CheckConstraint(
"status IN ('reserved', 'committed', 'released', 'expired', "
"'reconciliation_required', 'committed_reconciliation_required')",
name="ck_commercial_runtime_reservations_status",
),
sa.CheckConstraint(
"quantity_basis IN ('call', 'input_tokens', 'output_tokens', "
"'total_tokens', 'duration_ms')",
name="ck_commercial_runtime_reservations_basis",
),
sa.CheckConstraint(
"reserved_quantity > 0 AND "
"(actual_quantity IS NULL OR actual_quantity > 0)",
name="ck_commercial_runtime_reservations_quantity",
),
sa.CheckConstraint(
"expires_at > created_at",
name="ck_commercial_runtime_reservations_expiry",
),
sa.CheckConstraint(
"(status = 'reserved' AND actual_quantity IS NULL AND settled_at IS NULL "
"AND resolution_code IS NULL) OR "
"(status = 'committed' AND actual_quantity IS NOT NULL "
"AND actual_quantity <= reserved_quantity AND settled_at IS NOT NULL "
"AND resolution_code IS NULL) OR "
"(status IN ('released', 'expired') AND actual_quantity IS NULL "
"AND settled_at IS NOT NULL AND resolution_code IS NOT NULL) OR "
"(status = 'reconciliation_required' AND settled_at IS NULL "
"AND resolution_code IS NOT NULL) OR "
"(status = 'committed_reconciliation_required' "
"AND actual_quantity IS NOT NULL "
"AND actual_quantity <= reserved_quantity "
"AND settled_at IS NOT NULL AND resolution_code IS NOT NULL)",
name="ck_commercial_runtime_reservations_state",
),
sa.CheckConstraint(
"length(trim(run_id)) > 0 AND length(trim(tool_call_id)) > 0 "
"AND length(trim(tool_type)) > 0 AND length(trim(tool_name)) > 0 "
"AND length(trim(period_key)) > 0 "
"AND length(trim(request_fingerprint)) > 0",
name="ck_commercial_runtime_reservations_keys",
),
sa.ForeignKeyConstraint(
["tenant_id", "subscription_id"],
["tenant_subscriptions.tenant_id", "tenant_subscriptions.id"],
name="fk_commercial_runtime_reservations_tenant_subscription",
ondelete="RESTRICT",
),
sa.ForeignKeyConstraint(
["tenant_id", "subscription_id", "entitlement_id"],
[
"commercial_entitlements.tenant_id",
"commercial_entitlements.subscription_id",
"commercial_entitlements.id",
],
name="fk_commercial_runtime_reservations_tenant_entitlement",
ondelete="RESTRICT",
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint(
"tenant_id",
"id",
name="uq_commercial_runtime_reservations_tenant_id",
),
sa.UniqueConstraint(
"tool_call_id",
name="uq_commercial_runtime_reservations_tool_call",
),
)
op.create_index(
"ix_commercial_runtime_reservations_quota",
"commercial_runtime_reservations",
["tenant_id", "subscription_id", "entitlement_id", "period_key", "status"],
)
op.create_index(
"ix_commercial_runtime_reservations_expiry",
"commercial_runtime_reservations",
["status", "expires_at"],
)
op.create_index(
"ix_commercial_runtime_reservations_run",
"commercial_runtime_reservations",
["tenant_id", "run_id", "created_at"],
)
def downgrade() -> None:
_require_postgresql()
_require_empty_reservations_for_downgrade()
op.drop_index(
"ix_commercial_runtime_reservations_run",
table_name="commercial_runtime_reservations",
)
op.drop_index(
"ix_commercial_runtime_reservations_expiry",
table_name="commercial_runtime_reservations",
)
op.drop_index(
"ix_commercial_runtime_reservations_quota",
table_name="commercial_runtime_reservations",
)
op.drop_table("commercial_runtime_reservations")