增加即梦图片5.0和视频2.5的能力
This commit is contained in:
1 parent
542246e4ce
commit
88a4268d40
55 files changed
+1412
-200
No files matched your search
@@ -245,7 +245,7 @@ func retryEngine(provider, capability string) string {
|
||||
switch provider {
|
||||
case "volcengine-visual":
|
||||
return "jimeng"
|
||||
case "evolink", "bailian":
|
||||
case "evolink", "bailian", "seedream":
|
||||
return provider
|
||||
default:
|
||||
return ""
|
||||
|
||||
@@ -77,7 +77,7 @@ func (p *SettlementProcessor) Advance(ctx context.Context, job jobs.Job) (jobs.J
|
||||
resolution := seedanceResolution(charge.raw)
|
||||
inputVideo := seedanceRequestHasInputVideo(advanced.RequestPayload)
|
||||
actualAmount, err := billing.CalculateSeedanceActualAmountFen(billing.SeedanceActualAmountInput{
|
||||
Resolution: resolution, InputVideo: inputVideo, CompletionTokens: completionTokens,
|
||||
Model: advanced.ReqKey, Resolution: resolution, InputVideo: inputVideo, CompletionTokens: completionTokens,
|
||||
MarkupMultiplier: numberOrZero(charge.raw["markupMultiplier"]),
|
||||
})
|
||||
if err != nil {
|
||||
@@ -104,7 +104,7 @@ func (p *SettlementProcessor) Advance(ctx context.Context, job jobs.Job) (jobs.J
|
||||
Metadata: map[string]any{
|
||||
"operation": "seedance_actual_settlement", "reservedAmountFen": reservedAmount,
|
||||
"chargedAmountFen": charge.AmountFen, "actualAmountFen": actualAmount,
|
||||
"completionTokens": completionTokens, "inputVideo": inputVideo, "resolution": resolution,
|
||||
"completionTokens": completionTokens, "inputVideo": inputVideo, "resolution": resolution, "model": advanced.ReqKey,
|
||||
},
|
||||
})
|
||||
if postErr != nil {
|
||||
@@ -125,8 +125,8 @@ func (p *SettlementProcessor) Advance(ctx context.Context, job jobs.Job) (jobs.J
|
||||
delete(charge.raw, "settlementLedgerEntryId")
|
||||
}
|
||||
charge.raw["providerUsage"] = map[string]any{
|
||||
"completionTokens": completionTokens, "resolution": resolution, "inputVideo": inputVideo,
|
||||
"tokenPriceFenPerMillion": billing.SeedanceTokenPriceFenPerMillion(resolution, inputVideo),
|
||||
"completionTokens": completionTokens, "resolution": resolution, "inputVideo": inputVideo, "model": advanced.ReqKey,
|
||||
"tokenPriceFenPerMillion": billing.SeedanceTokenPriceFenPerMillion(advanced.ReqKey, resolution, inputVideo),
|
||||
}
|
||||
return p.write(ctx, advanced, charge.raw)
|
||||
}
|
||||
|
||||
@@ -52,6 +52,25 @@ func TestSettlementProcessorMarksMissingProviderUsageEstimated(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettlementProcessorUsesSeedance25RateFromJobReqKey(t *testing.T) {
|
||||
state := &settlementStateStub{}
|
||||
ledger := &settlementLedgerStub{}
|
||||
advanced := seedanceSettlementJob(`{"usage":{"completionTokens":20000}}`, `{"status":"charged","amountFen":100,"markupMultiplier":1.2,"parameters":{"resolution":"720p"}}`)
|
||||
advanced.ReqKey = billing.Seedance25Model
|
||||
processor := NewSettlementProcessor(settlementProcessorStub{job: advanced}, ledger, state, time.Now)
|
||||
|
||||
got, err := processor.Advance(context.Background(), jobs.Job{ID: "job-1", Provider: "seedance", Status: jobs.StatusRunning})
|
||||
if err != nil || ledger.calls != 1 || ledger.request.DeltaFen != 68 {
|
||||
t.Fatalf("job=%#v request=%#v calls=%d err=%v", got, ledger.request, ledger.calls, err)
|
||||
}
|
||||
var snapshot map[string]any
|
||||
_ = json.Unmarshal(got.Billing, &snapshot)
|
||||
usage := snapshot["providerUsage"].(map[string]any)
|
||||
if snapshot["amountFen"] != float64(168) || usage["model"] != billing.Seedance25Model || usage["tokenPriceFenPerMillion"] != float64(7000) {
|
||||
t.Fatalf("billing snapshot = %#v", snapshot)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettlementProcessorQuotaExemptUpdatesSnapshotWithoutWalletAndIsIdempotent(t *testing.T) {
|
||||
state := &settlementStateStub{}
|
||||
ledger := &settlementLedgerStub{}
|
||||
|
||||
Reference in new issue
Block a user