init push
This commit is contained in:
118
backend/domain/stat.go
Normal file
118
backend/domain/stat.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type StatPageScene int
|
||||
|
||||
const (
|
||||
StatPageSceneWelcome StatPageScene = iota + 1
|
||||
StatPageSceneNodeDetail
|
||||
StatPageSceneChat
|
||||
StatPageSceneLogin
|
||||
)
|
||||
|
||||
var (
|
||||
StatPageSceneNames = []string{"欢迎页", "问答页", "登录页"}
|
||||
)
|
||||
|
||||
type StatPage struct {
|
||||
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
||||
KBID string `json:"kb_id"`
|
||||
NodeID string `json:"node_id"`
|
||||
UserID uint `json:"user_id"`
|
||||
SessionID string `json:"session_id"`
|
||||
Scene StatPageScene `json:"scene"` // 1: welcome, 2: detail, 3: chat, 4: login
|
||||
IP string `json:"ip"`
|
||||
UA string `json:"ua"`
|
||||
BrowserName string `json:"browser_name"`
|
||||
BrowserOS string `json:"browser_os"`
|
||||
Referer string `json:"referer"`
|
||||
RefererHost string `json:"referer_host"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
type StatPageReq struct {
|
||||
Scene StatPageScene `json:"scene" validate:"required,oneof=1 2 3 4"`
|
||||
NodeID string `json:"node_id"`
|
||||
}
|
||||
|
||||
type HotPage struct {
|
||||
Scene StatPageScene `json:"scene"`
|
||||
NodeID string `json:"node_id"`
|
||||
NodeName string `json:"node_name" gorm:"-"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
type HotRefererHost struct {
|
||||
RefererHost string `json:"referer_host"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
type HotBrowser struct {
|
||||
OS []BrowserCount `json:"os"`
|
||||
Browser []BrowserCount `json:"browser"`
|
||||
}
|
||||
|
||||
type BrowserCount struct {
|
||||
Name string `json:"name"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
type InstantCountResp struct {
|
||||
Time string `json:"time"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
type InstantPageResp struct {
|
||||
Scene StatPageScene `json:"scene"`
|
||||
NodeID string `json:"node_id"`
|
||||
NodeName string `json:"node_name" gorm:"-"`
|
||||
IP string `json:"ip"`
|
||||
IPAddress IPAddress `json:"ip_address" gorm:"-"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
|
||||
UserID uint `json:"user_id"`
|
||||
Info *AuthUserInfo `json:"info"`
|
||||
}
|
||||
|
||||
type ConversationDistribution struct {
|
||||
AppType AppType `json:"app_type"`
|
||||
AppID string `json:"-"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
// StatPageHour 按小时聚合的统计数据
|
||||
type StatPageHour struct {
|
||||
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
||||
KbID string `json:"kb_id" gorm:"index"`
|
||||
Hour time.Time `json:"hour" gorm:"index"` // 按小时截断的时间
|
||||
IPCount int64 `json:"ip_count"`
|
||||
SessionCount int64 `json:"session_count"`
|
||||
PageVisitCount int64 `json:"page_visit_count"`
|
||||
ConversationCount int64 `json:"conversation_count"`
|
||||
GeoCount MapStrInt64 `json:"geo_count" gorm:"type:jsonb"`
|
||||
ConversationDistribution MapStrInt64 `json:"conversation_distribution" gorm:"type:jsonb"`
|
||||
HotRefererHost MapStrInt64 `json:"hot_referer_host" gorm:"type:jsonb"`
|
||||
HotPage MapStrInt64 `json:"hot_page" gorm:"type:jsonb"`
|
||||
HotBrowser MapStrInt64 `json:"hot_browser" gorm:"type:jsonb"`
|
||||
HotOS MapStrInt64 `json:"hot_os" gorm:"type:jsonb"`
|
||||
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
func (StatPageHour) TableName() string {
|
||||
return "stat_page_hours"
|
||||
}
|
||||
|
||||
// NodeStats node表统计数据
|
||||
type NodeStats struct {
|
||||
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
||||
NodeID string `json:"node_id" gorm:"uniqueIndex"`
|
||||
PV int64 `json:"pv"`
|
||||
}
|
||||
|
||||
func (NodeStats) TableName() string {
|
||||
return "node_stats"
|
||||
}
|
||||
Reference in New Issue
Block a user