更新RMDC系统的模块SKILL

This commit is contained in:
zeaslity
2026-02-02 15:06:28 +08:00
parent 93624efdab
commit a02ac14481
89 changed files with 8101 additions and 2417 deletions

View File

@@ -0,0 +1,74 @@
# 审计日志对齐规范
## 与 rmdc-audit-log 对齐
所有模块的审计记录必须与 `rmdc-audit-log` 模块的格式保持一致。
## 必须字段
| 字段 | 类型 | 说明 |
|:---|:---|:---|
| id | uint | 审计记录ID |
| user_id | uint | 操作人ID |
| username | string | 操作人用户名 |
| action | string | 操作类型 |
| resource_type | string | 资源类型 |
| resource_id | string | 资源ID |
| details | json | 操作详情 |
| ip_address | string | 客户端IP |
| user_agent | string | 客户端UA |
| timestamp | timestamp | 操作时间 |
| result | string | 操作结果 success/failed |
## 操作类型规范
| 模块 | 操作类型 |
|:---|:---|
| user-auth | USER_LOGIN, USER_LOGOUT, USER_CREATE, USER_UPDATE, USER_DELETE, PASSWORD_CHANGE, PERMISSION_GRANT |
| jenkins-dac | BUILD_TRIGGER, BUILD_CANCEL, PERMISSION_CHANGE |
| exchange-hub | COMMAND_SEND, COMMAND_COMPLETE |
| watchdog | DEPLOYMENT_START, DEPLOYMENT_COMPLETE, TOTP_VERIFY |
| project-mgmt | PROJECT_CREATE, PROJECT_UPDATE, AUTH_GRANT |
| work-procedure | WORKFLOW_CREATE, WORKFLOW_APPROVE, WORKFLOW_REJECT |
## 审计表保护
审计表必须设置以下保护:
1. 禁止 DELETE 操作
2. 禁止 UPDATE 操作(除标记字段外)
3. 定期备份
4. 独立存储(建议)
```sql
-- 创建只允许 INSERT 的触发器
CREATE OR REPLACE FUNCTION prevent_audit_modify()
RETURNS TRIGGER AS $$
BEGIN
RAISE EXCEPTION 'Audit log modification is not allowed';
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER audit_log_protect
BEFORE UPDATE OR DELETE ON audit_logs
FOR EACH ROW EXECUTE FUNCTION prevent_audit_modify();
```
## 审计记录示例
```go
// user-auth 模块
audit.Record(audit.Entry{
UserID: operatorID,
Username: operatorName,
Action: "USER_CREATE",
ResourceType: "user",
ResourceID: strconv.Itoa(int(newUser.ID)),
Details: map[string]interface{}{
"username": newUser.Username,
"role": newUser.Role,
},
IPAddress: c.ClientIP(),
UserAgent: c.Request.UserAgent(),
Result: "success",
})
```

View File

@@ -0,0 +1,58 @@
# 日志格式规范
## 结构化日志
所有日志必须使用结构化格式,禁止字符串拼接。
### 正确示例
```go
log.WithFields(log.Fields{
"user_id": userID,
"action": "login",
"request_id": requestID,
"duration": duration.Milliseconds(),
}).Info("用户登录成功")
```
### 错误示例
```go
// ❌ 禁止
log.Info("用户 " + username + " 登录成功,耗时 " + duration.String())
```
## 必须字段
| 字段 | 说明 | 示例 |
|:---|:---|:---|
| request_id | 请求唯一标识 | uuid |
| user_id | 操作用户ID | 123 |
| action | 操作类型 | login, create_user |
| duration | 耗时(毫秒) | 150 |
## 日志级别
| 级别 | 使用场景 |
|:---|:---|
| ERROR | 错误,需要关注和处理 |
| WARN | 警告,可能的问题 |
| INFO | 重要业务事件 |
| DEBUG | 调试信息,生产环境关闭 |
## 敏感信息脱敏
必须脱敏的字段:
- 密码(任何形式)
- Token / Secret
- 身份证号
- 银行卡号
- 手机号(中间四位)
```go
// 脱敏工具
func maskPhone(phone string) string {
if len(phone) >= 11 {
return phone[:3] + "****" + phone[7:]
}
return "****"
}
```

View File

@@ -0,0 +1,52 @@
# 指标命名规范
## 命名格式
```
rmdc_{module}_{resource}_{action}_{unit}
```
## 命名规则
1. 全小写,下划线分隔
2.`rmdc_` 前缀开头
3. 包含模块名
4. 描述清晰的资源和动作
5. 带单位后缀(如适用)
## 常用后缀
| 后缀 | 说明 | 示例 |
|:---|:---|:---|
| _total | 计数器 | rmdc_user_auth_login_total |
| _seconds | 时间(秒) | rmdc_api_request_duration_seconds |
| _bytes | 大小(字节) | rmdc_file_size_bytes |
| _ratio | 比率 | rmdc_cache_hit_ratio |
## 示例
```go
// 计数器
rmdc_user_auth_login_total{status="success"}
rmdc_user_auth_login_total{status="failed"}
// 直方图
rmdc_user_auth_request_duration_seconds{endpoint="/api/auth/login"}
// Gauge
rmdc_user_auth_active_sessions
```
## 标签规范
- 标签名小写下划线
- 标签值使用小写
- 避免高基数标签(如 user_id
```go
// ✅ 正确
loginCounter.WithLabelValues("success").Inc()
// ❌ 错误 - 高基数
loginCounter.WithLabelValues(userID).Inc()
```