chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线 - 保留迁移、数据保留、AWS 账单与部署安全能力 - 建立 SDD 规格和 CI 验证闭环
This commit is contained in:
commit
fd60361d93
460 files changed
+37492
-23871
No files matched your search
@@ -5,6 +5,27 @@
|
||||
> 作者:Logan.Li
|
||||
> 语言:中文(代码注释和文档主要使用中文,注释署名 `// Logan.Li`)
|
||||
|
||||
## 规格驱动开发(SDD)
|
||||
|
||||
本仓库强制使用 SDD 管理行为变更。开始编码前先按 `docs/specs/README.md` 判定变更级别并完成对应规格;S2/S3 变更使用 `docs/specs/_template.md` 创建规格文件。
|
||||
|
||||
执行顺序固定为:**Discover → Specify → Design → Implement → Verify → Deliver**。
|
||||
|
||||
- S0:纯文案、格式和无行为变化的机械修改,可不建规格文件。
|
||||
- S1:局部修复或单模块小改动,任务计划中必须包含问题、约束和可验证验收标准。
|
||||
- S2:新功能、跨模块流程、API、配置或数据模型变更,必须先落盘规格。
|
||||
- S3:认证、账单、安全、迁移、清理和生产部署,在 S2 基础上必须提供风险、兼容、可观测、发布和回滚方案。
|
||||
|
||||
硬性要求:
|
||||
|
||||
1. 规格中的验收标准使用稳定编号 `AC-01`,每条必须映射到测试或人工验证证据。
|
||||
2. API 先定义请求、响应、错误码和权限;数据库先定义版本化迁移、兼容和回滚;前后端不得各自猜测契约。
|
||||
3. 实现与规格冲突时先更新规格再编码,禁止静默偏离或夹带范围外重构。
|
||||
4. 金额明确币种/汇率/精度,时间明确时区/窗口,敏感操作明确权限/审计/失败路径,高频数据明确保留与清理策略。
|
||||
5. 交付必须报告验证命令、结果、未覆盖项和剩余风险。验收未闭环时不得宣称完成。
|
||||
|
||||
`AGENTS.md` 保存完整项目约束;`docs/specs/README.md` 是 SDD 流程的唯一权威来源。若本文与权威规范冲突,以后者为准。
|
||||
|
||||
## 项目概述
|
||||
|
||||
**AIOps** 是一个企业级智能运维平台,聚焦三大核心能力:
|
||||
@@ -29,9 +50,9 @@
|
||||
|
||||
| 层 | 技术 | 端口 |
|
||||
|---|---|---|
|
||||
| 后端 | Go 1.24 + Gin + GORM + MySQL 8.0 + Redis 7 + JWT + Zap | 8080 |
|
||||
| 后端 | Go 1.25 + Gin + GORM + MySQL 8.0 + Redis 7 + JWT + Zap | 8080 |
|
||||
| 前端 | React 19 + TypeScript + Vite + Tailwind + shadcn/ui + Zustand + TanStack Query | 5173 |
|
||||
| Agent | Go 1.24 (CGO_ENABLED=0 静态二进制, amd64+arm64) | — |
|
||||
| Agent | Go 1.22 模块(Go 1.25 工具链,CGO_ENABLED=0 静态二进制, amd64+arm64) | — |
|
||||
|
||||
## 三种部署方式
|
||||
|
||||
@@ -117,7 +138,7 @@
|
||||
cd backend
|
||||
|
||||
# 编译
|
||||
unset http_proxy https_proxy && export GOPROXY=https://goproxy.cn,direct && GOTOOLCHAIN=local CGO_ENABLED=1 go build -o aiops .
|
||||
unset http_proxy https_proxy && export GOPROXY=https://goproxy.cn,direct && GOTOOLCHAIN=auto CGO_ENABLED=1 go build -o aiops .
|
||||
|
||||
# 直接运行
|
||||
go run .
|
||||
@@ -262,7 +283,7 @@ WebSocket 无法设自定义 header → 后端 JWTAuth 支持 `?token=` query pa
|
||||
### ⛔ Go 代码规范
|
||||
|
||||
1. **所有 handler 返回必须用 `models.Response{Code:200, Data:...}` 包裹**
|
||||
2. **编译命令**: `unset proxy + GOPROXY=goproxy.cn + GOTOOLCHAIN=local + CGO_ENABLED=1`
|
||||
2. **编译命令**: `unset proxy + GOPROXY=goproxy.cn + GOTOOLCHAIN=auto + CGO_ENABLED=1`
|
||||
3. **新增 handler 不绑 model** — 用独立 request struct
|
||||
4. **GORM 指针字段必须解引用** — `*field` 后再用
|
||||
5. **Update handler 禁止复用 CreateRequest** — 用 `map[string]interface{}` 接收
|
||||
@@ -276,6 +297,8 @@ WebSocket 无法设自定义 header → 后端 JWTAuth 支持 `?token=` query pa
|
||||
2. **禁止 `window.confirm()`/`alert()`** — 用 `useConfirm()` + `toast`
|
||||
3. **Radix Dialog 必须有 `<DialogDescription>`**
|
||||
4. **Token 双保险**: `useUserStore.getState().token || localStorage.getItem('token')`
|
||||
5. **图标分层**:操作、状态和导航使用 `lucide-react`;云厂商、CI/CD、监控和中间件等产品实体使用本地 `TechnologyBrandIcon` 或 `CloudBrandIcon`。
|
||||
6. **品牌图标本地化**:技术品牌图标统一从 `simple-icons` 按需导入,禁止使用 jsDelivr、CDN 或远程图片 URL;云厂商缺失图标使用仓库本地 SVG 或官方资源。
|
||||
|
||||
### ⛔ UI 设计原则
|
||||
|
||||
@@ -316,7 +339,7 @@ WebSocket 无法设自定义 header → 后端 JWTAuth 支持 `?token=` query pa
|
||||
|
||||
| # | 陷阱 | 解决 |
|
||||
|---|------|------|
|
||||
| Go1 | go build 超时 | `unset proxy + GOPROXY=goproxy.cn + GOTOOLCHAIN=local` |
|
||||
| Go1 | go build 超时 | `unset proxy + GOPROXY=goproxy.cn + GOTOOLCHAIN=auto` |
|
||||
| Go2 | handler 不包裹 Response | 必须 `models.Response{Code:200, Data:...}` |
|
||||
| Go3 | GORM 指针字段 | `*field` 解引用后再用 |
|
||||
| Go4 | Update 复用 CreateRequest | 用 `map[string]interface{}` |
|
||||
|
||||
Reference in new issue
Block a user