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

10 KiB
Raw Permalink Blame History

前端事件总线注册表

本文件由脚本自动生成,请勿手改。

  • 生成命令: node scripts/gen-events-map.mjs
  • 扫描范围: resources/assets/js 下所有 .js / .vue 文件(共 267 个)
  • 事件总线: resources/assets/js/store/events.jsmitt 实例)
  • 仅匹配裸 emitter.emit/on/off( 调用;xxx.emitter.emit((如 Quill 内部 emitter不属于本总线已排除

29 个静态可解析事件,121emitter.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:375emitter.emit(actionName...)

统计

  • 事件总数(静态可解析): 29
  • 只 emit 无 on疑似死事件: 0
  • 只 on 无 emit无人发射: 0
  • 动态事件名调用: 1