dootask/docs/events-map.md
kuaifan 383664aef7 chore(quality): 引入 phpstan/ESLint/CI 门禁、Claude hooks 与代码检索地图
- phpstan(larastan ^3.10, level 1 + baseline 封存 86 个存量错误),composer stan / stan-baseline
- ESLint 9 flat config(vue2-essential,存量违规降 warn,error 基线为 0),npm run lint
- CI:.github/workflows/tests.yml(static-checks + phpunit,phpunit 用 kuaifan/php 镜像跑,FFI doo.so 不在仓库)
- Claude Code hooks:编辑 app/ 下 PHP 后自动单文件 phpstan,失败回灌
- 检索地图:routes/api-map.md(doc:api-map 生成,325 接口)、docs/events-map.md(events:map)、types/dootask-globals.d.ts($A 207 方法)、npm run check:lang(存量缺失 93 条,CI 暂非阻塞)
- CLAUDE.md:版本号更正 Laravel 13/PHP 8.4,新增质量门禁、检索地图、架构增量规则章节

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 01:21:22 +00:00

10 KiB
Raw Blame History

前端事件总线注册表

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

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

29 个静态可解析事件,125emitter.emit/on/off 调用。

事件清单

addMeeting

  • emit10
    • resources/assets/js/App.vue:420
    • resources/assets/js/pages/manage.vue:1236
    • resources/assets/js/pages/manage.vue:1243
    • resources/assets/js/pages/manage/application.vue:1188
    • resources/assets/js/pages/manage/application.vue:1194
    • 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:2017
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:2025
    • 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:3513
    • resources/assets/js/pages/manage/components/ProjectPanel.vue:1357
  • on1
    • resources/assets/js/pages/manage.vue:621
  • off1
    • resources/assets/js/pages/manage.vue:641

aiAssistantClosed

  • emit1
    • resources/assets/js/components/AIAssistant/index.vue:420
  • 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:4781
  • on1
    • resources/assets/js/components/AIAssistant/float-button.vue:155
  • off1
    • resources/assets/js/components/AIAssistant/float-button.vue:163

approveDetails

  • emit2
    • resources/assets/js/pages/manage/approve/index.vue:497
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:3826
  • on1
    • resources/assets/js/pages/manage.vue:624
  • off1
    • resources/assets/js/pages/manage.vue:644

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:2871
    • resources/assets/js/pages/manage/components/UserDetail.vue:288
    • resources/assets/js/pages/manage/messenger.vue:1224
  • on1
    • resources/assets/js/pages/manage.vue:622
  • off1
    • resources/assets/js/pages/manage.vue:642

dialogMsgPush

  • emit1
    • resources/assets/js/store/actions.js:4852
  • on2
    • resources/assets/js/components/Mobile/Tabbar.vue:49
    • resources/assets/js/pages/manage.vue:623
  • off2
    • resources/assets/js/components/Mobile/Tabbar.vue:53
    • resources/assets/js/pages/manage.vue:643

handleMoveTop

  • emit2
    • resources/assets/js/store/actions.js:2727
    • resources/assets/js/store/actions.js:3720
  • 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:open

  • emit1
    • resources/assets/js/store/actions.js:5361
  • on1
    • resources/assets/js/components/MicroApps/index.vue:144
  • off1
    • resources/assets/js/components/MicroApps/index.vue:149

observeMicroApp:updatedOrUninstalled

  • emit1
    • resources/assets/js/store/mutations.js:429
  • on1
    • resources/assets/js/components/MicroApps/index.vue:145
  • off1
    • resources/assets/js/components/MicroApps/index.vue:150

openAIAssistant

  • emit7
    • resources/assets/js/components/AIAssistant/float-button.vue:476
    • resources/assets/js/components/SearchBox.vue:582
    • resources/assets/js/pages/manage.vue:1267
    • 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:703
  • on1
    • resources/assets/js/components/AIAssistant/index.vue:361
  • off1
    • resources/assets/js/components/AIAssistant/index.vue:368

openAIAssistantGlobal

  • emit1
    • resources/assets/js/pages/manage.vue:1255
  • 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:1128
  • 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:1061
  • on1
    • resources/assets/js/pages/manage.vue:626
  • off1
    • resources/assets/js/pages/manage.vue:646

openManageExport

  • emit1
    • resources/assets/js/pages/manage/application.vue:1108
  • on1
    • resources/assets/js/pages/manage.vue:628
  • off1
    • resources/assets/js/pages/manage.vue:648

openMobileNotification

  • emit1
    • resources/assets/js/pages/manage.vue:1641
  • 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:1064
  • on1
    • resources/assets/js/pages/manage.vue:627
  • off1
    • resources/assets/js/pages/manage.vue:647

openReport

  • emit1
    • resources/assets/js/pages/manage/application.vue:1058
  • on1
    • resources/assets/js/pages/manage.vue:625
  • off1
    • resources/assets/js/pages/manage.vue:645

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

  • emit5
    • resources/assets/js/components/UserAvatar/index.vue:184
    • resources/assets/js/pages/manage/approve/details.vue:546
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:2940
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:4494
    • 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:1768
    • 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:4469
  • on1
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:946
  • off1
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:956

taskRelationUpdate

  • emit1
    • resources/assets/js/store/actions.js:4992
  • 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:1125
    • 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:217
  • off1
    • resources/assets/js/pages/login.vue:222

userActive

  • emit3
    • resources/assets/js/store/actions.js:870
    • resources/assets/js/store/actions.js:952
    • resources/assets/js/store/actions.js:4769
  • 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:4786
  • on3
    • resources/assets/js/pages/manage/approve/index.vue:380
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:945
    • resources/assets/js/pages/manage/components/FileContent.vue:202
  • off3
    • resources/assets/js/pages/manage/approve/index.vue:383
    • resources/assets/js/pages/manage/components/DialogWrapper.vue:957
    • resources/assets/js/pages/manage/components/FileContent.vue:225

动态事件名(无法静态解析)

以下调用的第一参数不是字符串字面量,无法静态解析事件名:

  • resources/assets/js/components/MicroApps/index.vue:365emitter.emit(actionName...)

统计

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