feat(V1-API): implement TREX-Basic consumer API contract with encryption and persistence

- Add V1 API endpoints: assets, ledger, user-info
- Implement Fernet-based credential payload encryption (req-010)
- Extend health response schema with runtime info (req-004)
- Add service token runtime ID issuance (req-005)
- Implement database schema migration for V1 API (req-009)
- Add comprehensive test coverage for V1 endpoints
- Update SRS with 10 new requirements (REQ-004 through REQ-011)
- Create batch planning, design, and verification for BAT-001
- Integrate review-discovery StagePilot skill
- Update documentation indices and baseline specs
This commit is contained in:
2026-05-02 09:06:15 +00:00
parent 24096a1e58
commit ce63c75c9c
37 changed files with 2851 additions and 21 deletions
+28
View File
@@ -41,6 +41,7 @@ class AuthToken:
last_used_at: datetime | None = None
revoked_at: datetime | None = None
created_at: datetime | None = None
runtime_id: str | None = None
@dataclass
@@ -49,6 +50,7 @@ class TokenPrincipal:
user_id: str
permission: str
token_type: str
runtime_id: str | None = None
@dataclass
@@ -58,6 +60,7 @@ class Portfolio:
status: str
name: str
symbol: str
market: str | None = None
tags: list[str] | None = None
owner_user_id: str | None = None
cash_balance: float = 0.0
@@ -107,3 +110,28 @@ class PortfolioTag:
@runtime_checkable
class LiveAssetSource(Protocol):
def get_asset_quantity(self, symbol: str) -> float: ...
@dataclass
class BrokerCredential:
user_id: str
broker: str
account_ref: str
encrypted_payload: str
credential_version: int = 1
last_rotated_at: datetime | None = None
@dataclass
class LedgerTrade:
ledger_entry_id: int
asset_id: str
order_id: str
execution_id: str
side: str
quantity: float
price: float
fee_amount: float
tax_amount: float
executed_at: datetime
recorded_at: datetime | None = None