dootask/docs/events-map.md
kuaifan a19822a617 feat(ai-assistant): 新增 close_app 动作支持关闭当前应用窗口
打开微应用后 AI 页面操作默认锁定在该应用 iframe 内部,无法关闭应用本身
(关闭控件在主程序外壳层)。新增外壳层 close_app 动作绕过 iframe 作用域:

- action-executor 注册 close_app,先用 store 状态判断有无打开应用(无则报错
  不假报成功),再经事件总线 observeMicroApp:close 投递给 MicroApps 组件。
- MicroApps 复用现成 onAssistClose(findLast(isOpen)+closeByName)作为该事件
  处理器,关闭最前打开的应用,零重复逻辑。
- page-context-collector 在有微应用打开时向模型注入 close_app 可用动作。
- 同步 ai-kb page-action chunk 与 events-map。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 03:09:38 +00:00

320 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端事件总线注册表
> **本文件由脚本自动生成,请勿手改。**
>
> - 生成命令: `node scripts/gen-events-map.mjs`
> - 扫描范围: `resources/assets/js` 下所有 `.js` / `.vue` 文件(共 267 个)
> - 事件总线: `resources/assets/js/store/events.js`mitt 实例)
> - 仅匹配裸 `emitter.emit/on/off(` 调用;`xxx.emitter.emit(`(如 Quill 内部 emitter不属于本总线已排除
**29** 个静态可解析事件,**121** 处 `emitter.emit/on/off` 调用。
## 事件清单
### `addMeeting`
- **emit10**
- `resources/assets/js/App.vue:420`
- `resources/assets/js/pages/manage.vue:1192`
- `resources/assets/js/pages/manage.vue:1199`
- `resources/assets/js/pages/manage/application.vue:1181`
- `resources/assets/js/pages/manage/application.vue:1187`
- `resources/assets/js/pages/manage/components/ChatInput/index.vue:1882`
- `resources/assets/js/pages/manage/components/DialogView/index.vue:621`
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:2012`
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:2020`
- `resources/assets/js/pages/manage/messenger.vue:1219`
- **on1**
- `resources/assets/js/pages/manage/components/MeetingManager/index.vue:187`
- **off1**
- `resources/assets/js/pages/manage/components/MeetingManager/index.vue:191`
### `addTask`
- **emit3**
- `resources/assets/js/pages/manage/calendar.vue:255`
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:3508`
- `resources/assets/js/pages/manage/components/ProjectPanel.vue:1357`
- **on1**
- `resources/assets/js/pages/manage.vue:592`
- **off1**
- `resources/assets/js/pages/manage.vue:610`
### `aiAssistantClosed`
- **emit1**
- `resources/assets/js/components/AIAssistant/index.vue:442`
- **on1**
- `resources/assets/js/components/AIAssistant/float-button.vue:154`
- **off1**
- `resources/assets/js/components/AIAssistant/float-button.vue:162`
### `aiOperationRequest`
- **emit1**
- `resources/assets/js/store/actions.js:4752`
- **on1**
- `resources/assets/js/components/AIAssistant/float-button.vue:155`
- **off1**
- `resources/assets/js/components/AIAssistant/float-button.vue:163`
### `clickAgainDialog`
- **emit1**
- `resources/assets/js/components/Mobile/Tabbar.vue:182`
- **on1**
- `resources/assets/js/pages/manage/messenger.vue:344`
- **off1**
- `resources/assets/js/pages/manage/messenger.vue:348`
### `createGroup`
- **emit3**
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:2866`
- `resources/assets/js/pages/manage/components/UserDetail.vue:288`
- `resources/assets/js/pages/manage/messenger.vue:1224`
- **on1**
- `resources/assets/js/pages/manage.vue:593`
- **off1**
- `resources/assets/js/pages/manage.vue:611`
### `dialogMsgPush`
- **emit1**
- `resources/assets/js/store/actions.js:4823`
- **on2**
- `resources/assets/js/components/Mobile/Tabbar.vue:49`
- `resources/assets/js/pages/manage.vue:594`
- **off2**
- `resources/assets/js/components/Mobile/Tabbar.vue:53`
- `resources/assets/js/pages/manage.vue:612`
### `handleMoveTop`
- **emit2**
- `resources/assets/js/store/actions.js:2698`
- `resources/assets/js/store/actions.js:3691`
- **on2**
- `resources/assets/js/pages/manage/components/DialogModal.vue:41`
- `resources/assets/js/pages/manage/components/TaskModal.vue:49`
- **off2**
- `resources/assets/js/pages/manage/components/DialogModal.vue:45`
- `resources/assets/js/pages/manage/components/TaskModal.vue:53`
### `observeMicroApp:close`
- **emit1**
- `resources/assets/js/components/AIAssistant/action-executor.js:234`
- **on1**
- `resources/assets/js/components/MicroApps/index.vue:145`
- **off1**
- `resources/assets/js/components/MicroApps/index.vue:151`
### `observeMicroApp:open`
- **emit1**
- `resources/assets/js/store/actions.js:5321`
- **on1**
- `resources/assets/js/components/MicroApps/index.vue:144`
- **off1**
- `resources/assets/js/components/MicroApps/index.vue:150`
### `observeMicroApp:updatedOrUninstalled`
- **emit1**
- `resources/assets/js/store/mutations.js:429`
- **on1**
- `resources/assets/js/components/MicroApps/index.vue:146`
- **off1**
- `resources/assets/js/components/MicroApps/index.vue:152`
### `openAIAssistant`
- **emit7**
- `resources/assets/js/components/AIAssistant/float-button.vue:476`
- `resources/assets/js/components/SearchBox.vue:582`
- `resources/assets/js/pages/manage.vue:1223`
- `resources/assets/js/pages/manage/components/ChatInput/index.vue:1925`
- `resources/assets/js/pages/manage/components/ReportDetail.vue:176`
- `resources/assets/js/pages/manage/components/ReportEdit.vue:267`
- `resources/assets/js/pages/manage/components/TaskAdd.vue:710`
- **on1**
- `resources/assets/js/components/AIAssistant/index.vue:382`
- **off1**
- `resources/assets/js/components/AIAssistant/index.vue:389`
### `openAIAssistantGlobal`
- **emit1**
- `resources/assets/js/pages/manage.vue:1211`
- **on1**
- `resources/assets/js/components/AIAssistant/float-button.vue:153`
- **off1**
- `resources/assets/js/components/AIAssistant/float-button.vue:161`
### `openDownloadClient`
- **emit1**
- `resources/assets/js/pages/manage.vue:1092`
- **on1**
- `resources/assets/js/components/RightBottom.vue:73`
- **off1**
- `resources/assets/js/components/RightBottom.vue:78`
### `openFavorite`
- **emit1**
- `resources/assets/js/pages/manage/application.vue:1054`
- **on1**
- `resources/assets/js/pages/manage.vue:596`
- **off1**
- `resources/assets/js/pages/manage.vue:614`
### `openManageExport`
- **emit1**
- `resources/assets/js/pages/manage/application.vue:1101`
- **on1**
- `resources/assets/js/pages/manage.vue:598`
- **off1**
- `resources/assets/js/pages/manage.vue:616`
### `openMobileNotification`
- **emit1**
- `resources/assets/js/pages/manage.vue:1597`
- **on1**
- `resources/assets/js/components/Mobile/Notification.vue:38`
- **off1**
- `resources/assets/js/components/Mobile/Notification.vue:42`
### `openProjectInvite`
- **emit1**
- `resources/assets/js/App.vue:432`
- **on1**
- `resources/assets/js/pages/manage/components/ProjectInvite.vue:83`
- **off1**
- `resources/assets/js/pages/manage/components/ProjectInvite.vue:87`
### `openRecent`
- **emit1**
- `resources/assets/js/pages/manage/application.vue:1057`
- **on1**
- `resources/assets/js/pages/manage.vue:597`
- **off1**
- `resources/assets/js/pages/manage.vue:615`
### `openReport`
- **emit1**
- `resources/assets/js/pages/manage/application.vue:1051`
- **on1**
- `resources/assets/js/pages/manage.vue:595`
- **off1**
- `resources/assets/js/pages/manage.vue:613`
### `openSearch`
- **emit1**
- `resources/assets/js/pages/manage/dashboard.vue:256`
- **on1**
- `resources/assets/js/components/SearchBox.vue:128`
- **off1**
- `resources/assets/js/components/SearchBox.vue:132`
### `openUser`
- **emit4**
- `resources/assets/js/components/UserAvatar/index.vue:184`
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:2935`
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:4485`
- `resources/assets/js/pages/manage/messenger.vue:1229`
- **on1**
- `resources/assets/js/pages/manage/components/UserDetail.vue:166`
- **off1**
- `resources/assets/js/pages/manage/components/UserDetail.vue:170`
### `receiveTask`
- **emit2**
- `resources/assets/js/pages/manage/components/ProjectPanel.vue:1775`
- `resources/assets/js/pages/manage/components/TaskRow.vue:280`
- **on1**
- `resources/assets/js/pages/manage/components/TaskDetail.vue:738`
- **off1**
- `resources/assets/js/pages/manage/components/TaskDetail.vue:745`
### `streamMsgData`
- **emit1**
- `resources/assets/js/store/actions.js:4440`
- **on1**
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:943`
- **off1**
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:953`
### `taskRelationUpdate`
- **emit1**
- `resources/assets/js/store/actions.js:4963`
- **on1**
- `resources/assets/js/pages/manage/components/TaskDetail.vue:739`
- **off1**
- `resources/assets/js/pages/manage/components/TaskDetail.vue:746`
### `updateNotification`
- **emit2**
- `resources/assets/js/pages/manage.vue:1089`
- `resources/assets/js/pages/manage/setting/index.vue:191`
- **on1**
- `resources/assets/js/components/RightBottom.vue:65`
- **off1**
- `resources/assets/js/components/RightBottom.vue:77`
### `useSSOLogin`
- **emit1**
- `resources/assets/js/components/RightBottom.vue:231`
- **on1**
- `resources/assets/js/pages/login.vue:219`
- **off1**
- `resources/assets/js/pages/login.vue:224`
### `userActive`
- **emit3**
- `resources/assets/js/store/actions.js:841`
- `resources/assets/js/store/actions.js:923`
- `resources/assets/js/store/actions.js:4740`
- **on1**
- `resources/assets/js/components/UserAvatar/index.vue:43`
- **off1**
- `resources/assets/js/components/UserAvatar/index.vue:47`
### `websocketMsg`
- **emit1**
- `resources/assets/js/store/actions.js:4757`
- **on2**
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:942`
- `resources/assets/js/pages/manage/components/FileContent.vue:202`
- **off2**
- `resources/assets/js/pages/manage/components/DialogWrapper.vue:954`
- `resources/assets/js/pages/manage/components/FileContent.vue:225`
## 动态事件名(无法静态解析)
以下调用的第一参数不是字符串字面量,无法静态解析事件名:
- `resources/assets/js/components/MicroApps/index.vue:375``emitter.emit(actionName...)`
## 统计
- 事件总数(静态可解析): **29**
- 只 emit 无 on疑似死事件: **0**
- 只 on 无 emit无人发射: **0**
- 动态事件名调用: **1**