后端: 1. Credit 价格规则补齐利润率与实际计费单价语义:新增 `profit_rate_bps` 与 `charge_*_price_micros` 展示字段,下沉共享价格推导 helper,tokenstore rpc/client/proto/model/default rule 全链路同步,LLM usage 扣费统一改按加价后的 charge 单价换算。 2. task-class 更新链路修正全量覆盖与归属校验:`runtime/conv` 保留 item id,DAO 更新前显式校验 task-class 与 item 归属,改用显式字段 map 落库 nil/空切片/零值,避免 `RowsAffected=0` 误判越权,同时补齐任务项可编辑字段更新。 3. GormCache task-class 失效补空 user_id 保护:更新语句缺少模型上下文时直接跳过失效,避免缓存插件因空指针影响主事务。 前端: 4. 课表中心补齐任务类编辑能力:新增 `updateTaskClass` API,创建弹窗支持编辑态回填与 item id 提交,日程页支持先拉详情再编辑并在保存后刷新任务类详情与列表。 5. 计划广场详情补点赞交互与奖励提示:详情页新增点赞/取消点赞按钮、奖励反馈文案与计数展示,论坛类型补 `reward_hint`,评论区与帖子作者头像统一接入兜底头像工具。 6. 品牌与展示细节收口:侧边栏与 favicon 切到项目 logo,首页标题改为 `SmartMate`,主面板缩放上限微调,论坛列表头像显示与整体品牌观感同步统一。
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const creditPriceRuleStatusActive = "active"
|
|
|
|
type CreditPriceRule struct {
|
|
ID uint64 `gorm:"column:id"`
|
|
Scene string `gorm:"column:scene"`
|
|
ProviderName string `gorm:"column:provider_name"`
|
|
ModelName string `gorm:"column:model_name"`
|
|
InputPriceMicros int64 `gorm:"column:input_price_micros"`
|
|
OutputPriceMicros int64 `gorm:"column:output_price_micros"`
|
|
CachedPriceMicros int64 `gorm:"column:cached_price_micros"`
|
|
ReasoningPriceMicros int64 `gorm:"column:reasoning_price_micros"`
|
|
CreditPerYuan int64 `gorm:"column:credit_per_yuan"`
|
|
ProfitRateBps int64 `gorm:"column:profit_rate_bps"`
|
|
Status string `gorm:"column:status"`
|
|
Priority int `gorm:"column:priority"`
|
|
Description string `gorm:"column:description"`
|
|
}
|
|
|
|
func (CreditPriceRule) TableName() string {
|
|
return "credit_price_rules"
|
|
}
|
|
|
|
type PriceRuleDAO struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewPriceRuleDAO(db *gorm.DB) *PriceRuleDAO {
|
|
return &PriceRuleDAO{db: db}
|
|
}
|
|
|
|
func (d *PriceRuleDAO) ListActiveRules(ctx context.Context) ([]CreditPriceRule, error) {
|
|
if d == nil || d.db == nil {
|
|
return nil, nil
|
|
}
|
|
|
|
var rules []CreditPriceRule
|
|
err := d.db.WithContext(ctx).
|
|
Model(&CreditPriceRule{}).
|
|
Where("status = ?", creditPriceRuleStatusActive).
|
|
Order("priority DESC, id ASC").
|
|
Find(&rules).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return rules, nil
|
|
}
|