gcloud-lab/apps/base/customer1/trade-dashboard/app/models.py
sirius0xdev 7df60cbeb9 feat: add trade dashboard service (FastAPI + Tailscale)
- FastAPI app with async SQLAlchemy + Alembic migrations
- API: positions CRUD, PnL summary, trade history, webhook endpoint
- Dark-themed SPA frontend (vanilla HTML/JS)
- K8s: deployment, service, configmap, TsProxy for Tailscale access
- Backed by hermes-pgdb / trading_data database
- Wired into Flux staging pipeline
2026-05-02 21:47:27 +00:00

21 lines
941 B
Python

from sqlalchemy import Column, String, Numeric, Enum, DateTime, JSON, func
from sqlalchemy.dialects.postgresql import UUID
import uuid
from database import metadata
positions = Table(
"positions",
metadata,
Column("id", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4),
Column("symbol", String(32), nullable=False, index=True),
Column("direction", Enum("long", "short", name="position_direction"), nullable=False),
Column("entry_price", Numeric(precision=16, scale=8), nullable=False),
Column("exit_price", Numeric(precision=16, scale=8)),
Column("quantity", Numeric(precision=16, scale=8), nullable=False),
Column("exchange", String(32), nullable=False, index=True),
Column("opened_at", DateTime(timezone=True), server_default=func.now(), nullable=False),
Column("closed_at", DateTime(timezone=True)),
Column("pnl", Numeric(precision=16, scale=2)),
Column("metadata", JSON),
)