From 635f97a2c79cd763aa64db85fce478b5908375f7 Mon Sep 17 00:00:00 2001 From: sunlei Date: Mon, 15 Jun 2026 12:18:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=94=B6=E6=95=9BQQBot=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=B9=B3=E5=8F=B0=E4=B8=8E=E7=8E=B0=E6=9C=89=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/refactor-v3/architecture-convergence-inventory.md | 2 +- .../qqbot/core/command/qqbot-command-engine.service.ts | 2 +- src/modules/qqbot/core/command/qqbot-command.service.ts | 2 +- src/modules/qqbot/core/qqbot-core.module.ts | 6 +++--- .../qqbot/plugin-platform}/qqbot-plugin.controller.ts | 4 ++-- .../registry}/qqbot-event-plugin-registry.service.ts | 0 .../registry}/qqbot-plugin-registry.service.ts | 0 .../qqbot/plugins/plugin-controller-http-smoke.spec.ts | 6 +++--- test/modules/qqbot/plugins/plugin-registry-compat.spec.ts | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) rename src/{qqbot/plugin => modules/qqbot/plugin-platform}/qqbot-plugin.controller.ts (95%) rename src/{qqbot/plugin => modules/qqbot/plugin-platform/registry}/qqbot-event-plugin-registry.service.ts (100%) rename src/{qqbot/plugin => modules/qqbot/plugin-platform/registry}/qqbot-plugin-registry.service.ts (100%) diff --git a/docs/refactor-v3/architecture-convergence-inventory.md b/docs/refactor-v3/architecture-convergence-inventory.md index 3c6dfc4..4c5bfb9 100644 --- a/docs/refactor-v3/architecture-convergence-inventory.md +++ b/docs/refactor-v3/architecture-convergence-inventory.md @@ -18,5 +18,5 @@ | Blog/WordPress/Asset | old `src/blog`, `src/wordpress`, `src/minio`; legacy module wrappers after local imports replaced | MinIO internal files renamed into Asset module; Blog and WordPress controller/service/entity files moved under target modules | existing route decorators and response DTO behavior | `rg '@/blog/|@/wordpress/|@/minio/' src test` has no hits; Blog/WordPress/Asset focused tests pass | | Runtime/Common | none yet | none yet | current files before migration | baseline only | | QQBot Core/NapCat | old `src/qqbot/qqbot.module.ts`; old core and napcat roots after moves | account/command/config/connection/dashboard/dedupe/event/message/mqtt/permission/rule/send moved into `src/modules/qqbot/core`; NapCat login/container/persistence moved into `src/modules/qqbot/napcat` | route decorators, command parsing, send queue, device persistence, captcha, new-device, and manual QR semantics | core and NapCat focused Jest pass; `rg '@/qqbot/' src/modules/qqbot/core src/modules/qqbot/napcat` has no hits | -| Plugin Platform/Plugins | none in Task 4; old `src/qqbot/plugin` intentionally remains as Task 5 debt | none in Task 4; Task 5 will move plugin registry/controller/runtime contracts into `src/modules/qqbot/plugin-platform/**`, then delete old `src/qqbot` root | plugin HTTP routes, platform plugin keys, and legacy key compatibility | current architecture convergence spec remains red only because `src/qqbot/plugin` is still pending for Task 5 | +| Plugin Platform/Plugins | old `src/qqbot/plugin`; no additional plugin source files deleted because existing manifests/tests still reference them | registry/controller moved into `src/modules/qqbot/plugin-platform/**`; direct old-root imports removed | plugin HTTP routes, platform plugin keys, legacy key compatibility, BangDream file-cache HTTP client | architecture convergence and plugin platform focused Jest pass; plugin scan has no `@/admin/` or `@/qqbot/` imports, and FF14/FFLogs have no direct HTTP client hits | | Admin UI | none yet | none yet | current files before migration | baseline only | diff --git a/src/modules/qqbot/core/command/qqbot-command-engine.service.ts b/src/modules/qqbot/core/command/qqbot-command-engine.service.ts index c70a01f..659febb 100644 --- a/src/modules/qqbot/core/command/qqbot-command-engine.service.ts +++ b/src/modules/qqbot/core/command/qqbot-command-engine.service.ts @@ -1,6 +1,6 @@ import { Injectable, Logger } from '@nestjs/common'; import { ToolsService } from '@/common'; -import { QqbotPluginRegistryService } from '../../../../qqbot/plugin/qqbot-plugin-registry.service'; +import { QqbotPluginRegistryService } from '@/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service'; import type { QqbotNormalizedMessage } from '../contract/qqbot.types'; import { QqbotSendService } from '../send/qqbot-send.service'; import type { QqbotCommandTestDto } from './qqbot-command.dto'; diff --git a/src/modules/qqbot/core/command/qqbot-command.service.ts b/src/modules/qqbot/core/command/qqbot-command.service.ts index 690b530..a3d3494 100644 --- a/src/modules/qqbot/core/command/qqbot-command.service.ts +++ b/src/modules/qqbot/core/command/qqbot-command.service.ts @@ -4,7 +4,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Not, Repository } from 'typeorm'; import { throwVbenError, ToolsService } from '@/common'; import { QqbotAccountService } from '../account/qqbot-account.service'; -import { QqbotPluginRegistryService } from '../../../../qqbot/plugin/qqbot-plugin-registry.service'; +import { QqbotPluginRegistryService } from '@/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service'; import { QQBOT_DEFAULT_PAGE_NO, QQBOT_DEFAULT_PAGE_SIZE, diff --git a/src/modules/qqbot/core/qqbot-core.module.ts b/src/modules/qqbot/core/qqbot-core.module.ts index 203e23d..758ffc6 100644 --- a/src/modules/qqbot/core/qqbot-core.module.ts +++ b/src/modules/qqbot/core/qqbot-core.module.ts @@ -39,9 +39,9 @@ import { QqbotAllowlist } from '@/modules/qqbot/core/permission/qqbot-allowlist. import { QqbotBlocklist } from '@/modules/qqbot/core/permission/qqbot-blocklist.entity'; import { QqbotPermissionController } from '@/modules/qqbot/core/permission/qqbot-permission.controller'; import { QqbotPermissionService } from '@/modules/qqbot/core/permission/qqbot-permission.service'; -import { QqbotEventPluginRegistryService } from '../../../qqbot/plugin/qqbot-event-plugin-registry.service'; -import { QqbotPluginController } from '../../../qqbot/plugin/qqbot-plugin.controller'; -import { QqbotPluginRegistryService } from '../../../qqbot/plugin/qqbot-plugin-registry.service'; +import { QqbotPluginController } from '@/modules/qqbot/plugin-platform/qqbot-plugin.controller'; +import { QqbotEventPluginRegistryService } from '@/modules/qqbot/plugin-platform/registry/qqbot-event-plugin-registry.service'; +import { QqbotPluginRegistryService } from '@/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service'; import { QqbotBangDreamClientService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-client.service'; import { TsuguApplicationService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service'; import { QqbotBangDreamRendererService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; diff --git a/src/qqbot/plugin/qqbot-plugin.controller.ts b/src/modules/qqbot/plugin-platform/qqbot-plugin.controller.ts similarity index 95% rename from src/qqbot/plugin/qqbot-plugin.controller.ts rename to src/modules/qqbot/plugin-platform/qqbot-plugin.controller.ts index 7c0bb8e..542f365 100644 --- a/src/qqbot/plugin/qqbot-plugin.controller.ts +++ b/src/modules/qqbot/plugin-platform/qqbot-plugin.controller.ts @@ -10,8 +10,8 @@ import { import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger'; import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard'; import { vbenSuccess } from '@/common'; -import { QqbotEventPluginRegistryService } from './qqbot-event-plugin-registry.service'; -import { QqbotPluginRegistryService } from './qqbot-plugin-registry.service'; +import { QqbotEventPluginRegistryService } from './registry/qqbot-event-plugin-registry.service'; +import { QqbotPluginRegistryService } from './registry/qqbot-plugin-registry.service'; import type { QqbotPluginTriggerMode } from '@/modules/qqbot/core/contract/qqbot.types'; @ApiTags('QQBot - 插件能力') diff --git a/src/qqbot/plugin/qqbot-event-plugin-registry.service.ts b/src/modules/qqbot/plugin-platform/registry/qqbot-event-plugin-registry.service.ts similarity index 100% rename from src/qqbot/plugin/qqbot-event-plugin-registry.service.ts rename to src/modules/qqbot/plugin-platform/registry/qqbot-event-plugin-registry.service.ts diff --git a/src/qqbot/plugin/qqbot-plugin-registry.service.ts b/src/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service.ts similarity index 100% rename from src/qqbot/plugin/qqbot-plugin-registry.service.ts rename to src/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service.ts diff --git a/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts b/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts index 032d01f..c6264d4 100644 --- a/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts +++ b/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts @@ -24,9 +24,9 @@ import * as request from 'supertest'; import { QqbotBangDreamPluginService } from '../../../../src/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin'; import { QqbotFf14MarketPluginService } from '../../../../src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin'; import { QqbotFflogsPluginService } from '../../../../src/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin'; -import { QqbotEventPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-event-plugin-registry.service'; -import { QqbotPluginController } from '../../../../src/qqbot/plugin/qqbot-plugin.controller'; -import { QqbotPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-plugin-registry.service'; +import { QqbotPluginController } from '../../../../src/modules/qqbot/plugin-platform/qqbot-plugin.controller'; +import { QqbotEventPluginRegistryService } from '../../../../src/modules/qqbot/plugin-platform/registry/qqbot-event-plugin-registry.service'; +import { QqbotPluginRegistryService } from '../../../../src/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service'; import type { QqbotIntegrationPlugin } from '../../../../src/modules/qqbot/core/contract/qqbot.types'; const createPlugin = ( diff --git a/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts b/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts index 3793652..e2b7a7b 100644 --- a/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts +++ b/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts @@ -11,7 +11,7 @@ jest.mock('@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin', () => ({ QqbotFflogsPluginService: class {}, })); -import { QqbotPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-plugin-registry.service'; +import { QqbotPluginRegistryService } from '../../../../src/modules/qqbot/plugin-platform/registry/qqbot-plugin-registry.service'; import type { QqbotIntegrationPlugin } from '../../../../src/modules/qqbot/core/contract/qqbot.types'; const asPluginService = (plugin: QqbotIntegrationPlugin) =>