Files
mce/internal/session/store.go
Victor_Jay 97adf54d6d fix: golangci-lint 零告警通过 (57→0) + gofumpt/goimports 全量格式化
## CI 修复 (P0/P1)

P0 — 编译阻塞:
  - interfaces.go: postUseCase ISP 接口移除不用的 Create/Update/Delete

P1 — 必须修复:
  - ST1000: 为 13 个包添加包注释 (common/config/model/service/...)
  - ST1005: redis_store.go 全部错误消息改为小写开头
  - errcheck (19处): defer Close()→闭包忽略, notifier.Create→_=, r.Run→检查error
  - errorlint (9处): switch-on-error→errors.Is 链, ==→errors.Is
  - ST1020/ST1022: 导出符号注释以符号名开头

P2 — 安全评审:
  - gosec (12处): G203/G301/G304/G306 添加 nolint 注释并附理由

P3 — 清理:
  - unused: 移除 hasUnicode/energyStore/current/energyAdminUseCase
  - gofumpt + goimports 全量格式化 (35+ 文件)
2026-06-22 02:27:35 +08:00

39 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package session 提供服务端会话管理创建、验证、销毁、Redis/内存双存储及自动降级。
package session
// StoreMetrics 存储状态信息(供管理面板展示)
type StoreMetrics struct {
Type string // "redis" 或 "memory"
Healthy bool // Redis 健康状态memory 模式始终为 true
Degraded bool // 是否处于降级模式
DegradedNote string // 降级提示语(可选)
ActiveCount int // 活跃会话数,-1 表示不统计
}
// Store 会话存储接口(内存实现 / Redis 实现 / FallbackStore 均实现此接口)
type Store interface {
// Get 按会话 ID 获取会话,不存在或已过期返回 nil
Get(id string) (*Session, error)
// Set 写入/更新会话
Set(s *Session) error
// Delete 删除单个会话
Delete(id string) error
// DeleteByUID 删除某用户的所有会话(改密/注销/强制下线时调用)
DeleteByUID(uid uint) error
// DeleteByUIDExclude 删除某用户的所有会话,但保留指定的会话 ID
DeleteByUIDExclude(uid uint, excludeSID string) error
// ListByUID 列出某用户的所有活跃会话
ListByUID(uid uint) ([]*Session, error)
// Cleanup 清理过期会话,返回清理数量(由后台 goroutine 定期调用)
Cleanup() int
// Metrics 返回存储状态信息(供管理面板展示)
Metrics() StoreMetrics
}