- Changed bare except clauses to specific exception types in web3_utils.py, testing.py, messages.py, and message_storage.py - Replaced print() calls with logger in testing.py, agent_discovery.py, compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, sync_cli.py, and client.py - Added logger initialization using get_logger(__name__) in compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, and client.py - Removed hardcoded secret
AITBC Trading Service
Manages trading operations.
Installation
cd /opt/aitbc
poetry install --with trading-service
Database Setup
Create a separate database for the trading service:
sudo -u postgres psql -f apps/trading-service/scripts/setup-database.sql
Or manually:
CREATE DATABASE aitbc_trading;
CREATE USER aitbc_trading WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE aitbc_trading TO aitbc_trading;
Running
# Development
python -m trading_service.main
# Production (systemd)
sudo systemctl start trading-service
sudo systemctl enable trading-service
Endpoints
GET /health- Health checkGET /trading/status- Get trading statusGET /v1/trading/requests- Get trade requestsGET /v1/trading/requests/{request_id}- Get specific requestPOST /v1/trading/requests- Create new requestGET /v1/trading/matches- Get trade matchesPOST /v1/trading/matches- Create new matchGET /v1/trading/agreements- Get trade agreementsPOST /v1/trading/agreements- Create new agreementGET /v1/trading/analytics- Get trading analytics
Testing
Prerequisites
- PostgreSQL running and aitbc_trading database created
- Poetry dependencies installed
Database Setup
sudo -u postgres psql -f scripts/setup-database.sql
Start Service (Development)
python -m trading_service.main
Health Check
curl http://localhost:8104/health
Expected response:
{"status": "healthy", "service": "trading-service"}
Trading Status
curl http://localhost:8104/trading/status
Expected response:
{
"status": "operational",
"service": "trading-service",
"message": "Trading service is running"
}
Get Trade Requests
curl http://localhost:8104/v1/trading/requests
Expected response:
[]
Create Trade Request
curl -X POST http://localhost:8104/v1/trading/requests \
-H "Content-Type: application/json" \
-d '{
"buyer_agent_id": "test_buyer",
"trade_type": "compute_resources",
"title": "Test Trade Request",
"description": "Test description"
}'
Test Through Gateway
-
Start the API gateway:
python -m api_gateway.main -
Test trading endpoints through the gateway:
curl http://localhost:8080/trading/health curl http://localhost:8080/trading/v1/trading/requests
For comprehensive testing procedures, see MICROSERVICES_TESTING_GUIDE.md.
Service Configuration
- Port: 8104
- Database: aitbc_trading
- Gateway route: /trading/*
Migration Status
Completed:
- Extracted trading domain models (TradeRequest, TradeMatch, TradeNegotiation, TradeAgreement, TradeSettlement, TradeFeedback, TradingAnalytics)
- Extracted trading services (TradingService with CRUD operations)
- Set up database session management
- Extracted trading router endpoints
- Created systemd service configuration
- Created database setup script
Remaining:
- Remove trading routers from coordinator-api
- Remove trading services from coordinator-api
- Remove trading domain models from coordinator-api
- Run database migration script to create aitbc_trading database
- Install and enable systemd service
- End-to-end testing with gateway
Note: The trading service is ~60K lines, so full removal from coordinator-api requires careful coordination to avoid breaking existing functionality. The foundation is in place for gradual migration.