Skip to content

Commit 50935cb

Browse files
authored
Merge pull request #451 from chaitin/feat-model-billing
feat: 实现模型收费
2 parents 7bd630d + b6db8f6 commit 50935cb

37 files changed

Lines changed: 8861 additions & 30 deletions

backend/biz/git/usecase/identity.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ func (u *GitIdentityUsecase) gitClienter(identity *db.GitIdentity) domain.GitCli
6969
return gitlab.NewGitlab(identity.BaseURL, identity.AccessToken, u.logger)
7070
case consts.GitPlatformGitea:
7171
return gitea.NewGitea(u.logger, identity.BaseURL)
72+
case consts.GitPlatformGitee:
73+
return gitee.NewGitee(identity.BaseURL, u.logger)
7274
default:
7375
return nil
7476
}

backend/biz/task/repo/task.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,11 +260,29 @@ func (t *TaskRepo) Create(ctx context.Context, u *domain.User, req domain.Create
260260
if err != nil {
261261
return errcode.ErrModelAccessDenied.Wrap(err)
262262
}
263-
m, err := tx.Model.Query().WithUser().Where(model.ID(mid)).First(ctx)
263+
m, err := tx.Model.Query().
264+
WithPricing().
265+
WithUser().
266+
Where(model.ID(mid)).
267+
First(ctx)
264268
if err != nil {
265269
return err
266270
}
267271

272+
var mak *db.ModelApiKey
273+
if p := m.Edges.Pricing; p != nil {
274+
apikey := uuid.NewString()
275+
mak, err = tx.ModelApiKey.Create().
276+
SetAPIKey(apikey).
277+
SetUserID(u.ID).
278+
SetModelID(m.ID).
279+
Save(ctx)
280+
if err != nil {
281+
return err
282+
}
283+
m.Edges.Apikeys = append(m.Edges.Apikeys, mak)
284+
}
285+
268286
img, err := tx.Image.Query().Where(image.ID(req.ImageID)).First(ctx)
269287
if err != nil {
270288
return err
@@ -345,6 +363,14 @@ func (t *TaskRepo) Create(ctx context.Context, u *domain.User, req domain.Create
345363
return err
346364
}
347365

366+
if mak != nil {
367+
if err := tx.ModelApiKey.UpdateOneID(mak.ID).
368+
SetVirtualmachineID(vm.ID).
369+
Exec(ctx); err != nil {
370+
return err
371+
}
372+
}
373+
348374
return nil
349375
})
350376

backend/biz/task/usecase/task.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,11 @@ func (a *TaskUsecase) Create(ctx context.Context, user *domain.User, req domain.
317317
return nil, fmt.Errorf("task edge is nil")
318318
}
319319

320+
if keys := m.Edges.Apikeys; len(keys) > 0 {
321+
m.APIKey = keys[0].APIKey
322+
m.BaseURL = a.cfg.LLMProxy.BaseURL + "/v1"
323+
}
324+
320325
coding, configs, err := a.getCodingConfigs(req.CliName, m, req.Extra.SkillIDs)
321326
if err != nil {
322327
return nil, err

backend/config/config.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ type Config struct {
2828
Session Session `mapstructure:"session"`
2929
SMTP SMTP `mapstructure:"smtp"`
3030

31+
LLMProxy struct {
32+
Addr string `mapstructure:"addr"`
33+
BaseURL string `mapstructure:"base_url"`
34+
Timeout string `mapstructure:"timeout"`
35+
KeepAlive string `mapstructure:"keep_alive"`
36+
ClientPoolSize int `mapstructure:"client_pool_size"`
37+
StreamClientPoolSize int `mapstructure:"stream_client_pool_size"`
38+
RequestLogPath string `mapstructure:"request_log_path"`
39+
} `mapstructure:"llm_proxy"`
40+
3141
RootPath string `mapstructure:"root_path"`
3242
Logger logger.Config `mapstructure:"logger"`
3343
AdminToken string `mapstructure:"admin_token"`

0 commit comments

Comments
 (0)