dailz
85901fe18a
feat(model): expand API response fields to expose full Slurm data
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 11:12:33 +08:00
dailz
270552ba9a
feat(service): add debug logging for Slurm API calls with request/response body and latency
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 10:28:58 +08:00
dailz
347b0e1229
fix: remove redundant binding tags and clarify logger compress logic
...
- Remove binding:"required" from model fields that are manually validated in handlers. - Add parentheses to logger compress default to clarify operator precedence.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 09:25:46 +08:00
dailz
c070dd8abc
fix(slurm): add default 30s timeout to HTTP client
...
Replaces http.DefaultClient with a client that has a 30s timeout to prevent indefinite hangs when the Slurm REST API is unresponsive.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 09:25:35 +08:00
dailz
1359730300
fix(store): return ErrRecordNotFound when updating non-existent template
...
RowsAffected == 0 now returns gorm.ErrRecordNotFound so the handler can respond with 404 instead of silently returning 200.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 09:21:03 +08:00
dailz
4ff02d4a80
fix: 移除 main() 中多余的 defer application.Close()
...
Run() 在所有退出路径中已调用 Close(),main 中的 defer 是冗余的。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:48:42 +08:00
dailz
1784331969
feat: 添加应用骨架,配置化 zap 日志贯穿全链路
...
- cmd/server/main.go: 使用 logger.NewLogger(cfg.Log) 替代 zap.NewProduction()
- internal/app: 依赖注入组装 DB/Slurm/Service/Handler,传递 logger
- internal/middleware: RequestLogger 请求日志中间件
- internal/server: 统一响应格式和路由注册
- go.mod: module 更名为 gcy_hpc_server,添加 gin/zap/lumberjack/gorm 依赖
- 日志初始化失败时 fail fast (os.Exit(1))
- GormLevel 从配置传递到 NewGormDB,支持 YAML 独立配置
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:40:16 +08:00
dailz
e6162063ca
feat: 添加 HTTP 处理层和结构化日志
...
- JobHandler: 提交/查询/取消/历史,5xx Error + 4xx Warn 日志
- ClusterHandler: 节点/分区/诊断,错误和未找到日志
- TemplateHandler: CRUD 操作,创建/更新/删除 Info + 未找到 Warn
- 不记录成功响应(由 middleware.RequestLogger 处理)
- 不记录请求体和模板内容(安全考虑)
- 完整 TDD 测试,使用 zaptest/observer 验证日志级别和字段
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:40:06 +08:00
dailz
4903f7d07f
feat: 添加业务服务层和结构化日志
...
- JobService: 提交、查询、取消、历史记录,记录关键操作日志
- ClusterService: 节点、分区、诊断查询,记录错误日志
- NewSlurmClient: JWT 认证 HTTP 客户端工厂
- 所有构造函数接受 *zap.Logger 参数实现依赖注入
- 提交/取消成功记录 Info,API 错误记录 Error
- 完整 TDD 测试,使用 zaptest/observer 验证日志输出
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:39:46 +08:00
dailz
fbfd5c5f42
feat: 添加数据模型和存储层
...
- model: JobTemplate、SubmitJobRequest、JobHistoryQuery 等模型定义
- store: NewGormDB MySQL 连接池,使用 zap 日志替代 GORM 默认日志
- store: TemplateStore CRUD 操作,支持 GORM AutoMigrate
- NewGormDB 接受 gormLevel 参数,由上层传入配置值
- 完整 TDD 测试覆盖
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:39:30 +08:00
dailz
f7a21ee455
feat: 添加 zap 日志工厂和 GORM 日志桥接
...
- NewLogger 工厂函数:支持 JSON/Console 编码、stdout/文件/多输出、lumberjack 轮转
- NewGormLogger 实现 gorm.Interface:Trace 区分错误/慢查询/正常查询
- output_stdout 用 *bool 三态处理(nil=true, true, false)
- 默认值:level=info, encoding=json, max_size=100, max_backups=5, max_age=30
- 慢查询阈值 200ms,ErrRecordNotFound 不视为错误
- 编译时接口检查: var _ gormlogger.Interface = (*GormLogger)(nil)
- 完整 TDD 测试覆盖
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:39:21 +08:00
dailz
7550e75945
feat: 添加配置加载和日志配置支持
...
- 新增 LogConfig 结构体,支持 9 个日志配置字段(level, encoding, output_stdout, file_path, max_size, max_backups, max_age, compress, gorm_level)
- Config 结构体新增 Log 字段,支持 YAML 解析
- output_stdout 使用 *bool 指针类型,nil 默认为 true
- 更新 config.example.yaml 添加完整 log 配置段
- 新增 TDD 测试:日志配置解析、向后兼容、字段完整性
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-10 08:39:09 +08:00
dailz
246c19c052
feat(client): add functional option pattern for JWT auth config
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-09 10:33:31 +08:00
dailz
f8119ff9e5
feat(auth): add JWTAuthTransport with auto-refresh RoundTrip
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-09 10:31:39 +08:00
dailz
2dcbfb95b0
feat(auth): add token cache with thread-safe auto-refresh
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-09 10:31:27 +08:00
dailz
49cbea948a
feat(jwt): add HS256 JWT signing with stdlib-only implementation
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-09 10:31:16 +08:00
dailz
962f63a5c6
feat(slurmdb): add JobsService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:35:29 +08:00
dailz
2b14e41d0d
feat(slurmdb): add AssocsService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:35:10 +08:00
dailz
74230630c8
feat(slurmdb): add ClustersService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:34:42 +08:00
dailz
acd1e175bd
feat(slurmdb): add UsersService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:34:18 +08:00
dailz
f64e0dd8af
feat(slurmdb): add AccountsService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:33:58 +08:00
dailz
4eba2525f5
feat(slurmdb): add QosService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:33:35 +08:00
dailz
0a3f9c1080
feat(slurmdb): add WckeysService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:33:09 +08:00
dailz
fe73d519c9
feat(slurmdb): add InstancesService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:32:43 +08:00
dailz
7af62eac41
feat(slurmdb): add TresService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:32:20 +08:00
dailz
874453d0c8
feat(slurmdb): add ConfigService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:31:58 +08:00
dailz
52765f196a
feat(slurmdb): add DiagService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:31:31 +08:00
dailz
5078c5d09a
feat(slurmdb): wire slurmdb services into client
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:30:36 +08:00
dailz
4674dc12a9
feat(slurmdb): add all slurmdb response types and supporting types
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 21:29:22 +08:00
dailz
f4100f4236
feat: 添加 Shares 公平共享类型和 SharesService
...
包含 SharesRespMsg、AssocSharesObjWrap、TRES 明细等类型。SharesService 提供 GetShares 方法,支持按 accounts 和 users 查询。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:30:30 +08:00
dailz
263363a2ba
feat: 添加 Diag/Ping/Licenses/Reconfigure 类型和对应服务
...
包含 StatsMsg(含调度和回填统计)、ControllerPing、License 等类型。实现 4 个服务:DiagService.GetDiag、PingService.Ping、LicensesService.GetLicenses、ReconfigureService.Reconfigure。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:30:11 +08:00
dailz
02ed2e7b38
feat: 添加 Reservation 领域类型和 ReservationsService
...
包含 ReservationInfo、ReservationCoreSpec 等类型。ReservationsService 提供 GetReservations 和 GetReservation 2 个方法。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:29:53 +08:00
dailz
18ebad8f8f
feat: 添加 Partition 领域类型和 PartitionsService
...
包含 PartitionInfo 及其子结构体(Nodes、Accounts、Groups、QOS、TRES、CPUs、Defaults、Maximums、Minimums、Priority、Timeouts)。PartitionsService 提供 GetPartitions 和 GetPartition 2 个方法。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:29:43 +08:00
dailz
f9234b2167
feat: 添加 Node 领域类型和 NodesService
...
包含 Node、UpdateNodeMsg、AcctGatherEnergy、ExtSensorsData、PowerMgmtData 等类型。NodesService 提供 GetNodes、GetNode、PostNode、DeleteNode 4 个方法,并定义 NodeFlag* 常量。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:29:26 +08:00
dailz
2c84930983
feat: 添加 Job 领域类型和 JobsService
...
约 93 个结构体覆盖 JobInfo、JobDescMsg、SlurmDBD Job/Step/QOS/Account/User 等类型。JobsService 提供 GetJobs、GetJob、PostJob、DeleteJob、SubmitJob 5 个方法,并定义 JobFlag* 和 JobSignalFlag* 常量。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:29:07 +08:00
dailz
5873dc5b72
feat: 添加基础类型、工具函数和客户端测试
...
包含 Ptr[T] 泛型辅助函数、4 种 NoVal 类型(Uint64/Uint32/Uint16/Float64)、字符串集合类型、OpenapiMeta/Error/Warning,以及对应的序列化测试和客户端集成测试。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:28:46 +08:00
dailz
73453ddd10
chore: 初始化 Slurm Go SDK 项目骨架和核心客户端
...
添加 Go 模块定义、.gitignore、包文档、HTTP Client 核心、Token 认证和错误处理。
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 18:28:32 +08:00