Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/prediction update #86

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
  •  
  •  
  •  
7 changes: 5 additions & 2 deletions app/controller/analysis.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,12 @@ func (a *Analysis) PlaceUnHit(ctx context.Context, input *AnalysisInput) {
if err := a.analysisUseCase.PlaceUnHit(ctx, &analysis_usecase.AnalysisInput{
Markers: input.Master.AnalysisMarkers,
Races: input.Master.Races,
Jockeys: input.Master.Jockeys,
Odds: &analysis_usecase.AnalysisOddsInput{
Win: input.Master.WinOdds,
Place: input.Master.PlaceOdds,
Win: input.Master.WinOdds,
Place: input.Master.PlaceOdds,
Trio: input.Master.TrioOdds,
Quinella: input.Master.QuinellaOdds,
},
}); err != nil {
a.logger.Errorf("analysis place un hit error: %v", err)
Expand Down
7 changes: 5 additions & 2 deletions app/controller/master.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import (
"github.com/mapserver2007/ipat-aggregator/app/domain/entity/data_cache_entity"
"github.com/mapserver2007/ipat-aggregator/app/domain/entity/marker_csv_entity"
"github.com/mapserver2007/ipat-aggregator/app/domain/entity/ticket_csv_entity"
"github.com/mapserver2007/ipat-aggregator/app/domain/types"
"github.com/mapserver2007/ipat-aggregator/app/usecase/master_usecase"
)

type MasterInput struct {
StartDate string
EndDate string
StartDate types.RaceDate
EndDate types.RaceDate
}

type MasterOutput struct {
Expand All @@ -21,6 +22,7 @@ type MasterOutput struct {
WinOdds []*data_cache_entity.Odds
PlaceOdds []*data_cache_entity.Odds
TrioOdds []*data_cache_entity.Odds
QuinellaOdds []*data_cache_entity.Odds
AnalysisMarkers []*marker_csv_entity.AnalysisMarker
PredictionMarkers []*marker_csv_entity.PredictionMarker
}
Expand Down Expand Up @@ -59,6 +61,7 @@ func (m *Master) Execute(
WinOdds: output.WinOdds,
PlaceOdds: output.PlaceOdds,
TrioOdds: output.TrioOdds,
QuinellaOdds: output.QuinellaOdds,
AnalysisMarkers: output.AnalysisMarkers,
PredictionMarkers: output.PredictionMarkers,
}, nil
Expand Down
6 changes: 3 additions & 3 deletions app/controller/prediction.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ func (p *Prediction) Prediction(ctx context.Context, input *PredictionInput) {
const predictionParallel = 2
errors := make(chan error, predictionParallel)

for i := 0; i < predictionParallel; i++ {
for i := range make([]struct{}, predictionParallel) {
wg.Add(1)
go func() {
go func(i int) {
defer wg.Done()
switch i {
case 0:
Expand All @@ -58,7 +58,7 @@ func (p *Prediction) Prediction(ctx context.Context, input *PredictionInput) {
}
p.logger.Info("fetching prediction checklist end")
}
}()
}(i)
}

wg.Wait()
Expand Down
63 changes: 63 additions & 0 deletions app/domain/entity/analysis_entity/odds.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package analysis_entity

import (
"github.com/shopspring/decimal"

"github.com/mapserver2007/ipat-aggregator/app/domain/types"
)

type Odds struct {
raceId types.RaceId
raceDate types.RaceDate
ticketType types.TicketType
number types.BetNumber
popularNumber int
odds decimal.Decimal
}

func NewOdds(
raceId types.RaceId,
raceDate types.RaceDate,
ticketType types.TicketType,
number types.BetNumber,
popularNumber int,
odds []string,
) (*Odds, error) {
oddsDecimal, err := decimal.NewFromString(odds[0])
if err != nil {
return nil, err
}

return &Odds{
raceId: raceId,
raceDate: raceDate,
ticketType: ticketType,
number: number,
popularNumber: popularNumber,
odds: oddsDecimal,
}, nil
}

func (o *Odds) RaceId() types.RaceId {
return o.raceId
}

func (o *Odds) RaceDate() types.RaceDate {
return o.raceDate
}

func (o *Odds) TicketType() types.TicketType {
return o.ticketType
}

func (o *Odds) Number() types.BetNumber {
return o.number
}

func (o *Odds) PopularNumber() int {
return o.popularNumber
}

func (o *Odds) Odds() decimal.Decimal {
return o.odds
}
48 changes: 48 additions & 0 deletions app/domain/entity/analysis_entity/odds_fault.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package analysis_entity

import (
"github.com/mapserver2007/ipat-aggregator/app/domain/types"
"github.com/shopspring/decimal"
)

type OddsFault struct {
raceId types.RaceId
oddsFaultNo int
oddsFault decimal.Decimal
}

func NewOddsFault(
raceId types.RaceId,
odds1 string,
odds2 string,
oddsFaultNo int,
) (*OddsFault, error) {
odds1Decimal, err := decimal.NewFromString(odds1)
if err != nil {
return nil, err
}
odds2Decimal, err := decimal.NewFromString(odds2)
if err != nil {
return nil, err
}

oddsFault := odds2Decimal.Sub(odds1Decimal)

return &OddsFault{
raceId: raceId,
oddsFaultNo: oddsFaultNo,
oddsFault: oddsFault,
}, nil
}

func (o *OddsFault) RaceId() types.RaceId {
return o.raceId
}

func (o *OddsFault) OddsFaultNo() int {
return o.oddsFaultNo
}

func (o *OddsFault) OddsFault() decimal.Decimal {
return o.oddsFault
}
56 changes: 42 additions & 14 deletions app/domain/entity/analysis_entity/race_result.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@ import (
)

type RaceResult struct {
orderNo int
horseId types.HorseId
horseName string
horseNumber types.HorseNumber
jockeyId types.JockeyId
odds decimal.Decimal
popularNumber int
orderNo int
horseId types.HorseId
horseName string
horseNumber types.HorseNumber
jockeyId types.JockeyId
jockeyName string
odds decimal.Decimal
popularNumber int
jockeyWeight string
horseWeight int
horseWeightAdd int
}

func NewRaceResult(
Expand All @@ -21,17 +25,25 @@ func NewRaceResult(
horseName string,
horseNumber types.HorseNumber,
jockeyId types.JockeyId,
jockeyName string,
odds decimal.Decimal,
popularNumber int,
jockeyWeight string,
horseWeight int,
horseWeightAdd int,
) *RaceResult {
return &RaceResult{
orderNo: orderNo,
horseId: horseId,
horseName: horseName,
horseNumber: horseNumber,
jockeyId: jockeyId,
odds: odds,
popularNumber: popularNumber,
orderNo: orderNo,
horseId: horseId,
horseName: horseName,
horseNumber: horseNumber,
jockeyId: jockeyId,
jockeyName: jockeyName,
odds: odds,
popularNumber: popularNumber,
jockeyWeight: jockeyWeight,
horseWeight: horseWeight,
horseWeightAdd: horseWeightAdd,
}
}

Expand All @@ -55,10 +67,26 @@ func (r *RaceResult) JockeyId() types.JockeyId {
return r.jockeyId
}

func (r *RaceResult) JockeyName() string {
return r.jockeyName
}

func (r *RaceResult) Odds() decimal.Decimal {
return r.odds
}

func (r *RaceResult) PopularNumber() int {
return r.popularNumber
}

func (r *RaceResult) JockeyWeight() string {
return r.jockeyWeight
}

func (r *RaceResult) HorseWeight() int {
return r.horseWeight
}

func (r *RaceResult) HorseWeightAdd() int {
return r.horseWeightAdd
}
86 changes: 50 additions & 36 deletions app/domain/entity/data_cache_entity/race.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,26 @@ import (
)

type Race struct {
raceId types.RaceId
raceDate types.RaceDate
raceNumber int
raceCourseId types.RaceCourse
raceName string
organizer types.Organizer
url string
time string
startTime string
entries int
distance int
class types.GradeClass
courseCategory types.CourseCategory
trackCondition types.TrackCondition
raceSexCondition types.RaceSexCondition
raceWeightCondition types.RaceWeightCondition
raceResults []*RaceResult
payoutResults []*PayoutResult
raceId types.RaceId
raceDate types.RaceDate
raceNumber int
raceCourseId types.RaceCourse
raceName string
organizer types.Organizer
url string
time string
startTime string
entries int
distance int
class types.GradeClass
courseCategory types.CourseCategory
trackCondition types.TrackCondition
raceSexCondition types.RaceSexCondition
raceWeightCondition types.RaceWeightCondition
raceCourseCornerIndex types.RaceCourseCornerIndex
raceAgeCondition types.RaceAgeCondition
raceResults []*RaceResult
payoutResults []*PayoutResult
}

func NewRace(
Expand All @@ -42,28 +44,32 @@ func NewRace(
trackCondition int,
raceSexCondition int,
raceWeightCondition int,
raceCourseCornerIndex int,
raceAgeCondition int,
raceResults []*RaceResult,
payoutResults []*PayoutResult,
) *Race {
return &Race{
raceId: types.RaceId(raceId),
raceDate: types.RaceDate(raceDate),
raceNumber: raceNumber,
raceCourseId: types.RaceCourse(raceCourseId),
raceName: raceName,
organizer: types.NewOrganizer(organizer),
url: url,
time: time,
startTime: startTime,
entries: entries,
distance: distance,
class: types.GradeClass(class),
courseCategory: types.CourseCategory(courseCategory),
trackCondition: types.TrackCondition(trackCondition),
raceSexCondition: types.RaceSexCondition(raceSexCondition),
raceWeightCondition: types.RaceWeightCondition(raceWeightCondition),
raceResults: raceResults,
payoutResults: payoutResults,
raceId: types.RaceId(raceId),
raceDate: types.RaceDate(raceDate),
raceNumber: raceNumber,
raceCourseId: types.RaceCourse(raceCourseId),
raceName: raceName,
organizer: types.NewOrganizer(organizer),
url: url,
time: time,
startTime: startTime,
entries: entries,
distance: distance,
class: types.GradeClass(class),
courseCategory: types.CourseCategory(courseCategory),
trackCondition: types.TrackCondition(trackCondition),
raceSexCondition: types.RaceSexCondition(raceSexCondition),
raceWeightCondition: types.RaceWeightCondition(raceWeightCondition),
raceCourseCornerIndex: types.RaceCourseCornerIndex(raceCourseCornerIndex),
raceAgeCondition: types.RaceAgeCondition(raceAgeCondition),
raceResults: raceResults,
payoutResults: payoutResults,
}
}

Expand Down Expand Up @@ -131,6 +137,14 @@ func (r *Race) RaceWeightCondition() types.RaceWeightCondition {
return r.raceWeightCondition
}

func (r *Race) RaceCourseCornerIndex() types.RaceCourseCornerIndex {
return r.raceCourseCornerIndex
}

func (r *Race) RaceAgeCondition() types.RaceAgeCondition {
return r.raceAgeCondition
}

func (r *Race) RaceResults() []*RaceResult {
return r.raceResults
}
Expand Down
Loading