feat: 新增语音转文字(ASR)功能

- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别
- 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式
- 注册路由、工具卡片、智能助手欢迎语更新

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
eaiadmin
2026-09-14 00:53:36 +08:00
co-authored by Claude Code
parent 752c7837ef
commit 0455f064ac
299 changed files with 1588 additions and 432 deletions
@@ -0,0 +1,24 @@
package model
import "time"
// Course 课程表
type Course struct {
ID uint `gorm:"primaryKey" json:"id"`
Code string `gorm:"size:32;uniqueIndex;not null" json:"code"`
Name string `gorm:"size:128;not null" json:"name"`
Category string `gorm:"size:32;not null;index" json:"category"` // capital_script/qualification_logic/ai_public_course/ai_platform_matching
TargetCustomers string `gorm:"type:text" json:"target_customers"`
ForbiddenCustomers string `gorm:"type:text" json:"forbidden_customers"`
Scripts string `gorm:"type:text" json:"scripts"`
SalesProcess string `gorm:"type:text" json:"sales_process"`
ObjectionHandling string `gorm:"type:text" json:"objection_handling"`
DeliveryPitfalls string `gorm:"type:text" json:"delivery_pitfalls"`
ReportRules string `gorm:"type:text" json:"report_rules"`
RelatedProductID *uint `gorm:"index" json:"related_product_id"`
Status string `gorm:"size:16;not null;default:active;index" json:"status"` // active / inactive
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func (Course) TableName() string { return "course" }