From 2e51a5c70d6e679b042ef8935e52be42b1b56b07 Mon Sep 17 00:00:00 2001 From: digua Date: Sun, 21 Dec 2025 17:20:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/database/analysis.ts | 4 +- electron/main/database/core.ts | 2 +- electron/main/ipc/merge.ts | 2 +- electron/main/merger/index.ts | 12 +- electron/main/merger/tempCache.ts | 3 +- electron/main/parser/formats/chatlab-jsonl.ts | 2 +- electron/main/parser/formats/chatlab.ts | 2 +- electron/main/parser/formats/qq-native-txt.ts | 2 +- .../parser/formats/shuakami-qq-exporter-v4.ts | 2 +- .../main/parser/formats/wechat-default.ts | 2 +- .../parser/formats/ycccccccy-echotrace.ts | 2 +- electron/main/parser/types.ts | 2 +- electron/preload/index.d.ts | 13 +- electron/preload/index.ts | 10 +- .../Overview/ActivityTimeDistribution.vue | 2 +- .../analysis/Overview/DailyTrendCard.vue | 2 +- .../Overview/OverviewIdentityCard.vue | 2 +- .../analysis/Overview/OverviewStatCards.vue | 2 +- .../analysis/quotes/CatchphraseTab.vue | 2 +- .../analysis/quotes/HotRepeatTab.vue | 2 +- .../analysis/quotes/KeywordAnalysis.vue | 2 +- .../charts/MemberNicknameHistory.vue | 2 +- src/components/common/ChatRecord/types.ts | 2 +- src/components/common/Sidebar.vue | 2 +- .../common/settings/AIPromptConfigTab.vue | 2 +- .../common/settings/AIPromptEditModal.vue | 2 +- src/composables/analysis/useDailyTrend.ts | 2 +- .../analysis/useOverviewStatistics.ts | 3 +- src/config/prompts.ts | 2 +- .../group-chat/components/OverviewTab.vue | 7 +- .../group-chat/components/RankingTab.vue | 2 +- .../components/member/MemberList.vue | 2 +- .../components/member/NicknameHistory.vue | 2 +- .../components/member/Relationships.vue | 2 +- .../components/ranking/CheckInRank.vue | 2 +- .../components/ranking/DivingRank.vue | 2 +- .../components/ranking/DragonKingRank.vue | 2 +- .../components/ranking/MemeBattleRank.vue | 2 +- .../components/ranking/MonologueRank.vue | 2 +- .../components/ranking/NightOwlRank.vue | 2 +- .../components/ranking/RepeatSection.vue | 2 +- src/pages/group-chat/index.vue | 3 +- .../private-chat/components/MemberTab.vue | 2 +- .../private-chat/components/OverviewTab.vue | 7 +- src/pages/private-chat/index.vue | 3 +- src/stores/layout.ts | 2 +- src/stores/prompt.ts | 3 +- src/stores/session.ts | 2 +- src/types/ai.ts | 34 ++ src/types/{chat.ts => analysis.ts} | 498 ++---------------- src/types/base.ts | 226 ++++++++ src/types/format.ts | 184 +++++++ src/types/index.ts | 5 - 53 files changed, 553 insertions(+), 536 deletions(-) create mode 100644 src/types/ai.ts rename src/types/{chat.ts => analysis.ts} (53%) create mode 100644 src/types/base.ts create mode 100644 src/types/format.ts delete mode 100644 src/types/index.ts diff --git a/electron/main/database/analysis.ts b/electron/main/database/analysis.ts index ed79ab8..3c030ae 100644 --- a/electron/main/database/analysis.ts +++ b/electron/main/database/analysis.ts @@ -3,12 +3,12 @@ * 负责各种数据分析查询 */ +import type { MessageType } from '../../../src/types/base' import type { MemberActivity, HourlyActivity, DailyActivity, WeekdayActivity, - MessageType, RepeatAnalysis, RepeatStatItem, RepeatRateItem, @@ -28,7 +28,7 @@ import type { MonologueAnalysis, MonologueRankItem, MaxComboRecord, -} from '../../../src/types/chat' +} from '../../../src/types/analysis' import { openDatabase } from './core' /** diff --git a/electron/main/database/core.ts b/electron/main/database/core.ts index 19da66a..34ac296 100644 --- a/electron/main/database/core.ts +++ b/electron/main/database/core.ts @@ -7,7 +7,7 @@ import Database from 'better-sqlite3' import { app } from 'electron' import * as fs from 'fs' import * as path from 'path' -import type { DbMeta, ParseResult, AnalysisSession } from '../../../src/types/chat' +import type { DbMeta, ParseResult, AnalysisSession } from '../../../src/types/base' // 数据库存储目录 let DB_DIR: string | null = null diff --git a/electron/main/ipc/merge.ts b/electron/main/ipc/merge.ts index 4e091f1..b66853e 100644 --- a/electron/main/ipc/merge.ts +++ b/electron/main/ipc/merge.ts @@ -7,7 +7,7 @@ import * as worker from '../worker/workerManager' import * as merger from '../merger' import { deleteTempDatabase, cleanupAllTempDatabases } from '../merger/tempCache' import type { ParseProgress } from '../parser' -import type { MergeParams } from '../../../src/types/chat' +import type { MergeParams } from '../../../src/types/format' import type { IpcContext } from './types' // ==================== 临时数据库缓存 ==================== diff --git a/electron/main/merger/index.ts b/electron/main/merger/index.ts index d6d452f..2161df0 100644 --- a/electron/main/merger/index.ts +++ b/electron/main/merger/index.ts @@ -17,16 +17,18 @@ import type { ChatLabMessage, FileParseInfo, MergeConflict, + ChatPlatform, + ChatType, + ParsedMember, +} from '../../../src/types/base' +import type { ConflictCheckResult, ConflictResolution, MergeParams, MergeResult, - ChatPlatform, - ChatType, MergeSource, - ParsedMeta, - ParsedMember, -} from '../../../src/types/chat' +} from '../../../src/types/format' +import type { ParsedMeta } from '../parser/types' /** * 获取默认输出目录 diff --git a/electron/main/merger/tempCache.ts b/electron/main/merger/tempCache.ts index d5df78d..5c6b8b0 100644 --- a/electron/main/merger/tempCache.ts +++ b/electron/main/merger/tempCache.ts @@ -7,7 +7,8 @@ import Database from 'better-sqlite3' import * as fs from 'fs' import * as path from 'path' import { app } from 'electron' -import type { ParseResult, ParsedMeta, ParsedMember, ParsedMessage } from '../../../src/types/chat' +import type { ParsedMember, ParsedMessage } from '../../../src/types/base' +import type { ParseResult, ParsedMeta } from '../parser/types' // 临时数据库目录 let tempDir: string | null = null diff --git a/electron/main/parser/formats/chatlab-jsonl.ts b/electron/main/parser/formats/chatlab-jsonl.ts index ead4f68..3809a4b 100644 --- a/electron/main/parser/formats/chatlab-jsonl.ts +++ b/electron/main/parser/formats/chatlab-jsonl.ts @@ -18,7 +18,7 @@ import * as fs from 'fs' import * as readline from 'readline' import * as path from 'path' -import { KNOWN_PLATFORMS, ChatType, MessageType, type ChatPlatform } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType, MessageType, type ChatPlatform } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/formats/chatlab.ts b/electron/main/parser/formats/chatlab.ts index 2a711c6..dc00882 100644 --- a/electron/main/parser/formats/chatlab.ts +++ b/electron/main/parser/formats/chatlab.ts @@ -13,7 +13,7 @@ import { parser } from 'stream-json' import { pick } from 'stream-json/filters/Pick' import { streamValues } from 'stream-json/streamers/StreamValues' import { chain } from 'stream-chain' -import { KNOWN_PLATFORMS, ChatType } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/formats/qq-native-txt.ts b/electron/main/parser/formats/qq-native-txt.ts index 76e5db6..6281eef 100644 --- a/electron/main/parser/formats/qq-native-txt.ts +++ b/electron/main/parser/formats/qq-native-txt.ts @@ -17,7 +17,7 @@ import * as fs from 'fs' import * as path from 'path' import * as readline from 'readline' -import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/formats/shuakami-qq-exporter-v4.ts b/electron/main/parser/formats/shuakami-qq-exporter-v4.ts index e7bf527..bcef64b 100644 --- a/electron/main/parser/formats/shuakami-qq-exporter-v4.ts +++ b/electron/main/parser/formats/shuakami-qq-exporter-v4.ts @@ -23,7 +23,7 @@ import { parser } from 'stream-json' import { pick } from 'stream-json/filters/Pick' import { streamValues } from 'stream-json/streamers/StreamValues' import { chain } from 'stream-chain' -import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/formats/wechat-default.ts b/electron/main/parser/formats/wechat-default.ts index 54a11c7..437521b 100644 --- a/electron/main/parser/formats/wechat-default.ts +++ b/electron/main/parser/formats/wechat-default.ts @@ -18,7 +18,7 @@ import * as path from 'path' import { parser } from 'stream-json' import { streamArray } from 'stream-json/streamers/StreamArray' import { chain } from 'stream-chain' -import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/formats/ycccccccy-echotrace.ts b/electron/main/parser/formats/ycccccccy-echotrace.ts index ddfb243..cec6e10 100644 --- a/electron/main/parser/formats/ycccccccy-echotrace.ts +++ b/electron/main/parser/formats/ycccccccy-echotrace.ts @@ -19,7 +19,7 @@ import { parser } from 'stream-json' import { pick } from 'stream-json/filters/Pick' import { streamValues } from 'stream-json/streamers/StreamValues' import { chain } from 'stream-chain' -import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/chat' +import { KNOWN_PLATFORMS, ChatType, MessageType } from '../../../../src/types/base' import type { FormatFeature, FormatModule, diff --git a/electron/main/parser/types.ts b/electron/main/parser/types.ts index 67dce62..10e92ae 100644 --- a/electron/main/parser/types.ts +++ b/electron/main/parser/types.ts @@ -3,7 +3,7 @@ * 三层架构:标准层、嗅探层、解析层 */ -import type { ChatPlatform, ChatType, ParsedMember, ParsedMessage } from '../../../src/types/chat' +import type { ChatPlatform, ChatType, ParsedMember, ParsedMessage } from '../../../src/types/base' // ==================== 标准层:统一输出结构 ==================== diff --git a/electron/preload/index.d.ts b/electron/preload/index.d.ts index 268c3c2..87c5ef8 100644 --- a/electron/preload/index.d.ts +++ b/electron/preload/index.d.ts @@ -1,14 +1,12 @@ import { ElectronAPI } from '@electron-toolkit/preload' +import type { AnalysisSession, MessageType, ImportProgress } from '../../src/types/base' import type { - AnalysisSession, MemberActivity, MemberNameHistory, HourlyActivity, DailyActivity, WeekdayActivity, MonthlyActivity, - MessageType, - ImportProgress, RepeatAnalysis, CatchphraseAnalysis, NightOwlAnalysis, @@ -19,14 +17,15 @@ import type { LaughAnalysis, MemeBattleAnalysis, CheckInAnalysis, + MemberWithStats, +} from '../../src/types/analysis' +import type { FileParseInfo, ConflictCheckResult, MergeParams, MergeResult, - MemberWithStats, - TableSchema, - SQLResult, -} from '../../src/types/chat' +} from '../../src/types/format' +import type { TableSchema, SQLResult } from '../../src/components/analysis/SQLLab/types' interface TimeFilter { startTs?: number diff --git a/electron/preload/index.ts b/electron/preload/index.ts index 617bab0..01155b2 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -1,15 +1,13 @@ import { contextBridge, ipcRenderer } from 'electron' import { electronAPI } from '@electron-toolkit/preload' +import type { AnalysisSession, MessageType, ImportProgress } from '../../src/types/base' import type { - AnalysisSession, MemberActivity, MemberNameHistory, HourlyActivity, DailyActivity, WeekdayActivity, MonthlyActivity, - MessageType, - ImportProgress, RepeatAnalysis, CatchphraseAnalysis, NightOwlAnalysis, @@ -20,12 +18,14 @@ import type { LaughAnalysis, CheckInAnalysis, MemeBattleAnalysis, + MemberWithStats, +} from '../../src/types/analysis' +import type { FileParseInfo, ConflictCheckResult, MergeParams, MergeResult, - MemberWithStats, -} from '../../src/types/chat' +} from '../../src/types/format' // Custom APIs for renderer const api = { diff --git a/src/components/analysis/Overview/ActivityTimeDistribution.vue b/src/components/analysis/Overview/ActivityTimeDistribution.vue index 81be04a..4959135 100644 --- a/src/components/analysis/Overview/ActivityTimeDistribution.vue +++ b/src/components/analysis/Overview/ActivityTimeDistribution.vue @@ -1,6 +1,6 @@