feat(media-supply): add media resource supply marketplace
Desktop Client Build / Resolve Build Metadata (push) Successful in 43s
Frontend CI / Frontend (push) Successful in 3m49s
Backend CI / Backend (push) Failing after 7m10s
Desktop Client Build / Build Desktop Client (push) Successful in 23m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s
Desktop Client Build / Resolve Build Metadata (push) Successful in 43s
Frontend CI / Frontend (push) Successful in 3m49s
Backend CI / Backend (push) Failing after 7m10s
Desktop Client Build / Build Desktop Client (push) Successful in 23m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s
Introduce an end-to-end media-supply feature: tenant-side resource sync service/worker backed by a Meijiequan supplier client, ops-side management APIs, and admin/ops web views for resources, orders, favorites and submission. Adds a shared digitocr helper, MediaSupply config blocks for tenant and ops, shared types, and migrations for supplier media resources, price overrides, customer visibility and order refunds. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -368,6 +368,46 @@ cache:
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadAppliesMediaSupplyMeijiequanAccountOverrides(t *testing.T) {
|
||||
t.Setenv("MEIJIEQUAN_USERNAME", " 17788409108 ")
|
||||
t.Setenv("MEIJIEQUAN_PASSWORD", " env-password ")
|
||||
t.Setenv("MEIJIEQUAN_SYNC_PAGE_DELAY", "1500ms")
|
||||
t.Setenv("MEIJIEQUAN_SEARCH_OPTIONS_TTL", "2h")
|
||||
t.Setenv("MEIJIEQUAN_UPSTREAM_MIN_INTERVAL", "3s")
|
||||
t.Setenv("MEDIA_SUPPLY_BACKLINK_SYNC_INTERVAL", "15m")
|
||||
t.Setenv("MEDIA_SUPPLY_BACKLINK_BATCH_SIZE", "12")
|
||||
t.Setenv("MEIJIEQUAN_PUBLISHED_PAGE_SIZE", "30")
|
||||
t.Setenv("MEIJIEQUAN_PUBLISHED_MAX_PAGES", "4")
|
||||
|
||||
configPath := writeTestConfig(t, `
|
||||
media_supply:
|
||||
meijiequan:
|
||||
base_url: "http://www.meijiequan.com/"
|
||||
user_id: " 962 "
|
||||
username: config-user
|
||||
password: config-password
|
||||
`)
|
||||
|
||||
cfg, err := Load(configPath)
|
||||
if err != nil {
|
||||
t.Fatalf("Load() error = %v", err)
|
||||
}
|
||||
|
||||
if cfg.MediaSupply.Meijiequan.BaseURL != "http://www.meijiequan.com" ||
|
||||
cfg.MediaSupply.Meijiequan.UserID != "962" ||
|
||||
cfg.MediaSupply.Meijiequan.Username != "17788409108" ||
|
||||
cfg.MediaSupply.Meijiequan.Password != "env-password" ||
|
||||
cfg.MediaSupply.Meijiequan.SyncPageDelay != 1500*time.Millisecond ||
|
||||
cfg.MediaSupply.Meijiequan.SearchOptionsTTL != 2*time.Hour ||
|
||||
cfg.MediaSupply.Meijiequan.UpstreamMinInterval != 3*time.Second ||
|
||||
cfg.MediaSupply.Worker.BacklinkSyncInterval != 15*time.Minute ||
|
||||
cfg.MediaSupply.Worker.BacklinkBatchSize != 12 ||
|
||||
cfg.MediaSupply.Meijiequan.PublishedPageSize != 30 ||
|
||||
cfg.MediaSupply.Meijiequan.PublishedMaxPages != 4 {
|
||||
t.Fatalf("unexpected meijiequan config: %#v", cfg.MediaSupply.Meijiequan)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadPrefersEnvSchedulerMetricsSettings(t *testing.T) {
|
||||
t.Setenv("SCHEDULER_HTTP_HOST", "0.0.0.0")
|
||||
t.Setenv("SCHEDULER_INTERNAL_METRICS_TOKEN", "env-metrics-token")
|
||||
|
||||
Reference in New Issue
Block a user