Skip to content

Commit f919edd

Browse files
committed
fix:fix review
1 parent a605953 commit f919edd

4 files changed

Lines changed: 41 additions & 52 deletions

File tree

packages/canvas/DesignCanvas/src/api/useCanvas.ts

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import * as jsonDiffPatch from 'jsondiffpatch'
1515
import DiffMatchPatch from 'diff-match-patch'
1616
import { constants, utils } from '@opentiny/tiny-engine-utils'
1717
import { useHistory, getMetaApi, useMessage } from '@opentiny/tiny-engine-meta-register'
18-
import useAIChat from '../../../container/src/composables/useAIChat'
1918
import type { canvasApi as CanvasApi } from '../../../container/src/container'
2019
import type { Node, RootNode } from '../../../types'
2120
import type {
@@ -85,6 +84,43 @@ const rootSchema = ref([
8584
}
8685
])
8786

87+
// 初始化单个节点的AI状态
88+
const initializeNodeAIStatus = (node: object, initialStatus: Partial<NodeAIStatus> = {}) => {
89+
if (!pageState.nodesStatus[node.id]) {
90+
pageState.nodesStatus[node.id] = {}
91+
}
92+
93+
pageState.nodesStatus[node.id].aiStatus = {
94+
state: 'hidden',
95+
originalNodeData: deepClone(node),
96+
aiModifiedNodeData: undefined,
97+
aiContext: null,
98+
lastAIAction: '',
99+
aiHistory: [],
100+
...initialStatus
101+
}
102+
}
103+
104+
// 初始化所有现有节点的AI状态
105+
const initializeAllNodesAIStatus = () => {
106+
// 递归遍历 pageSchema 的 children 来初始化所有节点的AI状态
107+
const traverseNodes = (nodes: any[]) => {
108+
if (!nodes) return
109+
nodes.forEach((node) => {
110+
if (node.id && !pageState.nodesStatus[node.id]?.aiStatus) {
111+
initializeNodeAIStatus(node)
112+
}
113+
if (Array.isArray(node.children) && node.children.length) {
114+
traverseNodes(node.children)
115+
}
116+
})
117+
}
118+
119+
if (pageState.pageSchema?.children) {
120+
traverseNodes(pageState.pageSchema.children)
121+
}
122+
}
123+
88124
const handleTinyGridColumnsSlots = (node: Node) => {
89125
const columns = Array.isArray(node.props?.columns) ? node.props.columns : []
90126
for (const columnItem of columns) {
@@ -205,7 +241,7 @@ const resetCanvasState = async (state: Partial<PageState> = {}) => {
205241
generateNodesMap(pageState.pageSchema.children, pageState.pageSchema)
206242

207243
// 初始化所有节点的AI状态
208-
useAIChat().initializeAllNodesAIStatus()
244+
initializeAllNodesAIStatus()
209245
}
210246

211247
const diffPatch = jsonDiffPatchInstance.diff(previousSchema, pageState.pageSchema)
@@ -239,7 +275,6 @@ const updatePageSchema = (newPageSchema: any) => {
239275
generateNodesMap(newPageSchema.children, newPageSchema)
240276

241277
// 为新增的节点初始化AI状态(已存在的不覆盖)
242-
const { initializeNodeAIStatus } = useAIChat()
243278
nodesMap.value.forEach(({ node }) => {
244279
if (node.id && !pageState.nodesStatus[node.id]?.aiStatus) {
245280
initializeNodeAIStatus(node)
@@ -428,7 +463,7 @@ const operationTypeMap = {
428463

429464
// 初始化新节点的AI状态
430465
if (newNodeData.id) {
431-
useAIChat().initializeNodeAIStatus(newNodeData)
466+
initializeNodeAIStatus(newNodeData)
432467
}
433468

434469
// 6. 如果新节点有子节点,递归构建 nodeMap
@@ -437,7 +472,6 @@ const operationTypeMap = {
437472
generateNodesMap(newNodeData.children, newNode)
438473

439474
// 递归初始化所有子节点的AI状态
440-
const { initializeNodeAIStatus: initAIStatus } = useAIChat()
441475
const initChildrenAIStatus = (children: Node[]) => {
442476
children.forEach((child) => {
443477
if (child.id) {

packages/canvas/container/src/components/CanvasAction.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -808,9 +808,9 @@ export default {
808808
cancelNodeAILoading(nodeId)
809809
return
810810
}
811-
const params = await buildAIChatRequest(chatContent)
812811
813812
try {
813+
const params = await buildAIChatRequest(chatContent)
814814
const response = await chat(params)
815815
// AI运行完操作和 handleAIChatComplete 一样
816816
applyAIPatches(nodeId, response, chatContent)

packages/canvas/container/src/composables/useAIChat.ts

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -77,47 +77,6 @@ const addNodeAIActionHistory = (nodeId: string, action: string, content: any) =>
7777
})
7878
}
7979

80-
// 初始化单个节点的AI状态
81-
const initializeNodeAIStatus = (node: object, initialStatus: Partial<NodeAIStatus> = {}) => {
82-
const { pageState } = useCanvas()
83-
84-
if (!pageState.nodesStatus[node.id]) {
85-
pageState.nodesStatus[node.id] = {}
86-
}
87-
88-
pageState.nodesStatus[node.id].aiStatus = {
89-
state: 'hidden',
90-
originalNodeData: deepClone(node),
91-
aiModifiedNodeData: undefined,
92-
aiContext: null,
93-
lastAIAction: '',
94-
aiHistory: [],
95-
...initialStatus
96-
}
97-
}
98-
99-
// 初始化所有现有节点的AI状态
100-
const initializeAllNodesAIStatus = () => {
101-
const { pageState } = useCanvas()
102-
103-
// 递归遍历 pageSchema 的 children 来初始化所有节点的AI状态
104-
const traverseNodes = (nodes: any[]) => {
105-
if (!nodes) return
106-
nodes.forEach((node) => {
107-
if (node.id && !pageState.nodesStatus[node.id]?.aiStatus) {
108-
initializeNodeAIStatus(node)
109-
}
110-
if (Array.isArray(node.children) && node.children.length) {
111-
traverseNodes(node.children)
112-
}
113-
})
114-
}
115-
116-
if (pageState.pageSchema?.children) {
117-
traverseNodes(pageState.pageSchema.children)
118-
}
119-
}
120-
12180
// 打开AI助手聊天界面
12281
const openNodeAIChat = (nodeId: string, initialContent: string = '') => {
12382
updateNodeAIStatus(nodeId, {
@@ -743,8 +702,6 @@ export default function () {
743702
updateNodeAIStatus,
744703
getNodeAIStatus,
745704
addNodeAIActionHistory,
746-
initializeNodeAIStatus,
747-
initializeAllNodesAIStatus,
748705
// AI助手状态机函数
749706
openNodeAIChat,
750707
closeNodeAIHelper,

packages/toolbars/save/src/js/aiSaveValidation.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
* 检查是否有未完成的AI修改,如果有则提示用户
44
*/
55

6-
import { useCanvas } from '@opentiny/tiny-engine-meta-register'
7-
import { useMessage } from '@opentiny/tiny-engine-meta-register'
8-
6+
import { useCanvas, useMessage } from '@opentiny/tiny-engine-meta-register'
97
const { publish } = useMessage()
108

119
/**

0 commit comments

Comments
 (0)