| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /**
- * 深度研究功能调试工具
- *
- * 使用方法:
- * 1. 在浏览器控制台导入:import { debugResearch } from './utils/debugResearch'
- * 2. 运行测试:debugResearch.testCreateResearch('测试问题')
- */
- import { researchApi } from '../services/researchApi';
- export const debugResearch = {
- /**
- * 测试创建研究任务
- */
- async testCreateResearch(query: string = '什么是量子计算?') {
- console.group('🔍 测试创建研究任务');
- console.log('查询:', query);
-
- try {
- let messageCount = 0;
- let accumulatedContent = '';
- let lastMessage: any = null;
-
- const startTime = Date.now();
-
- for await (const message of researchApi.createResearch({
- query,
- output_format: 'model_detailed_report'
- })) {
- messageCount++;
- console.log(`📨 消息 #${messageCount}:`, message);
-
- if (message.content) {
- accumulatedContent += message.content;
- console.log(`📝 累积内容长度: ${accumulatedContent.length}`);
- }
-
- lastMessage = message;
-
- if (message.done) {
- console.log('✅ 收到完成标记');
- console.log('Task ID:', message.task_id);
- console.log('累积内容:', accumulatedContent);
- break;
- }
- }
-
- const duration = Date.now() - startTime;
-
- console.log('📊 统计信息:');
- console.log('- 总消息数:', messageCount);
- console.log('- 累积内容长度:', accumulatedContent.length);
- console.log('- 耗时:', `${duration}ms`);
- console.log('- 最后消息:', lastMessage);
-
- if (!lastMessage?.done) {
- console.warn('⚠️ 警告: 未收到完成标记');
- }
-
- if (!lastMessage?.task_id) {
- console.error('❌ 错误: 未收到 task_id');
- }
-
- if (!accumulatedContent) {
- console.error('❌ 错误: 未收到任何内容');
- }
-
- console.groupEnd();
-
- return {
- success: !!lastMessage?.done && !!lastMessage?.task_id,
- messageCount,
- contentLength: accumulatedContent.length,
- duration,
- taskId: lastMessage?.task_id,
- content: accumulatedContent
- };
-
- } catch (error) {
- console.error('❌ 测试失败:', error);
- console.groupEnd();
- throw error;
- }
- },
-
- /**
- * 测试原始 HTTP 请求
- */
- async testRawRequest(query: string = '什么是量子计算?') {
- console.group('🔍 测试原始 HTTP 请求');
-
- const API_BASE_URL = import.meta.env.VITE_API_BASE_URL;
- const url = `${API_BASE_URL}/api/v1/research/create`;
-
- console.log('URL:', url);
- console.log('请求体:', { query, output_format: 'model_detailed_report' });
-
- try {
- const response = await fetch(url, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Authorization': localStorage.getItem('token') || ''
- },
- body: JSON.stringify({
- query,
- output_format: 'model_detailed_report'
- })
- });
-
- console.log('响应状态:', response.status, response.statusText);
- console.log('响应头:', Object.fromEntries(response.headers.entries()));
-
- if (!response.ok) {
- const errorText = await response.text();
- console.error('错误响应:', errorText);
- console.groupEnd();
- return;
- }
-
- const reader = response.body?.getReader();
- if (!reader) {
- console.error('❌ 无法获取 reader');
- console.groupEnd();
- return;
- }
-
- const decoder = new TextDecoder();
- let chunkCount = 0;
- let totalBytes = 0;
-
- while (true) {
- const { done, value } = await reader.read();
- if (done) {
- console.log('✅ 流结束');
- break;
- }
-
- chunkCount++;
- totalBytes += value.length;
-
- const chunk = decoder.decode(value, { stream: true });
- console.log(`📦 Chunk #${chunkCount} (${value.length} bytes):`, chunk);
- }
-
- console.log('📊 统计:');
- console.log('- 总块数:', chunkCount);
- console.log('- 总字节数:', totalBytes);
-
- console.groupEnd();
-
- } catch (error) {
- console.error('❌ 请求失败:', error);
- console.groupEnd();
- throw error;
- }
- },
-
- /**
- * 检查环境配置
- */
- checkConfig() {
- console.group('⚙️ 环境配置检查');
-
- console.log('API Base URL:', import.meta.env.VITE_API_BASE_URL);
- console.log('Token:', localStorage.getItem('token') ? '已设置' : '未设置');
-
- const token = localStorage.getItem('token');
- if (token) {
- try {
- const payload = JSON.parse(atob(token.split('.')[1]));
- console.log('Token 信息:', payload);
- } catch (e) {
- console.error('Token 解析失败');
- }
- }
-
- console.groupEnd();
- }
- };
- // 在开发环境下挂载到 window 对象
- if (import.meta.env.DEV) {
- (window as any).debugResearch = debugResearch;
- console.log('💡 调试工具已加载,使用 window.debugResearch 访问');
- }
|