diff --git a/n8n-n8n-1.109.2/n8n-20250908-141135.log b/n8n-n8n-1.109.2/n8n-20250908-141135.log new file mode 100644 index 00000000..d4221caa --- /dev/null +++ b/n8n-n8n-1.109.2/n8n-20250908-141135.log @@ -0,0 +1,23 @@ + +> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2 +> run-script-os + + +> n8n-monorepo@1.109.2 start:default +> cd packages/cli/bin && ./n8n + +Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false. +Initializing n8n process +n8n ready on ::, port 5678 +n8n Task Broker ready on 127.0.0.1, port 5679 +Initializing AuthRolesService... +AuthRolesService initialized successfully. +[license SDK] Skipping renewal on init: license cert is not initialized +Registered runner "JS Task Runner" (4d6piYiAtXgDD2wECgTZc) +Version: 1.109.2 +Locale: zh-CN + +Editor is now accessible via: +http://localhost:5678 +(node:12101) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead. +(Use `node --trace-deprecation ...` to show where the warning was created) diff --git a/web_frontend/exhibition-demo/image/Agent_BG.jpg b/web_frontend/exhibition-demo/image/Agent_BG.jpg new file mode 100644 index 00000000..9e6eaae1 Binary files /dev/null and b/web_frontend/exhibition-demo/image/Agent_BG.jpg differ diff --git a/web_frontend/exhibition-demo/node_modules/.package-lock.json b/web_frontend/exhibition-demo/node_modules/.package-lock.json index 5522f1de..0298e9fe 100644 --- a/web_frontend/exhibition-demo/node_modules/.package-lock.json +++ b/web_frontend/exhibition-demo/node_modules/.package-lock.json @@ -2121,6 +2121,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/LICENSE b/web_frontend/exhibition-demo/node_modules/fsevents/LICENSE new file mode 100644 index 00000000..5d70441c --- /dev/null +++ b/web_frontend/exhibition-demo/node_modules/fsevents/LICENSE @@ -0,0 +1,22 @@ +MIT License +----------- + +Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/README.md b/web_frontend/exhibition-demo/node_modules/fsevents/README.md new file mode 100644 index 00000000..50373a03 --- /dev/null +++ b/web_frontend/exhibition-demo/node_modules/fsevents/README.md @@ -0,0 +1,89 @@ +# fsevents + +Native access to MacOS FSEvents in [Node.js](https://nodejs.org/) + +The FSEvents API in MacOS allows applications to register for notifications of +changes to a given directory tree. It is a very fast and lightweight alternative +to kqueue. + +This is a low-level library. For a cross-platform file watching module that +uses fsevents, check out [Chokidar](https://github.com/paulmillr/chokidar). + +## Usage + +```sh +npm install fsevents +``` + +Supports only **Node.js v8.16 and higher**. + +```js +const fsevents = require('fsevents'); + +// To start observation +const stop = fsevents.watch(__dirname, (path, flags, id) => { + const info = fsevents.getInfo(path, flags); +}); + +// To end observation +stop(); +``` + +> **Important note:** The API behaviour is slightly different from typical JS APIs. The `stop` function **must** be +> retrieved and stored somewhere, even if you don't plan to stop the watcher. If you forget it, the garbage collector +> will eventually kick in, the watcher will be unregistered, and your callbacks won't be called anymore. + +The callback passed as the second parameter to `.watch` get's called whenever the operating system detects a +a change in the file system. It takes three arguments: + +###### `fsevents.watch(dirname: string, (path: string, flags: number, id: string) => void): () => Promise` + + * `path: string` - the item in the filesystem that have been changed + * `flags: number` - a numeric value describing what the change was + * `id: string` - an unique-id identifying this specific event + + Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down. + +###### `fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo` + +The `getInfo` function takes the `path`, `flags` and `id` arguments and converts those parameters into a structure +that is easier to digest to determine what the change was. + +The `FsEventsInfo` has the following shape: + +```js +/** + * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent + * @typedef {'file'|'directory'|'symlink'} FsEventsType + */ +{ + "event": "created", // {FsEventsEvent} + "path": "file.txt", + "type": "file", // {FsEventsType} + "changes": { + "inode": true, // Had iNode Meta-Information changed + "finder": false, // Had Finder Meta-Data changed + "access": false, // Had access permissions changed + "xattrs": false // Had xAttributes changed + }, + "flags": 0x100000000 +} +``` + +## Changelog + +- v2.3 supports Apple Silicon ARM CPUs +- v2 supports node 8.16+ and reduces package size massively +- v1.2.8 supports node 6+ +- v1.2.7 supports node 4+ + +## Troubleshooting + +- I'm getting `EBADPLATFORM` `Unsupported platform for fsevents` error. +- It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default. + +## License + +The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file. + +Visit our [GitHub page](https://github.com/fsevents/fsevents) and [NPM Page](https://npmjs.org/package/fsevents) diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.d.ts b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.d.ts new file mode 100644 index 00000000..2723c048 --- /dev/null +++ b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.d.ts @@ -0,0 +1,46 @@ +declare type Event = "created" | "cloned" | "modified" | "deleted" | "moved" | "root-changed" | "unknown"; +declare type Type = "file" | "directory" | "symlink"; +declare type FileChanges = { + inode: boolean; + finder: boolean; + access: boolean; + xattrs: boolean; +}; +declare type Info = { + event: Event; + path: string; + type: Type; + changes: FileChanges; + flags: number; +}; +declare type WatchHandler = (path: string, flags: number, id: string) => void; +export declare function watch(path: string, handler: WatchHandler): () => Promise; +export declare function watch(path: string, since: number, handler: WatchHandler): () => Promise; +export declare function getInfo(path: string, flags: number): Info; +export declare const constants: { + None: 0x00000000; + MustScanSubDirs: 0x00000001; + UserDropped: 0x00000002; + KernelDropped: 0x00000004; + EventIdsWrapped: 0x00000008; + HistoryDone: 0x00000010; + RootChanged: 0x00000020; + Mount: 0x00000040; + Unmount: 0x00000080; + ItemCreated: 0x00000100; + ItemRemoved: 0x00000200; + ItemInodeMetaMod: 0x00000400; + ItemRenamed: 0x00000800; + ItemModified: 0x00001000; + ItemFinderInfoMod: 0x00002000; + ItemChangeOwner: 0x00004000; + ItemXattrMod: 0x00008000; + ItemIsFile: 0x00010000; + ItemIsDir: 0x00020000; + ItemIsSymlink: 0x00040000; + ItemIsHardlink: 0x00100000; + ItemIsLastHardlink: 0x00200000; + OwnEvent: 0x00080000; + ItemCloned: 0x00400000; +}; +export {}; diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.js b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.js new file mode 100644 index 00000000..198da98e --- /dev/null +++ b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.js @@ -0,0 +1,83 @@ +/* + ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + ** Licensed under MIT License. + */ + +/* jshint node:true */ +"use strict"; + +if (process.platform !== "darwin") { + throw new Error(`Module 'fsevents' is not compatible with platform '${process.platform}'`); +} + +const Native = require("./fsevents.node"); +const events = Native.constants; + +function watch(path, since, handler) { + if (typeof path !== "string") { + throw new TypeError(`fsevents argument 1 must be a string and not a ${typeof path}`); + } + if ("function" === typeof since && "undefined" === typeof handler) { + handler = since; + since = Native.flags.SinceNow; + } + if (typeof since !== "number") { + throw new TypeError(`fsevents argument 2 must be a number and not a ${typeof since}`); + } + if (typeof handler !== "function") { + throw new TypeError(`fsevents argument 3 must be a function and not a ${typeof handler}`); + } + + let instance = Native.start(Native.global, path, since, handler); + if (!instance) throw new Error(`could not watch: ${path}`); + return () => { + const result = instance ? Promise.resolve(instance).then(Native.stop) : Promise.resolve(undefined); + instance = undefined; + return result; + }; +} + +function getInfo(path, flags) { + return { + path, + flags, + event: getEventType(flags), + type: getFileType(flags), + changes: getFileChanges(flags), + }; +} + +function getFileType(flags) { + if (events.ItemIsFile & flags) return "file"; + if (events.ItemIsDir & flags) return "directory"; + if (events.MustScanSubDirs & flags) return "directory"; + if (events.ItemIsSymlink & flags) return "symlink"; +} +function anyIsTrue(obj) { + for (let key in obj) { + if (obj[key]) return true; + } + return false; +} +function getEventType(flags) { + if (events.ItemRemoved & flags) return "deleted"; + if (events.ItemRenamed & flags) return "moved"; + if (events.ItemCreated & flags) return "created"; + if (events.ItemModified & flags) return "modified"; + if (events.RootChanged & flags) return "root-changed"; + if (events.ItemCloned & flags) return "cloned"; + if (anyIsTrue(flags)) return "modified"; + return "unknown"; +} +function getFileChanges(flags) { + return { + inode: !!(events.ItemInodeMetaMod & flags), + finder: !!(events.ItemFinderInfoMod & flags), + access: !!(events.ItemChangeOwner & flags), + xattrs: !!(events.ItemXattrMod & flags), + }; +} + +exports.watch = watch; +exports.getInfo = getInfo; +exports.constants = events; diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.node b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.node new file mode 100755 index 00000000..1cc3345e Binary files /dev/null and b/web_frontend/exhibition-demo/node_modules/fsevents/fsevents.node differ diff --git a/web_frontend/exhibition-demo/node_modules/fsevents/package.json b/web_frontend/exhibition-demo/node_modules/fsevents/package.json new file mode 100644 index 00000000..5d0ee15e --- /dev/null +++ b/web_frontend/exhibition-demo/node_modules/fsevents/package.json @@ -0,0 +1,62 @@ +{ + "name": "fsevents", + "version": "2.3.3", + "description": "Native Access to MacOS FSEvents", + "main": "fsevents.js", + "types": "fsevents.d.ts", + "os": [ + "darwin" + ], + "files": [ + "fsevents.d.ts", + "fsevents.js", + "fsevents.node" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + }, + "scripts": { + "clean": "node-gyp clean && rm -f fsevents.node", + "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean", + "test": "/bin/bash ./test.sh 2>/dev/null", + "prepublishOnly": "npm run build" + }, + "repository": { + "type": "git", + "url": "https://github.com/fsevents/fsevents.git" + }, + "keywords": [ + "fsevents", + "mac" + ], + "contributors": [ + { + "name": "Philipp Dunkel", + "email": "pip@pipobscure.com" + }, + { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl" + }, + { + "name": "Elan Shankar", + "email": "elan.shanker@gmail.com" + }, + { + "name": "Miroslav Bajtoš", + "email": "mbajtoss@gmail.com" + }, + { + "name": "Paul Miller", + "url": "https://paulmillr.com" + } + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/fsevents/fsevents/issues" + }, + "homepage": "https://github.com/fsevents/fsevents", + "devDependencies": { + "node-gyp": "^9.4.0" + } +} diff --git a/web_frontend/exhibition-demo/src/components/ResultModal.tsx b/web_frontend/exhibition-demo/src/components/ResultModal.tsx index dad21a3c..34aa24d5 100644 --- a/web_frontend/exhibition-demo/src/components/ResultModal.tsx +++ b/web_frontend/exhibition-demo/src/components/ResultModal.tsx @@ -142,7 +142,7 @@ const ResultModal: React.FC = ({ isOpen, onClose, onViewDetail {/* 操作按钮 */}
= ({ onStart }) => { return ( -
-
+
+ {/* 背景图片和蒙版 */} +
+
+
+
+
+ + {/* 主内容 */} +
= ({ onStart }) => { transition={{ delay: 0.4 }} >

- AI 会展策划系统 + DuoDuo Agent

多Agent协同 · 智能生成 · 专业方案 diff --git a/web_frontend/exhibition-demo/src/pages/WorkflowPageV4.tsx b/web_frontend/exhibition-demo/src/pages/WorkflowPageV4.tsx index 94333c88..5d413c40 100644 --- a/web_frontend/exhibition-demo/src/pages/WorkflowPageV4.tsx +++ b/web_frontend/exhibition-demo/src/pages/WorkflowPageV4.tsx @@ -767,11 +767,28 @@ const WorkflowPageV4 = () => { }; return ( -

+
+ {/* 背景图片和蒙版 */} +
+
+
+
+ + {/* 主内容容器 */} +
{/* 顶部控制栏 */}
-

AI会展策划系统 - 多Agent协同演示

+

DuoDuo Agent - 多智能体协同生成·专业方案

{/* 主内容区 */} -
+
{/* 左侧:n8n工作流 */} -
+
@@ -1026,6 +1043,7 @@ const WorkflowPageV4 = () => {
+
{/* 弹窗组件 */}
-
- +
+
-
+
0+
参展企业
-
- +
+
-
+
0+
预计观众
-
- +
+
-
+
0亿+
预计成交额
-
- +
+
-
+
0+
专业论坛
@@ -316,61 +316,58 @@

展会亮点

-
+
- 小米汽车 -
-
-
热门展区
+ 小米汽车 +
+
热门展区
-

全产业链展示

+

全产业链展示

涵盖整车制造、核心零部件、充电设施、智能网联等全产业链环节,打造一站式采购平台。

- - 了解更多 + + 了解更多
-
+
- 试驾体验 -
-
-
互动体验
+ 试驾体验 +
+
互动体验
-

创新技术体验

+

创新技术体验

设置自动驾驶体验区、智能交通演示区,让观众亲身体验最新科技成果。

- - 了解更多 + + 了解更多
-
+
- 论坛峰会 -
-
-
主题论坛
+ 论坛峰会 +
+
主题论坛
-

高端论坛峰会

+

高端论坛峰会

汇聚行业领袖、专家学者,探讨产业发展趋势,发布权威研究报告。

- - 了解更多 + + 了解更多
@@ -456,8 +453,8 @@
展会内部 -
-
+
+

展馆内部参观

宽敞明亮的展示空间,科技感十足

@@ -466,8 +463,8 @@
签到处 -
-
+
+

智能签到系统

快速便捷的入场体验

@@ -476,8 +473,8 @@
展品展示 -
-
+
+

明星展品

最新款新能源汽车亮相

@@ -489,19 +486,35 @@
展品1 -
+
+
+

智能驾驶展示

+
+
展品2 -
+
+
+

充电技术革新

+
+
展品3 -
+
+
+

电池技术展览

+
+
展品4 -
+
+
+

智慧交通系统

+
+
diff --git a/web_frontend/web_result/pages/budget.html b/web_frontend/web_result/pages/budget.html index 7ee81f33..be474237 100644 --- a/web_frontend/web_result/pages/budget.html +++ b/web_frontend/web_result/pages/budget.html @@ -4,16 +4,191 @@ 预算分析 - 2024长三角国际新能源汽车展 - - + + -