Files
AlphaPulse/backend/alembic/versions/20261013_c7e1beb72c75_symbol_precision.py
eezd aabc81ba5b Initial AlphaPulse implementation: news crawler and Binance klines
- Backend (FastAPI, SQLAlchemy 2, Alembic): single-admin cookie auth,
  news/crawler/market APIs with SSE and WebSocket streaming
- Crawler (Scrapy + Scrapy-Redis): wscn_news, wscn_live, cls_depth,
  cls_telegraph spiders, idempotent upserts with revisions, raw response
  archiving, per-source subprocess supervision, restart and backoff
- Market worker: full-history Binance spot/USD-M kline backfill,
  realtime WS stream, hourly and on-reconnect catch-up
- Frontend (Vue 3, Element Plus, UnoCSS, KLineChart): news feed,
  crawler console with live logs, Binance-style chart page
- Deploy: docker compose, nginx site, migrate and daily backup scripts
2026-10-13 13:32:55 +08:00

37 lines
1.4 KiB
Python
Raw Permalink 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.
"""symbol precision
Revision ID: c7e1beb72c75
Revises: fb4db40f2e86
Create Date: 2026-10-13 05:00:25.535575
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = 'c7e1beb72c75'
down_revision: Union[str, Sequence[str], None] = 'fb4db40f2e86'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
op.add_column('market_symbols', sa.Column('price_precision', sa.Integer(), nullable=True))
op.add_column('market_symbols', sa.Column('volume_precision', sa.Integer(), nullable=True))
# 默认三个交易对的精度(2026-10-13 币安 exchangeInfo:tickSize 均为 0.01,stepSize 分别为 0.00001/0.0001/0.001)
for symbol, volume_precision in (("BTCUSDT", 5), ("ETHUSDT", 4), ("BNBUSDT", 3)):
op.execute(sa.text("UPDATE market_symbols SET price_precision = 2, volume_precision = :v WHERE market = 'spot' AND symbol = :s")
.bindparams(v=volume_precision, s=symbol))
op.alter_column('market_symbols', 'price_precision', nullable=False)
op.alter_column('market_symbols', 'volume_precision', nullable=False)
def downgrade() -> None:
"""Downgrade schema."""
op.drop_column('market_symbols', 'volume_precision')
op.drop_column('market_symbols', 'price_precision')