Files
gongxue-base/apps/server/src/agent-tools/agent-tools.module.ts
wangziqi 24e0ecbdaf feat(ai): 业务上下文感知与 A2UI 链路统一
- 新增代码内业务上下文元数据层(实体字典 + 三大闭环工作流)
- 新增 get_business_context / get_entity_schema / get_pending_tasks 运行时工具
- SYSTEM_PROMPT 与技能目录改为先查业务流程/待办再执行
- A2UI 增加 ai_a2ui_submissions 幂等表、表单过期、ui.artifact 事件
- 提交回灌携带 submissionId / fieldErrors / 下一步建议
- 前端 uiArtifacts 归一化与过期表单禁用
2026-08-06 15:23:23 +08:00

147 lines
6.4 KiB
TypeScript

import { Module, OnModuleInit } from '@nestjs/common';
import { StudentsModule } from '../students/students.module';
import { ClassesModule } from '../classes/classes.module';
import { AttendanceModule } from '../attendance/attendance.module';
import { RoomsModule } from '../rooms/rooms.module';
import { BillsModule } from '../bills/bills.module';
import { DashboardModule } from '../dashboard/dashboard.module';
import { AgentToolRegistry } from './agent-tool.registry';
import { AgentToolExecutor } from './agent-tool.executor';
import { SearchStudentsTool } from './tools/search-students.tool';
import { GetStudentBasicTool } from './tools/get-student-basic.tool';
import { AgentBusinessScopeFactory } from './agent-business-scope.factory';
import { SearchClassesTool } from './tools/search-classes.tool';
import { GetAttendanceSummaryTool } from './tools/get-attendance-summary.tool';
import { SearchRoomsTool } from './tools/search-rooms.tool';
import { GetRoomOccupancySummaryTool } from './tools/get-room-occupancy-summary.tool';
import { SearchBillsTool } from './tools/search-bills.tool';
import { GetDashboardStatsTool } from './tools/get-dashboard-stats.tool';
import { CreateStudentTool } from './tools/create-student.tool';
import { UpdateStudentsTool } from './tools/update-students.tool';
import { SearchExamsTool } from './tools/search-exams.tool';
import { SearchSchedulesTool } from './tools/search-schedules.tool';
import { SearchDepositsTool } from './tools/search-deposits.tool';
import { SearchExpensesTool } from './tools/search-expenses.tool';
import { SearchClassroomsTool } from './tools/search-classrooms.tool';
import { SearchClassroomRentalsTool } from './tools/search-classroom-rentals.tool';
import { GetSyncStatusTool } from './tools/get-sync-status.tool';
import { ExamsModule } from '../exams/exams.module';
import { SchedulesModule } from '../schedules/schedules.module';
import { DepositsModule } from '../deposits/deposits.module';
import { ExpensesModule } from '../expenses/expenses.module';
import { ClassroomsModule } from '../classrooms/classrooms.module';
import { ClassroomRentalsModule } from '../classroom-rentals/classroom-rentals.module';
import { SyncModule } from '../sync/sync.module';
import { BusinessContextService } from '../agent-context/business-context.service';
import { PendingTasksService } from '../agent-context/pending-tasks.service';
import { GetBusinessContextTool, GetEntitySchemaTool } from '../agent-context/get-business-context.tool';
import { GetPendingTasksTool } from '../agent-context/get-pending-tasks.tool';
/**
* Agent Tools feature module.
*
* Provides a provider-neutral tool executor for LLM agent frameworks.
* SDK consumers interact ONLY with {@link AgentToolExecutor}.
*
* `AgentToolRegistry` is an internal provider — it is NOT exported from
* this module. All tool listing and execution goes through the executor,
* which enforces double-check authorization, audit logging, and context
* trust validation.
*
* Imports `StudentsModule` for student data access and relies on the
* globally available `AuthorizationModule` and `OperationLogsModule`.
*/
@Module({
imports: [
StudentsModule,
ClassesModule,
AttendanceModule,
RoomsModule,
BillsModule,
DashboardModule,
ExamsModule,
SchedulesModule,
DepositsModule,
ExpensesModule,
ClassroomsModule,
ClassroomRentalsModule,
SyncModule,
],
providers: [
AgentToolRegistry,
AgentToolExecutor,
BusinessContextService,
PendingTasksService,
GetBusinessContextTool,
GetEntitySchemaTool,
GetPendingTasksTool,
SearchStudentsTool,
GetStudentBasicTool,
AgentBusinessScopeFactory,
SearchClassesTool,
GetAttendanceSummaryTool,
SearchRoomsTool,
GetRoomOccupancySummaryTool,
SearchBillsTool,
GetDashboardStatsTool,
CreateStudentTool,
UpdateStudentsTool,
SearchExamsTool,
SearchSchedulesTool,
SearchDepositsTool,
SearchExpensesTool,
SearchClassroomsTool,
SearchClassroomRentalsTool,
GetSyncStatusTool,
],
exports: [AgentToolExecutor],
})
export class AgentToolsModule implements OnModuleInit {
constructor(
private readonly registry: AgentToolRegistry,
private readonly searchTool: SearchStudentsTool,
private readonly getTool: GetStudentBasicTool,
private readonly searchClassesTool: SearchClassesTool,
private readonly attendanceSummaryTool: GetAttendanceSummaryTool,
private readonly searchRoomsTool: SearchRoomsTool,
private readonly roomOccupancyTool: GetRoomOccupancySummaryTool,
private readonly searchBillsTool: SearchBillsTool,
private readonly dashboardStatsTool: GetDashboardStatsTool,
private readonly createStudentTool: CreateStudentTool,
private readonly updateStudentsTool: UpdateStudentsTool,
private readonly searchExamsTool: SearchExamsTool,
private readonly searchSchedulesTool: SearchSchedulesTool,
private readonly searchDepositsTool: SearchDepositsTool,
private readonly searchExpensesTool: SearchExpensesTool,
private readonly searchClassroomsTool: SearchClassroomsTool,
private readonly searchClassroomRentalsTool: SearchClassroomRentalsTool,
private readonly getSyncStatusTool: GetSyncStatusTool,
private readonly businessContextTool: GetBusinessContextTool,
private readonly entitySchemaTool: GetEntitySchemaTool,
private readonly pendingTasksTool: GetPendingTasksTool,
) {}
onModuleInit(): void {
this.registry.register(this.businessContextTool);
this.registry.register(this.entitySchemaTool);
this.registry.register(this.pendingTasksTool);
this.registry.register(this.searchTool);
this.registry.register(this.getTool);
this.registry.register(this.searchClassesTool);
this.registry.register(this.attendanceSummaryTool);
this.registry.register(this.searchRoomsTool);
this.registry.register(this.roomOccupancyTool);
this.registry.register(this.searchBillsTool);
this.registry.register(this.dashboardStatsTool);
this.registry.register(this.createStudentTool);
this.registry.register(this.updateStudentsTool);
this.registry.register(this.searchExamsTool);
this.registry.register(this.searchSchedulesTool);
this.registry.register(this.searchDepositsTool);
this.registry.register(this.searchExpensesTool);
this.registry.register(this.searchClassroomsTool);
this.registry.register(this.searchClassroomRentalsTool);
this.registry.register(this.getSyncStatusTool);
}
}