Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ logs/
.DS_Store
.codebuddy
.vscode
uv.lock
node_modules
runtime_config.json
.idea
Expand Down Expand Up @@ -51,4 +52,3 @@ src/stock_datasource/modules/auth/auth.db

# Frontend build info (regenerated)
frontend/tsconfig.tsbuildinfo
.deploy-backup/
2 changes: 2 additions & 0 deletions data/email.txt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
[email protected]
[email protected]
[email protected]
6 changes: 4 additions & 2 deletions docker-compose.weknora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ services:
# Redis
REDIS_HOST: weknora-redis
REDIS_PORT: 6379
REDIS_ADDR: weknora-redis:6379
REDIS_PASSWORD: ${WEKNORA_REDIS_PASSWORD:-}
STREAM_MANAGER_TYPE: redis
# Vector store
Expand Down Expand Up @@ -72,8 +73,9 @@ services:
ports:
- "${WEKNORA_FRONTEND_PORT:-18881}:80"
environment:
BACKEND_HOST: weknora-app
BACKEND_PORT: 8080
APP_HOST: weknora-app
APP_PORT: 8080
APP_SCHEME: http
networks:
- weknora-network
depends_on:
Expand Down
35 changes: 31 additions & 4 deletions frontend/src/api/portfolio.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import request from '@/utils/request'
import type {
Position,
PortfolioSummary,
import type {
Position,
PortfolioSummary,
CreatePositionRequest,
UpdatePositionRequest,
AnalysisReport,
AlertCreateRequest
AlertCreateRequest,
Transaction,
CreateTransactionRequest,
TransactionSignal,
KlinePattern
} from '@/types/portfolio'

export const portfolioApi = {
Expand Down Expand Up @@ -68,5 +72,28 @@ export const portfolioApi = {
// Batch operations
batchUpdatePrices() {
return request.post('/api/portfolio/batch/update-prices')
},

// Transactions
buyTransaction(data: CreateTransactionRequest) {
return request.post<Transaction>('/api/portfolio/transactions/buy', data)
},

sellTransaction(data: CreateTransactionRequest) {
return request.post<Transaction>('/api/portfolio/transactions/sell', data)
},

getTransactions(params?: { ts_code?: string; start_date?: string; end_date?: string; profile_id?: string }) {
return request.get<Transaction[]>('/api/portfolio/transactions', { params })
},

// Transaction signals for K-line markers
getTransactionSignals(params: { ts_code: string; start_date?: string; end_date?: string }) {
return request.get<TransactionSignal[]>('/api/portfolio/transactions/signals', { params })
},

// K-line candlestick patterns
getKlinePatterns(tsCode: string, days: number = 60) {
return request.get<KlinePattern[]>(`/api/portfolio/kline-patterns/${tsCode}`, { params: { days } })
}
}
Loading
Loading