feat: Excel 导入预检与动态问答,AI 聊天/文件解析体验修复
- imports: 新增 preflight_import 预检报告(判定/分阶段统计/阻断归因/问题/下一步/错误示例),导入任务 settings 落库(映射/校区/更新/重复/未匹配策略),预览应用策略,向导提交写操作日志 - ai-chat: 新增 excel_analyze(ExcelJS)工具,移除附件/上下文截断,start_import_wizard 支持确认参数,ui.import_preflight SSE,预览确认写操作日志 - admin: ImportPreflightCard 渲染与持久化,聊天抽屉布局/侧边栏修复,考勤页 CSS 引入,费用/学生页接口 schema 校验修复
This commit is contained in:
@@ -16,6 +16,7 @@ import { AiFormService } from './ai-form.service';
|
||||
import { AiReviewService } from './ai-review.service';
|
||||
import { AiModelStreamService } from './ai-model-stream.service';
|
||||
import { OfficeCliService } from './office-cli.service';
|
||||
import { OperationLogsService } from '../operation-logs/operation-logs.service';
|
||||
import {
|
||||
AiConversation,
|
||||
AiMessage,
|
||||
@@ -72,7 +73,11 @@ import {
|
||||
markReviewSubmittedOnMessage,
|
||||
} from './ai-chat.submissions';
|
||||
import { denyWriteTool, executeTool } from './ai-chat.tools';
|
||||
import { executeStartImportWizard } from './ai-chat.tool-actions';
|
||||
import {
|
||||
executeExcelAnalyze,
|
||||
executePreflightImport,
|
||||
executeStartImportWizard,
|
||||
} from './ai-chat.tool-actions';
|
||||
import { executeGeneration } from './ai-chat.generation';
|
||||
import {
|
||||
assertGeneratedLength,
|
||||
@@ -108,6 +113,7 @@ export class AiChatService implements AiChatServiceContext {
|
||||
readonly excelReader?: AiExcelReaderService,
|
||||
readonly officeCli?: OfficeCliService,
|
||||
readonly importsService?: ImportsService,
|
||||
readonly opLog?: OperationLogsService,
|
||||
) {}
|
||||
|
||||
listSkills(user: AuthenticatedUser): AgentSkillDescriptor[] {
|
||||
@@ -291,6 +297,24 @@ export class AiChatService implements AiChatServiceContext {
|
||||
return executeStartImportWizard(this, messageId, call, context, emit);
|
||||
}
|
||||
|
||||
executePreflightImport(
|
||||
messageId: number,
|
||||
call: ModelToolCall,
|
||||
userId: number,
|
||||
emit: AiSseEmitter,
|
||||
): Promise<string> {
|
||||
return executePreflightImport(this, messageId, call, userId, emit);
|
||||
}
|
||||
|
||||
executeExcelAnalyze(
|
||||
messageId: number,
|
||||
call: ModelToolCall,
|
||||
userId: number,
|
||||
emit: AiSseEmitter,
|
||||
): Promise<string> {
|
||||
return executeExcelAnalyze(this, messageId, call, userId, emit);
|
||||
}
|
||||
|
||||
executeGeneration(input: GenerationInput): Promise<void> {
|
||||
return executeGeneration(this, input);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user