feat(frontend): 上线报告协作与多轮 RAG 消息聚合体验
功能说明:\n- 新增报告协作页(Report Collaboration)核心状态层、消息适配与会话面板,支持按节点/阶段选择和协作上下文展示\n- 补齐 report-collaboration API 与类型定义,并接入页面路由/构建路径,形成可运行的协作链路\n- 重构多轮 RAG 与 write/artefact 消息分组逻辑,优化 AgentChat 与 DeepResearch 场景下的消息展示顺序与可读性\n- 新增/更新 DeepResearch 前端页面(Workbench、报告配置、沙箱联动)以承接报告生成与复用能力\n- 增加报表协作相关单测,覆盖事件归并、消息适配与关键 reducer 行为
This commit is contained in:
1 parent
e58da3fbdf
commit
438772f0b7
25 files changed
+1740
-399
No files matched your search
+51
-20
@@ -1,17 +1,48 @@
|
||||
import { existsSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import react from "@vitejs/plugin-react";
|
||||
import { defineConfig } from "vite";
|
||||
import { defineConfig, type Plugin } from "vite";
|
||||
import sourceIdentifierPlugin from "vite-plugin-source-identifier";
|
||||
|
||||
const rootDir = fileURLToPath(new URL(".", import.meta.url));
|
||||
|
||||
// 依赖预构建缓存被重建后(pnpm install / 重复启动 vite / --force),
|
||||
// 残留的旧浏览器标签页仍会按旧版本号(?v=<hash>)请求已删除的 chunk,
|
||||
// 每次都在终端刷 "The file does not exist ... in the optimize deps directory"。
|
||||
// 该插件拦截这类「文件确实不存在」的 deps 请求,返回一段触发 location.reload()
|
||||
// 的模块脚本,让旧页面自愈到新版本;sessionStorage 防止真正的坏页面无限刷新。
|
||||
const staleDepsChunkSelfReload = (): Plugin => ({
|
||||
name: "stale-deps-chunk-self-reload",
|
||||
configureServer(server) {
|
||||
const depsDir = path.join(rootDir, "node_modules", ".vite", "deps");
|
||||
server.middlewares.use((req, res, next) => {
|
||||
const match = /^\/node_modules\/\.vite\/deps\/([^?]+)/.exec(req.url ?? "");
|
||||
if (!match) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
const filePath = path.join(depsDir, decodeURIComponent(match[1]));
|
||||
if (existsSync(filePath)) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
res.setHeader("Content-Type", "application/javascript");
|
||||
res.end(
|
||||
"if(!sessionStorage.getItem('__vite_stale_chunk_reloaded__')){" +
|
||||
"sessionStorage.setItem('__vite_stale_chunk_reloaded__','1');" +
|
||||
"location.reload();}",
|
||||
);
|
||||
});
|
||||
},
|
||||
});
|
||||
// Tailwind 4 emits CSS cascade layers, which require Chrome 99+. Chrome 100
|
||||
// is therefore the practical lower bound for this Win7 legacy build.
|
||||
const LEGACY_CHROME = 100 << 16;
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [sourceIdentifierPlugin(), react()],
|
||||
plugins: [staleDepsChunkSelfReload(), sourceIdentifierPlugin(), react()],
|
||||
css: {
|
||||
// Also used by the production CSS minifier. Development CSS is handled
|
||||
// by the matching PostCSS compatibility pass in postcss.config.js.
|
||||
@@ -21,20 +52,20 @@ export default defineConfig({
|
||||
},
|
||||
},
|
||||
},
|
||||
resolve: {
|
||||
alias: [
|
||||
{
|
||||
// react-syntax-highlighter@16.1.1 exposes an async `sqlMore`
|
||||
// loader, but its own highlight.js@10.x dependency has no
|
||||
// `sql_more` module. Reuse the bundled SQL grammar so Rollup can
|
||||
// resolve every generated language loader without leaving a broken
|
||||
// browser-time external import.
|
||||
find: /^highlight\.js\/lib\/languages\/sql_more$/,
|
||||
replacement: "highlight.js/lib/languages/sql",
|
||||
},
|
||||
{
|
||||
find: "@/env",
|
||||
replacement: path.resolve(rootDir, "src/env.ts"),
|
||||
resolve: {
|
||||
alias: [
|
||||
{
|
||||
// react-syntax-highlighter@16.1.1 exposes an async `sqlMore`
|
||||
// loader, but its own highlight.js@10.x dependency has no
|
||||
// `sql_more` module. Reuse the bundled SQL grammar so Rollup can
|
||||
// resolve every generated language loader without leaving a broken
|
||||
// browser-time external import.
|
||||
find: /^highlight\.js\/lib\/languages\/sql_more$/,
|
||||
replacement: "highlight.js/lib/languages/sql",
|
||||
},
|
||||
{
|
||||
find: "@/env",
|
||||
replacement: path.resolve(rootDir, "src/env.ts"),
|
||||
},
|
||||
{
|
||||
find: "next/navigation",
|
||||
@@ -64,9 +95,9 @@ export default defineConfig({
|
||||
target: "chrome100",
|
||||
},
|
||||
server: {
|
||||
// 与 scripts/env.sh FRONTEND_PORT=5174、圆桌 wujie 嵌入文档一致。
|
||||
port: 5173,
|
||||
// 无界宿主跨域 fetch 子应用静态资源时,Vite 需回显请求的 Origin。
|
||||
cors: true,
|
||||
// 与 scripts/env.sh FRONTEND_PORT=5174、圆桌 wujie 嵌入文档一致。
|
||||
port: 5173,
|
||||
// 无界宿主跨域 fetch 子应用静态资源时,Vite 需回显请求的 Origin。
|
||||
cors: true,
|
||||
},
|
||||
});
|
||||
Reference in new issue
Block a user