From 0dabdb29acd92e16ad97b22fce747ea9e936d8ca Mon Sep 17 00:00:00 2001 From: dela Date: Sun, 24 May 2026 20:32:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(context):=20=E6=8E=A5=E5=85=A5=20Indicator?= =?UTF-8?q?Usecase=EF=BC=8C=E5=A1=AB=E5=AE=9E=20Technical=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MarketContextUsecase 增 IndicatorComputer 字段;构造器增参 - 用既有常量 derivativePeriod ("1h") 作为指标计算的 primary interval —— 与 LSR 采样时基对齐;未来切换 primary 改一个常量即可 - 替换原 hard-coded 空 Technical(market_context.go l.186-189) - app.go 注入 usecase.NewIndicatorUsecase() 端到端 smoke 留给 commit 7 在所有测试就位后做(make docker-up + migrate-up + run)。 --- internal/app/app.go | 1 + internal/usecase/market_context.go | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 5d801bb..8e7be73 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -55,6 +55,7 @@ func Run(cfg *config.Config, log *slog.Logger) error { fundingRepo, oiRepo, lsRepo, + usecase.NewIndicatorUsecase(), log, ) diff --git a/internal/usecase/market_context.go b/internal/usecase/market_context.go index ad1bda2..72604c6 100644 --- a/internal/usecase/market_context.go +++ b/internal/usecase/market_context.go @@ -39,6 +39,8 @@ type MarketContextUsecase struct { oiRepo OpenInterestRepository lsRepo LongShortRatioRepository + indicator IndicatorComputer + log *slog.Logger } @@ -49,6 +51,7 @@ func NewMarketContextUsecase( fundingRepo FundingRepository, oiRepo OpenInterestRepository, lsRepo LongShortRatioRepository, + indicator IndicatorComputer, log *slog.Logger, ) *MarketContextUsecase { return &MarketContextUsecase{ @@ -58,6 +61,7 @@ func NewMarketContextUsecase( fundingRepo: fundingRepo, oiRepo: oiRepo, lsRepo: lsRepo, + indicator: indicator, log: log, } } @@ -183,10 +187,7 @@ func (u *MarketContextUsecase) Build(ctx context.Context, symbol string) (*entit }, TakerBuySellVolume: nil, }, - Technical: entity.TechnicalStructure{ - Support: []entity.TechnicalLevel{}, - Resistance: []entity.TechnicalLevel{}, - }, + Technical: u.indicator.Compute(klines[derivativePeriod], globalLS), DataQuality: entity.DataQuality{ Source: "binance", Warnings: warnings,