演示

AI 注解

@AITool 与实体级 AI 扫描控制注解。

@AITool

工具名必须使用 kebab-case。需提供 requiredApiPermission、argParser 与 OpenAI 风格的 toolDetail。

TSXai-tool
1import { AITool, Service } from "@quan-erp/shared-backend-core"; 2 3@Service() 4export class ExchangeRateService { 5 @AITool({ 6 requiredApiPermission: [{ method: "get", url: "/exchange-rate/" }], 7 argParser: (args) => [args.fromId, args.toId], 8 toolDetail: { 9 type: "function", 10 function: { 11 name: "get-rate", 12 description: "Get exchange rates", 13 parameters: { /* JSON schema */ }, 14 }, 15 }, 16 }) 17 async getRate(fromId: number, toId: number) { /* … */ } 18}

实体 AI 注解

控制 AI 引擎在 TypeORM 实体上可扫描的内容。表名需以 metadata.name 前缀,实体需继承 BaseEntity。

  • @AIEntityInfo({ description }) — 为 AI 描述该实体
  • @AIExcludeEntity() — 将整个实体从 AI 索引中隐藏
  • @AIExcludeColumn() — 隐藏敏感列(密码、机密等)
TSXentity
1import { 2 AIEntityInfo, 3 AIExcludeColumn, 4 BaseEntity, 5} from "@quan-erp/shared-backend-core"; 6import { Column, Entity } from "typeorm"; 7import metadata from "../../module.metadata.json" with { type: "json" }; 8 9@AIEntityInfo({ description: "User credentials store" }) 10@Entity(`${metadata.name}_credential`) 11export class CredentialEntity extends BaseEntity { 12 @AIExcludeColumn() 13 @Column({ type: "varchar", select: false }) 14 password: string; 15}