2026-05-21 11:20:19 +08:00

4.9 KiB
Raw Blame History

CLAUDE.md - GPU Guard 后端

项目概述

GPU Guard 后端 - 基于 Midway.js + Cool Admin 框架的 GPU 智能管理审核平台后端。

技术栈: Midway.js 3.20 + TypeScript 5.9 + TypeORM + Cool Admin 8.x + MySQL 8+ 端口: 8003 包管理器: pnpm (必须)

重要规定

  1. 所有回答用中文
  2. 需要操作数据库时使用 MCP 工具
  3. 遵循 Cool Admin 框架约定(见下方)

常用命令

pnpm i                    # 安装依赖
pnpm dev                  # 启动开发服务器 (端口 8003)
npm run build             # 构建
npm run start             # 生产启动

数据库配置

环境 配置文件 数据库
开发 src/config/config.local.ts MySQL cpu_guard
生产 src/config/config.prod.ts MySQL cpu_guard

重要: 生产环境不要开启 synchronize: true

Cool Admin 后端开发规范

新增模块标准流程

src/modules/{模块名}/
├── config.ts              # 模块配置
├── entity/
│   └── {实体名}.ts        # TypeORM Entity
├── service/
│   └── {实体名}.ts        # 业务逻辑 Service
└── controller/admin/
    └── {实体名}.ts        # Admin API Controller

创建 Entity

import { BaseEntity } from '../../base/entity/base.js';
import { Column, Entity, Index } from 'typeorm';

@Entity('project_info')  // 表名
export class ProjectInfoEntity extends BaseEntity {
  // BaseEntity 已提供: id, createTime, updateTime, tenantId

  @Column({ comment: '名称' })
  name: string;

  @Column({ comment: '状态', default: 0 })
  status: number;

  @Column({ comment: '日期', type: 'date', nullable: true })
  startDate: string;

  @Column({ comment: 'JSON配置', type: 'json', nullable: true })
  config: any;
}

注册 Entity:src/entities.ts 中添加 import 和数组项。

创建 Controller

import { Provide } from '@midwayjs/core';
import { CoolController, BaseController } from '@cool-midway/core';
import { ProjectInfoEntity } from '../../entity/info';
import { ProjectInfoService } from '../../service/info';

@Provide()
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'list', 'page'],
  entity: ProjectInfoEntity,
  service: ProjectInfoService,
  pageQueryOp: {
    keyWordLikeFields: ['name'],
    fieldEq: ['status'],
    addOrderBy: { createTime: 'DESC' },
  },
})
export class AdminProjectInfoController extends BaseController {
  // 自定义接口
  @Get('/custom', { summary: '自定义接口' })
  async custom(@Query('id') id: number) {
    return this.ok(await this.service.customMethod(id));
  }
}

api 数组可选值: add, delete, update, info, list, page pageQueryOp 配置:

  • keyWordLikeFields: 支持 keyWord 模糊搜索的字段
  • fieldEq: 支持精确匹配的字段(前端传同名参数即可过滤)
  • addOrderBy: 默认排序

创建 Service

import { Provide } from '@midwayjs/core';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Repository } from 'typeorm';
import { ProjectInfoEntity } from '../entity/info';

@Provide()
export class ProjectInfoService extends BaseService {
  @InjectEntityModel(ProjectInfoEntity)
  projectInfoEntity: Repository<ProjectInfoEntity>;

  async customMethod(id: number) {
    return this.projectInfoEntity.findOneBy({ id });
  }
}

模块清单

模块 Entity 数量 关键表
base 11 base_sys_user, base_sys_role, base_sys_menu, base_sys_department, base_sys_param
netaclaw 5 netaclaw_agent, netaclaw_session, netaclaw_message, netaclaw_skill, netaclaw_model_channel
user 3 user_info, user_wx, user_address
task 2 task_info, task_log
space 2 space_info, space_type
dict 2 dict_type, dict_info
notification 2 notification_message_log, notification_user
plugin 1 plugin_info
recycle 1 recycle_data
demo 1 demo_goods

NetaClaw AI 引擎

位于 src/modules/netaclaw/,核心组件:

组件 路径 用途
Agent 运行时 runtime/agent.ts ReAct 循环 (Think→Act→Observe)
模型选择 runtime/model_selection.ts provider:model 解析
WebSocket 网关 gateway/session.ts Socket.IO 实时通信
LLM 提供商 plugins/llm_providers/ OpenAI/Anthropic/DeepSeek 适配
工具系统 plugins/tools/ TypeBox Schema 工具定义
模型渠道 service/model_channel.ts 渠道凭证管理与解析

开发规范

  • 文件名: 下划线法 (model_channel.ts)
  • Entity 字段: 驼峰法 (modelConfig)
  • 注释: 中文
  • Entity: 继承 BaseEntity不使用外键
  • Controller: @CoolController 自动生成 CRUD
  • 响应格式: 成功用 this.ok(data),失败用 this.fail('message')