- Add analytics cache key to TBANK_CACHE_KEYS - Add tbankAnalyticsTtl to cache configuration - Register and export BrokerAnalyticsService in TBankModule - Add BrokerAnalyticsEnvelopeDto to broker envelope DTOs - Add GET /accounts/:accountId/analytics endpoint to TBankController - Fix TBankController spec to pass new constructor dependency
47 lines
2.3 KiB
TypeScript
47 lines
2.3 KiB
TypeScript
import { registerAs } from '@nestjs/config';
|
|
|
|
export default registerAs('app', () => ({
|
|
port: parseInt(process.env.PORT || '3000', 10),
|
|
database: {
|
|
url: process.env.DATABASE_URL || 'file:./dev.db',
|
|
},
|
|
moex: {
|
|
baseUrl: process.env.MOEX_BASE_URL || 'https://iss.moex.com/iss',
|
|
rateLimit: parseInt(process.env.MOEX_RATE_LIMIT || '10', 10),
|
|
circuitBreakerThreshold: parseInt(process.env.MOEX_CIRCUIT_BREAKER_THRESHOLD || '5', 10),
|
|
circuitBreakerResetSeconds: parseInt(
|
|
process.env.MOEX_CIRCUIT_BREAKER_RESET_SECONDS || '30',
|
|
10,
|
|
),
|
|
},
|
|
tbank: {
|
|
token: process.env.T_BANK_TOKEN || '',
|
|
baseUrl: process.env.T_BANK_BASE_URL || 'invest-public-api.tbank.ru:443',
|
|
caCertPath: process.env.T_BANK_CA_CERT_PATH || '',
|
|
appName: process.env.T_BANK_APP_NAME || 'ksv741.moex-vibe',
|
|
rateLimitPerSecond: parseInt(process.env.T_BANK_RATE_LIMIT_PER_SECOND || '5', 10),
|
|
instrumentsRateLimitPerSecond: parseInt(process.env.T_BANK_INSTRUMENTS_RATE_LIMIT || '20', 10),
|
|
requestTimeoutMs: parseInt(process.env.T_BANK_REQUEST_TIMEOUT_MS || '10000', 10),
|
|
},
|
|
cache: {
|
|
marketDataTtl: parseInt(process.env.CACHE_MARKET_DATA_TTL || '900', 10),
|
|
historyTtl: parseInt(process.env.CACHE_HISTORY_TTL || '3600', 10),
|
|
candlesTtl: parseInt(process.env.CACHE_CANDLES_TTL || '3600', 10),
|
|
securityTtl: parseInt(process.env.CACHE_SECURITY_TTL || '86400', 10),
|
|
searchTtl: parseInt(process.env.CACHE_SEARCH_TTL || '3600', 10),
|
|
dividendsTtl: parseInt(process.env.CACHE_DIVIDENDS_TTL || '86400', 10),
|
|
tbankAccountsTtl: parseInt(process.env.CACHE_TBANK_ACCOUNTS_TTL || '3600', 10),
|
|
tbankPortfolioTtl: parseInt(process.env.CACHE_TBANK_PORTFOLIO_TTL || '60', 10),
|
|
tbankOperationsTtl: parseInt(process.env.CACHE_TBANK_OPERATIONS_TTL || '300', 10),
|
|
tbankPositionsTtl: parseInt(process.env.CACHE_TBANK_POSITIONS_TTL || '60', 10),
|
|
tbankInstrumentTtl: parseInt(process.env.CACHE_TBANK_INSTRUMENT_TTL || '86400', 10),
|
|
tbankAnalyticsTtl: parseInt(process.env.CACHE_TBANK_ANALYTICS_TTL || '300', 10),
|
|
},
|
|
auth: {
|
|
jwtSecret: process.env.JWT_SECRET || 'dev-jwt-secret-change-in-production',
|
|
jwtRefreshSecret: process.env.JWT_REFRESH_SECRET || 'dev-refresh-secret-change-in-production',
|
|
jwtAccessExpires: process.env.JWT_ACCESS_EXPIRES || '15m',
|
|
jwtRefreshExpires: process.env.JWT_REFRESH_EXPIRES || '7d',
|
|
},
|
|
}));
|