158 lines
8.0 KiB
Go
158 lines
8.0 KiB
Go
package config
|
||
|
||
// BaseConfig 基础配置结构
|
||
type BaseConfig struct {
|
||
// 优先级和权重
|
||
Priority int `bson:"priority" json:"priority"` // 优先级
|
||
Weight float64 `bson:"weight" json:"weight"` // 权重
|
||
Order int `bson:"order" json:"order"` // 排序顺序
|
||
|
||
// 标签和分类
|
||
Tags []string `bson:"tags" json:"tags"` // 标签
|
||
Category string `bson:"category" json:"category"` // 分类
|
||
Industry string `bson:"industry" json:"industry"` // 行业
|
||
|
||
// 配置信息
|
||
Config string `bson:"config" json:"config"` // 配置信息(JSON格式)
|
||
Extra map[string]interface{} `bson:"extra" json:"extra"` // 扩展字段
|
||
Remark string `bson:"remark" json:"remark"` // 备注
|
||
}
|
||
|
||
// BiddingConfig 竞价配置
|
||
type BiddingConfig struct {
|
||
// 竞价类型
|
||
BiddingType string `bson:"biddingType" json:"biddingType"` // 竞价类型:cpm、cpc、cpa、rtb
|
||
BiddingStrategy string `bson:"biddingStrategy" json:"biddingStrategy"` // 出价策略:manual、auto、target_cpa、target_roas等
|
||
|
||
// 出价范围
|
||
MinBidAmount int64 `bson:"minBidAmount" json:"minBidAmount"` // 最小出价(分)
|
||
MaxBidAmount int64 `bson:"maxBidAmount" json:"maxBidAmount"` // 最大出价(分)
|
||
DefaultBidAmount int64 `bson:"defaultBidAmount" json:"defaultBidAmount"` // 默认出价(分)
|
||
BidIncrement int64 `bson:"bidIncrement" json:"bidIncrement"` // 出价增量(分)
|
||
|
||
// 自动优化
|
||
AutoOptimization bool `bson:"autoOptimization" json:"autoOptimization"` // 是否自动优化
|
||
TargetCPA int64 `bson:"targetCPA" json:"targetCPA"` // 目标CPA(分)
|
||
TargetROAS float64 `bson:"targetROAS" json:"targetROAS"` // 目标ROAS
|
||
ConversionValue int64 `bson:"conversionValue" json:"conversionValue"` // 转化价值
|
||
AttributionWindow string `bson:"attributionWindow" json:"attributionWindow"` // 归因窗口
|
||
OptimizationGoal string `bson:"optimizationGoal" json:"optimizationGoal"` // 优化目标:impressions、clicks、conversions、revenue等
|
||
}
|
||
|
||
// BudgetConfig 预算配置
|
||
type BudgetConfig struct {
|
||
// 预算设置
|
||
TotalBudget int64 `bson:"totalBudget" json:"totalBudget"` // 总预算(分)
|
||
DailyBudget int64 `bson:"dailyBudget" json:"dailyBudget"` // 日预算(分)
|
||
HourlyBudget int64 `bson:"hourlyBudget" json:"hourlyBudget"` // 小时预算(分)
|
||
|
||
// 投放节奏
|
||
PaceType string `bson:"paceType" json:"paceType"` // 投放节奏:even、accelerated、standard
|
||
IsBudgetPacing bool `bson:"isBudgetPacing" json:"isBudgetPacing"` // 是否预算匀速投放
|
||
|
||
// 时间配置
|
||
StartDate int64 `bson:"startDate" json:"startDate"` // 开始投放时间
|
||
EndDate int64 `bson:"endDate" json:"endDate"` // 结束投放时间
|
||
TimeSlots []string `bson:"timeSlots" json:"timeSlots"` // 投放时间段
|
||
DaysOfWeek []int `bson:"daysOfWeek" json:"daysOfWeek"` // 投放日期(0-6,0表示周日)
|
||
Timezone string `bson:"timezone" json:"timezone"` // 时区
|
||
IsTimeLimited bool `bson:"isTimeLimited" json:"isTimeLimited"` // 是否限时投放
|
||
}
|
||
|
||
// APIConfig API配置
|
||
type APIConfig struct {
|
||
// 基础配置
|
||
Endpoint string `bson:"endpoint" json:"endpoint"` // API端点
|
||
Version string `bson:"version" json:"version"` // API版本
|
||
Timeout int `bson:"timeout" json:"timeout"` // 超时时间(毫秒)
|
||
RetryCount int `bson:"retryCount" json:"retryCount"` // 重试次数
|
||
|
||
// 认证配置
|
||
AuthType string `bson:"authType" json:"authType"` // 认证类型:api_key、oauth、basic
|
||
AuthConfig string `bson:"authConfig" json:"authConfig"` // 认证配置(JSON字符串)
|
||
|
||
// 请求配置
|
||
Headers string `bson:"headers" json:"headers"` // 请求头配置(JSON字符串)
|
||
|
||
// 限流配置
|
||
RateLimit int64 `bson:"rateLimit" json:"rateLimit"` // 速率限制
|
||
MaxRequestsPerHour int64 `bson:"maxRequestsPerHour" json:"maxRequestsPerHour"` // 每小时最大请求数
|
||
}
|
||
|
||
// CreativeConfig 创意配置
|
||
type CreativeConfig struct {
|
||
// 轮播设置
|
||
CreativeRotation string `bson:"creativeRotation" json:"creativeRotation"` // 创意轮播方式:optimize、even、random
|
||
SelectedCreatives []string `bson:"selectedCreatives" json:"selectedCreatives"` // 选中的创意列表
|
||
ExcludedCreatives []string `bson:"excludedCreatives" json:"excludedCreatives"` // 排除的创意列表
|
||
|
||
// 技术要求
|
||
MaxFileSize int64 `bson:"maxFileSize" json:"maxFileSize"` // 最大文件大小(bytes)
|
||
MaxDuration int64 `bson:"maxDuration" json:"maxDuration"` // 最大时长(秒)
|
||
SupportedMimeTypes []string `bson:"supportedMimeTypes" json:"supportedMimeTypes"` // 支持的MIME类型
|
||
|
||
// 支持的格式
|
||
SupportedFormats []string `bson:"supportedFormats" json:"supportedFormats"` // 支持的格式
|
||
SupportedSizes []string `bson:"supportedSizes" json:"supportedSizes"` // 支持的尺寸
|
||
}
|
||
|
||
// PaymentConfig 支付配置
|
||
type PaymentConfig struct {
|
||
// 计费模式
|
||
BillingModel string `bson:"billingModel" json:"billingModel"` // 计费模式:CPC、CPM、CPA等
|
||
CommissionRate float64 `bson:"commissionRate" json:"commissionRate"` // 佣金比例
|
||
MinimumBudget int64 `bson:"minimumBudget" json:"minimumBudget"` // 最低预算(分)
|
||
|
||
// 结算配置
|
||
SettlementCycle string `bson:"settlementCycle" json:"settlementCycle"` // 结算周期:daily、weekly、monthly
|
||
PaymentTerms string `bson:"paymentTerms" json:"paymentTerms"` // 支付条款
|
||
Currency string `bson:"currency" json:"currency"` // 货币单位
|
||
|
||
// 收入分成
|
||
RevShareRate float64 `bson:"revShareRate" json:"revShareRate"` // 收入分成比例(0-1)
|
||
MinPayment int64 `bson:"minPayment" json:"minPayment"` // 最小支付金额(分)
|
||
TaxInclusive bool `bson:"taxInclusive" json:"taxInclusive"` // 是否含税
|
||
EarlyPaymentDiscount float64 `bson:"earlyPaymentDiscount" json:"earlyPaymentDiscount"` // 提前付款折扣
|
||
}
|
||
|
||
// FrequencyCapConfig 频次控制配置
|
||
type FrequencyCapConfig struct {
|
||
// 频次限制
|
||
Impressions int `bson:"impressions" json:"impressions"` // 展示次数
|
||
TimeWindow int `bson:"timeWindow" json:"timeWindow"` // 时间窗口(小时)
|
||
PerUser int `bson:"perUser" json:"perUser"` // 每用户频次
|
||
PerHour int `bson:"perHour" json:"perHour"` // 每小时频次
|
||
PerDay int `bson:"perDay" json:"perDay"` // 每日频次
|
||
|
||
// 频次控制规则
|
||
CapType string `bson:"capType" json:"capType"` // 频次类型:lifetime、daily、hourly
|
||
CapScope string `bson:"capScope" json:"capScope"` // 频次范围:user、device、ip
|
||
ResetRule string `bson:"resetRule" json:"resetRule"` // 重置规则:daily、weekly、monthly
|
||
}
|
||
|
||
// RestrictionConfig 限制配置
|
||
type RestrictionConfig struct {
|
||
// 年龄限制
|
||
AgeRestriction bool `bson:"ageRestriction" json:"ageRestriction"` // 年龄限制
|
||
MinAge int `bson:"minAge" json:"minAge"` // 最小年龄
|
||
MaxAge int `bson:"maxAge" json:"maxAge"` // 最大年龄
|
||
|
||
// 地域限制
|
||
GeoRestrictions []string `bson:"geoRestrictions" json:"geoRestrictions"` // 地域限制
|
||
|
||
// 设备限制
|
||
DeviceRestrictions []string `bson:"deviceRestrictions" json:"deviceRestrictions"` // 设备限制
|
||
|
||
// 分类限制
|
||
CategoryRestrictions []string `bson:"categoryRestrictions" json:"categoryRestrictions"` // 分类限制
|
||
|
||
// 内容限制
|
||
ContentRestrictions []string `bson:"contentRestrictions" json:"contentRestrictions"` // 内容限制
|
||
|
||
// 品牌安全
|
||
BrandSafety bool `bson:"brandSafety" json:"brandSafety"` // 品牌安全
|
||
BlockedCategories []string `bson:"blockedCategories" json:"blockedCategories"` // 阻止的分类
|
||
AllowedCategories []string `bson:"allowedCategories" json:"allowedCategories"` // 允许的分类
|
||
ExcludedKeywords []string `bson:"excludedKeywords" json:"excludedKeywords"` // 排除的关键词
|
||
}
|