更新首页逻辑以支持动态标题生成,优化用户体验。调整管理后台资源文件,替换旧的 JavaScript 和 CSS 文件,提升页面性能和样式一致性。同时,更新数据库结构以支持更细粒度的推送状态。

This commit is contained in:
Alex-larget
2026-03-26 20:26:35 +08:00
parent af05740d6f
commit 7bf301a9c8
34 changed files with 1994 additions and 1774 deletions

View File

@@ -86,9 +86,6 @@ func Init(dsn string) error {
if err := db.AutoMigrate(&model.AdminUser{}); err != nil {
log.Printf("database: admin_users migrate warning: %v", err)
}
if err := db.AutoMigrate(&model.CkbSubmitRecord{}); err != nil {
log.Printf("database: ckb_submit_records migrate warning: %v", err)
}
if err := db.AutoMigrate(&model.CkbLeadRecord{}); err != nil {
log.Printf("database: ckb_lead_records migrate warning: %v", err)
}
@@ -158,6 +155,36 @@ func ensureCkbLeadSchema(db *gorm.DB) {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add push_status", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "action") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN action VARCHAR(20) NOT NULL DEFAULT 'lead' COMMENT '记录类型: lead/join/match'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add action", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "plan_api_key") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN plan_api_key VARCHAR(100) NOT NULL DEFAULT '' COMMENT '本次命中的获客计划 apiKey 快照'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add plan_api_key", err)
}
}
if !m.HasIndex(&model.CkbLeadRecord{}, "idx_ckb_lead_action") {
if err := db.Exec("CREATE INDEX idx_ckb_lead_action ON ckb_lead_records(action)").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=create idx_ckb_lead_action", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "ckb_code") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN ckb_code INT NOT NULL DEFAULT 0 COMMENT '存客宝响应 code快照'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add ckb_code", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "ckb_message") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN ckb_message VARCHAR(500) NOT NULL DEFAULT '' COMMENT '存客宝响应 message快照'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add ckb_message", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "ckb_data") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN ckb_data TEXT NULL COMMENT '存客宝响应 data快照 JSON'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add ckb_data", err)
}
}
if !m.HasColumn(&model.CkbLeadRecord{}, "retry_count") {
if err := db.Exec("ALTER TABLE ckb_lead_records ADD COLUMN retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=add retry_count", err)
@@ -178,4 +205,8 @@ func ensureCkbLeadSchema(db *gorm.DB) {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=create idx_ckb_lead_push_status", err)
}
}
// 放宽 push_status 长度以容纳存客宝细粒度状态pending_verify、expired 等)
if err := db.Exec("ALTER TABLE ckb_lead_records MODIFY COLUMN push_status VARCHAR(64) NOT NULL DEFAULT 'pending' COMMENT '推送状态'").Error; err != nil {
log.Printf("database: ckb_lead_records schema ensure warning: %v; action=widen push_status", err)
}
}