From 01641834de29a6ce2296f791fbc90cf6be9f6b65 Mon Sep 17 00:00:00 2001
From: cc <98377878+hicccc77@users.noreply.github.com>
Date: Sat, 10 Jan 2026 13:01:37 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/release.yml | 36 +
.gitignore | 53 +
.npmrc | 3 +
LICENSE | 141 +
README.md | 96 +
app.png | Bin 0 -> 387781 bytes
electron/annualReportWorker.ts | 43 +
electron/imageSearchWorker.ts | 156 +
electron/main.ts | 703 ++
electron/preload.ts | 165 +
electron/services/analyticsService.ts | 490 +
electron/services/annualReportService.ts | 928 ++
electron/services/chatService.ts | 2333 +++++
electron/services/config.ts | 63 +
electron/services/dbPathService.ts | 159 +
electron/services/exportService.ts | 626 ++
electron/services/groupAnalyticsService.ts | 251 +
electron/services/imageDecryptService.ts | 1383 +++
electron/services/imagePreloadService.ts | 66 +
electron/services/keyService.ts | 928 ++
electron/services/wcdbService.ts | 1210 +++
index.html | 12 +
installer.nsh | 18 +
package-lock.json | 9332 ++++++++++++++++++++
package.json | 95 +
public/assets/animal/发抖.png | Bin 0 -> 12287 bytes
public/assets/animal/猪头.png | Bin 0 -> 12536 bytes
public/assets/animal/跳跳.png | Bin 0 -> 11449 bytes
public/assets/animal/转圈.png | Bin 0 -> 10575 bytes
public/assets/blessing/庆祝.png | Bin 0 -> 4216 bytes
public/assets/blessing/烟花.png | Bin 0 -> 4859 bytes
public/assets/blessing/爆竹.png | Bin 0 -> 10080 bytes
public/assets/blessing/發.png | Bin 0 -> 5517 bytes
public/assets/blessing/礼物.png | Bin 0 -> 5506 bytes
public/assets/blessing/福.png | Bin 0 -> 4869 bytes
public/assets/blessing/红包.png | Bin 0 -> 3744 bytes
public/assets/face/666.png | Bin 0 -> 5809 bytes
public/assets/face/Emm.png | Bin 0 -> 5238 bytes
public/assets/face/亲亲.png | Bin 0 -> 5521 bytes
public/assets/face/偷笑.png | Bin 0 -> 5763 bytes
public/assets/face/傲慢.png | Bin 0 -> 5517 bytes
public/assets/face/再见.png | Bin 0 -> 5803 bytes
public/assets/face/加油.png | Bin 0 -> 15654 bytes
public/assets/face/发呆.png | Bin 0 -> 5341 bytes
public/assets/face/发怒.png | Bin 0 -> 5702 bytes
public/assets/face/可怜.png | Bin 0 -> 5870 bytes
public/assets/face/右哼哼.png | Bin 0 -> 5138 bytes
public/assets/face/叹气.png | Bin 0 -> 5296 bytes
public/assets/face/吃瓜.png | Bin 0 -> 5244 bytes
public/assets/face/吐.png | Bin 0 -> 5499 bytes
public/assets/face/呲牙.png | Bin 0 -> 5608 bytes
public/assets/face/咒骂.png | Bin 0 -> 5510 bytes
public/assets/face/哇.png | Bin 0 -> 5475 bytes
public/assets/face/嘘.png | Bin 0 -> 5677 bytes
public/assets/face/嘿哈.png | Bin 0 -> 6038 bytes
public/assets/face/囧.png | Bin 0 -> 5330 bytes
public/assets/face/困.png | Bin 0 -> 5231 bytes
public/assets/face/坏笑.png | Bin 0 -> 5534 bytes
public/assets/face/大哭.png | Bin 0 -> 5064 bytes
public/assets/face/天啊.png | Bin 0 -> 5458 bytes
public/assets/face/失望.png | Bin 0 -> 5333 bytes
public/assets/face/奸笑.png | Bin 0 -> 14938 bytes
public/assets/face/好的.png | Bin 0 -> 5753 bytes
public/assets/face/委屈.png | Bin 0 -> 5770 bytes
public/assets/face/害羞.png | Bin 0 -> 5470 bytes
public/assets/face/尴尬.png | Bin 0 -> 5331 bytes
public/assets/face/得意.png | Bin 0 -> 4823 bytes
public/assets/face/微笑.png | Bin 0 -> 5425 bytes
public/assets/face/快哭了.png | Bin 0 -> 5492 bytes
public/assets/face/恐惧.png | Bin 0 -> 5115 bytes
public/assets/face/悠闲.png | Bin 0 -> 5061 bytes
public/assets/face/惊恐.png | Bin 0 -> 5627 bytes
public/assets/face/惊讶.png | Bin 0 -> 5265 bytes
public/assets/face/愉快.png | Bin 0 -> 5359 bytes
public/assets/face/憨笑.png | Bin 0 -> 5265 bytes
public/assets/face/打脸.png | Bin 0 -> 5390 bytes
public/assets/face/抓狂.png | Bin 0 -> 5751 bytes
public/assets/face/抠鼻.png | Bin 0 -> 5699 bytes
public/assets/face/捂脸.png | Bin 0 -> 5413 bytes
public/assets/face/撇嘴.png | Bin 0 -> 5626 bytes
public/assets/face/擦汗.png | Bin 0 -> 5163 bytes
public/assets/face/敲打.png | Bin 0 -> 5164 bytes
public/assets/face/无语.png | Bin 0 -> 5377 bytes
public/assets/face/旺柴.png | Bin 0 -> 5070 bytes
public/assets/face/晕.png | Bin 0 -> 5818 bytes
public/assets/face/机智.png | Bin 0 -> 5662 bytes
public/assets/face/汗.png | Bin 0 -> 4588 bytes
public/assets/face/流泪.png | Bin 0 -> 4777 bytes
public/assets/face/生病.png | Bin 0 -> 4994 bytes
public/assets/face/疑问.png | Bin 0 -> 5700 bytes
public/assets/face/白眼.png | Bin 0 -> 5304 bytes
public/assets/face/皱眉.png | Bin 0 -> 5275 bytes
public/assets/face/睡.png | Bin 0 -> 5420 bytes
public/assets/face/破涕为笑.png | Bin 0 -> 5075 bytes
public/assets/face/社会社会.png | Bin 0 -> 5736 bytes
public/assets/face/笑脸.png | Bin 0 -> 5147 bytes
public/assets/face/翻白眼.png | Bin 0 -> 4837 bytes
public/assets/face/耶.png | Bin 0 -> 5231 bytes
public/assets/face/脸红.png | Bin 0 -> 5352 bytes
public/assets/face/色.png | Bin 0 -> 5077 bytes
public/assets/face/苦涩.png | Bin 0 -> 5051 bytes
public/assets/face/衰.png | Bin 0 -> 5554 bytes
public/assets/face/裂开.png | Bin 0 -> 5734 bytes
public/assets/face/让我看看.png | Bin 0 -> 5458 bytes
public/assets/face/调皮.png | Bin 0 -> 5162 bytes
public/assets/face/鄙视.png | Bin 0 -> 5859 bytes
public/assets/face/闭嘴.png | Bin 0 -> 5960 bytes
public/assets/face/阴险.png | Bin 0 -> 5535 bytes
public/assets/face/难过.png | Bin 0 -> 5476 bytes
public/assets/face/骷髅.png | Bin 0 -> 4873 bytes
public/assets/face/鼓掌.png | Bin 0 -> 5920 bytes
public/assets/gesture/OK.png | Bin 0 -> 12551 bytes
public/assets/gesture/勾引.png | Bin 0 -> 9774 bytes
public/assets/gesture/合十.png | Bin 0 -> 3625 bytes
public/assets/gesture/弱.png | Bin 0 -> 3758 bytes
public/assets/gesture/强.png | Bin 0 -> 3536 bytes
public/assets/gesture/抱拳.png | Bin 0 -> 11082 bytes
public/assets/gesture/拥抱.png | Bin 0 -> 11733 bytes
public/assets/gesture/拳头.png | Bin 0 -> 11750 bytes
public/assets/gesture/握手.png | Bin 0 -> 12229 bytes
public/assets/gesture/胜利.png | Bin 0 -> 11169 bytes
public/assets/other/便便.png | Bin 0 -> 13236 bytes
public/assets/other/凋谢.png | Bin 0 -> 10328 bytes
public/assets/other/咖啡.png | Bin 0 -> 11150 bytes
public/assets/other/啤酒.png | Bin 0 -> 13463 bytes
public/assets/other/嘴唇.png | Bin 0 -> 9569 bytes
public/assets/other/太阳.png | Bin 0 -> 13243 bytes
public/assets/other/心碎.png | Bin 0 -> 8657 bytes
public/assets/other/月亮.png | Bin 0 -> 13916 bytes
public/assets/other/炸弹.png | Bin 0 -> 11843 bytes
public/assets/other/爱心.png | Bin 0 -> 9581 bytes
public/assets/other/玫瑰.png | Bin 0 -> 7434 bytes
public/assets/other/菜刀.png | Bin 0 -> 6759 bytes
public/assets/other/蛋糕.png | Bin 0 -> 15092 bytes
public/icon.ico | Bin 0 -> 216810 bytes
public/logo.png | Bin 0 -> 1069150 bytes
resources/WCDB.dll | Bin 0 -> 9664512 bytes
resources/silk_v3_decoder.exe | Bin 0 -> 179037 bytes
resources/wcdb_api.dll | Bin 0 -> 508416 bytes
resources/wx_key.dll | Bin 0 -> 137728 bytes
src/App.scss | 309 +
src/App.tsx | 325 +
src/components/DateRangePicker.scss | 214 +
src/components/DateRangePicker.tsx | 204 +
src/components/RouteGuard.tsx | 29 +
src/components/Sidebar.scss | 107 +
src/components/Sidebar.tsx | 112 +
src/components/TitleBar.scss | 23 +
src/components/TitleBar.tsx | 12 +
src/main.tsx | 13 +
src/pages/AgreementPage.scss | 83 +
src/pages/AgreementPage.tsx | 52 +
src/pages/AnalyticsPage.scss | 295 +
src/pages/AnalyticsPage.tsx | 309 +
src/pages/AnnualReportPage.scss | 116 +
src/pages/AnnualReportPage.tsx | 110 +
src/pages/AnnualReportWindow.scss | 1281 +++
src/pages/AnnualReportWindow.tsx | 1076 +++
src/pages/ChatPage.scss | 1845 ++++
src/pages/ChatPage.tsx | 1465 +++
src/pages/DataManagementPage.scss | 569 ++
src/pages/DataManagementPage.tsx | 62 +
src/pages/ExportPage.scss | 657 ++
src/pages/ExportPage.tsx | 377 +
src/pages/GroupAnalyticsPage.scss | 1167 +++
src/pages/GroupAnalyticsPage.tsx | 521 ++
src/pages/HomePage.scss | 112 +
src/pages/HomePage.tsx | 24 +
src/pages/SettingsPage.scss | 769 ++
src/pages/SettingsPage.tsx | 683 ++
src/pages/WelcomePage.scss | 493 ++
src/pages/WelcomePage.tsx | 561 ++
src/services/config.ts | 172 +
src/services/ipc.ts | 23 +
src/stores/analyticsStore.ts | 70 +
src/stores/appStore.ts | 46 +
src/stores/chatStore.ts | 116 +
src/stores/imageStore.ts | 173 +
src/stores/themeStore.ts | 79 +
src/styles/chat-patterns.scss | 18 +
src/styles/main.scss | 309 +
src/types/analytics.ts | 91 +
src/types/electron.d.ts | 329 +
src/types/models.ts | 55 +
src/vite-env.d.ts | 1 +
tsconfig.json | 25 +
tsconfig.node.json | 18 +
vite.config.ts | 75 +
188 files changed, 34865 insertions(+)
create mode 100644 .github/workflows/release.yml
create mode 100644 .gitignore
create mode 100644 .npmrc
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 app.png
create mode 100644 electron/annualReportWorker.ts
create mode 100644 electron/imageSearchWorker.ts
create mode 100644 electron/main.ts
create mode 100644 electron/preload.ts
create mode 100644 electron/services/analyticsService.ts
create mode 100644 electron/services/annualReportService.ts
create mode 100644 electron/services/chatService.ts
create mode 100644 electron/services/config.ts
create mode 100644 electron/services/dbPathService.ts
create mode 100644 electron/services/exportService.ts
create mode 100644 electron/services/groupAnalyticsService.ts
create mode 100644 electron/services/imageDecryptService.ts
create mode 100644 electron/services/imagePreloadService.ts
create mode 100644 electron/services/keyService.ts
create mode 100644 electron/services/wcdbService.ts
create mode 100644 index.html
create mode 100644 installer.nsh
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 public/assets/animal/发抖.png
create mode 100644 public/assets/animal/猪头.png
create mode 100644 public/assets/animal/跳跳.png
create mode 100644 public/assets/animal/转圈.png
create mode 100644 public/assets/blessing/庆祝.png
create mode 100644 public/assets/blessing/烟花.png
create mode 100644 public/assets/blessing/爆竹.png
create mode 100644 public/assets/blessing/發.png
create mode 100644 public/assets/blessing/礼物.png
create mode 100644 public/assets/blessing/福.png
create mode 100644 public/assets/blessing/红包.png
create mode 100644 public/assets/face/666.png
create mode 100644 public/assets/face/Emm.png
create mode 100644 public/assets/face/亲亲.png
create mode 100644 public/assets/face/偷笑.png
create mode 100644 public/assets/face/傲慢.png
create mode 100644 public/assets/face/再见.png
create mode 100644 public/assets/face/加油.png
create mode 100644 public/assets/face/发呆.png
create mode 100644 public/assets/face/发怒.png
create mode 100644 public/assets/face/可怜.png
create mode 100644 public/assets/face/右哼哼.png
create mode 100644 public/assets/face/叹气.png
create mode 100644 public/assets/face/吃瓜.png
create mode 100644 public/assets/face/吐.png
create mode 100644 public/assets/face/呲牙.png
create mode 100644 public/assets/face/咒骂.png
create mode 100644 public/assets/face/哇.png
create mode 100644 public/assets/face/嘘.png
create mode 100644 public/assets/face/嘿哈.png
create mode 100644 public/assets/face/囧.png
create mode 100644 public/assets/face/困.png
create mode 100644 public/assets/face/坏笑.png
create mode 100644 public/assets/face/大哭.png
create mode 100644 public/assets/face/天啊.png
create mode 100644 public/assets/face/失望.png
create mode 100644 public/assets/face/奸笑.png
create mode 100644 public/assets/face/好的.png
create mode 100644 public/assets/face/委屈.png
create mode 100644 public/assets/face/害羞.png
create mode 100644 public/assets/face/尴尬.png
create mode 100644 public/assets/face/得意.png
create mode 100644 public/assets/face/微笑.png
create mode 100644 public/assets/face/快哭了.png
create mode 100644 public/assets/face/恐惧.png
create mode 100644 public/assets/face/悠闲.png
create mode 100644 public/assets/face/惊恐.png
create mode 100644 public/assets/face/惊讶.png
create mode 100644 public/assets/face/愉快.png
create mode 100644 public/assets/face/憨笑.png
create mode 100644 public/assets/face/打脸.png
create mode 100644 public/assets/face/抓狂.png
create mode 100644 public/assets/face/抠鼻.png
create mode 100644 public/assets/face/捂脸.png
create mode 100644 public/assets/face/撇嘴.png
create mode 100644 public/assets/face/擦汗.png
create mode 100644 public/assets/face/敲打.png
create mode 100644 public/assets/face/无语.png
create mode 100644 public/assets/face/旺柴.png
create mode 100644 public/assets/face/晕.png
create mode 100644 public/assets/face/机智.png
create mode 100644 public/assets/face/汗.png
create mode 100644 public/assets/face/流泪.png
create mode 100644 public/assets/face/生病.png
create mode 100644 public/assets/face/疑问.png
create mode 100644 public/assets/face/白眼.png
create mode 100644 public/assets/face/皱眉.png
create mode 100644 public/assets/face/睡.png
create mode 100644 public/assets/face/破涕为笑.png
create mode 100644 public/assets/face/社会社会.png
create mode 100644 public/assets/face/笑脸.png
create mode 100644 public/assets/face/翻白眼.png
create mode 100644 public/assets/face/耶.png
create mode 100644 public/assets/face/脸红.png
create mode 100644 public/assets/face/色.png
create mode 100644 public/assets/face/苦涩.png
create mode 100644 public/assets/face/衰.png
create mode 100644 public/assets/face/裂开.png
create mode 100644 public/assets/face/让我看看.png
create mode 100644 public/assets/face/调皮.png
create mode 100644 public/assets/face/鄙视.png
create mode 100644 public/assets/face/闭嘴.png
create mode 100644 public/assets/face/阴险.png
create mode 100644 public/assets/face/难过.png
create mode 100644 public/assets/face/骷髅.png
create mode 100644 public/assets/face/鼓掌.png
create mode 100644 public/assets/gesture/OK.png
create mode 100644 public/assets/gesture/勾引.png
create mode 100644 public/assets/gesture/合十.png
create mode 100644 public/assets/gesture/弱.png
create mode 100644 public/assets/gesture/强.png
create mode 100644 public/assets/gesture/抱拳.png
create mode 100644 public/assets/gesture/拥抱.png
create mode 100644 public/assets/gesture/拳头.png
create mode 100644 public/assets/gesture/握手.png
create mode 100644 public/assets/gesture/胜利.png
create mode 100644 public/assets/other/便便.png
create mode 100644 public/assets/other/凋谢.png
create mode 100644 public/assets/other/咖啡.png
create mode 100644 public/assets/other/啤酒.png
create mode 100644 public/assets/other/嘴唇.png
create mode 100644 public/assets/other/太阳.png
create mode 100644 public/assets/other/心碎.png
create mode 100644 public/assets/other/月亮.png
create mode 100644 public/assets/other/炸弹.png
create mode 100644 public/assets/other/爱心.png
create mode 100644 public/assets/other/玫瑰.png
create mode 100644 public/assets/other/菜刀.png
create mode 100644 public/assets/other/蛋糕.png
create mode 100644 public/icon.ico
create mode 100644 public/logo.png
create mode 100644 resources/WCDB.dll
create mode 100644 resources/silk_v3_decoder.exe
create mode 100644 resources/wcdb_api.dll
create mode 100644 resources/wx_key.dll
create mode 100644 src/App.scss
create mode 100644 src/App.tsx
create mode 100644 src/components/DateRangePicker.scss
create mode 100644 src/components/DateRangePicker.tsx
create mode 100644 src/components/RouteGuard.tsx
create mode 100644 src/components/Sidebar.scss
create mode 100644 src/components/Sidebar.tsx
create mode 100644 src/components/TitleBar.scss
create mode 100644 src/components/TitleBar.tsx
create mode 100644 src/main.tsx
create mode 100644 src/pages/AgreementPage.scss
create mode 100644 src/pages/AgreementPage.tsx
create mode 100644 src/pages/AnalyticsPage.scss
create mode 100644 src/pages/AnalyticsPage.tsx
create mode 100644 src/pages/AnnualReportPage.scss
create mode 100644 src/pages/AnnualReportPage.tsx
create mode 100644 src/pages/AnnualReportWindow.scss
create mode 100644 src/pages/AnnualReportWindow.tsx
create mode 100644 src/pages/ChatPage.scss
create mode 100644 src/pages/ChatPage.tsx
create mode 100644 src/pages/DataManagementPage.scss
create mode 100644 src/pages/DataManagementPage.tsx
create mode 100644 src/pages/ExportPage.scss
create mode 100644 src/pages/ExportPage.tsx
create mode 100644 src/pages/GroupAnalyticsPage.scss
create mode 100644 src/pages/GroupAnalyticsPage.tsx
create mode 100644 src/pages/HomePage.scss
create mode 100644 src/pages/HomePage.tsx
create mode 100644 src/pages/SettingsPage.scss
create mode 100644 src/pages/SettingsPage.tsx
create mode 100644 src/pages/WelcomePage.scss
create mode 100644 src/pages/WelcomePage.tsx
create mode 100644 src/services/config.ts
create mode 100644 src/services/ipc.ts
create mode 100644 src/stores/analyticsStore.ts
create mode 100644 src/stores/appStore.ts
create mode 100644 src/stores/chatStore.ts
create mode 100644 src/stores/imageStore.ts
create mode 100644 src/stores/themeStore.ts
create mode 100644 src/styles/chat-patterns.scss
create mode 100644 src/styles/main.scss
create mode 100644 src/types/analytics.ts
create mode 100644 src/types/electron.d.ts
create mode 100644 src/types/models.ts
create mode 100644 src/vite-env.d.ts
create mode 100644 tsconfig.json
create mode 100644 tsconfig.node.json
create mode 100644 vite.config.ts
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..1fbead4
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,36 @@
+name: Build and Release
+
+on:
+ push:
+ tags:
+ - "v*"
+
+permissions:
+ contents: write
+
+jobs:
+ release:
+ runs-on: windows-latest
+
+ steps:
+ - name: Check out git repository
+ uses: actions/checkout@v4
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'npm'
+
+ - name: Install Dependencies
+ run: npm install
+
+ - name: Build Frontend & Type Check
+ run: |
+ npx tsc
+ npx vite build
+
+ - name: Package and Publish
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: npx electron-builder --publish always
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e6877f1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,53 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+# Dependencies
+node_modules
+dist
+dist-electron
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# Build output
+out
+release
+
+# Database
+*.db
+*.db-shm
+*.db-wal
+
+# Environment
+.env
+.env.local
+.env.production
+
+# OS
+Thumbs.db
+
+
+
+# 忽略 Visual Studio 临时文件夹
+.vs/
+# 忽略 IntelliSense 缓存文件
+*.ipch
+*.aps
+
+wcdb/
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..9291011
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,3 @@
+registry=https://registry.npmmirror.com
+electron_mirror=https://npmmirror.com/mirrors/electron/
+electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..c956c6d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,141 @@
+Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+
+c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+i. NonCommercial means not intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
+
+j. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+k. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+l. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+a. License grant.
+
+1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
+B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
+
+2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+3. Term. The term of this Public License is specified in Section 6(a).
+
+4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+5. Downstream recipients.
+A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter's License You apply.
+C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+b. Other rights.
+
+1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+2. Patent and trademark rights are not licensed under this Public License.
+
+3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used for other than NonCommercial purposes.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+a. Attribution.
+
+1. If You Share the Licensed Material (including in modified form), You must:
+A. retain the following if it is supplied by the Licensor with the Licensed Material:
+i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+ii. a copyright notice;
+iii. a notice that refers to this Public License;
+iv. a notice that refers to the disclaimer of warranties;
+v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
+
+b. ShareAlike.
+
+In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
+
+1. The Adapter's License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License.
+
+2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
+
+3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
+
+b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+
+c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights and Sui Generis Database Rights apply to Your use of the Licensed Material.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+2. upon express reinstatement by the Licensor.
+
+For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+d. Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6bb52ce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,96 @@
+# WeFlow
+
+WeFlow 是一个**完全本地**的微信聊天记录查看与分析工具,支持聊天检索、统计分析、群聊画像与年度报告。所有数据均在本地处理,不会上传到任何服务器。
+
+---
+
+
+
+
+
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 主要功能
+
+- 本地查看与搜索聊天记录
+- 统计分析与群聊画像
+- 年度报告与可视化概览
+- 导出聊天记录为 HTML 等格式
+- 本地解密与数据库管理
+
+## 快速开始
+
+若你只想使用成品版本,可前往 Release 下载并解压运行。
+
+## 面向开发者
+
+如果你想从源码构建或为项目贡献代码,请遵循以下步骤:
+
+```bash
+# 1. 克隆项目到本地
+git clone https://github.com/hicccc77/WeFlow.git
+cd WeFlow
+
+# 2. 安装项目依赖
+npm install
+
+# 3. 运行应用(开发模式)
+npm run dev
+
+# 4. 打包可执行文件
+npm run build
+```
+
+打包产物在 `release` 目录下。
+
+## 技术栈
+
+- **前端**: React 19 + TypeScript + Zustand
+- **桌面**: Electron 39
+- **构建**: Vite + electron-builder
+- **数据库**: better-sqlite3 + WCDB DLL
+- **样式**: SCSS + CSS Variables
+
+## 项目结构
+
+```
+WeFlow/
+├── electron/ # Electron 主进程
+│ ├── main.ts # 主进程入口
+│ ├── preload.ts # 预加载脚本
+│ └── services/ # 后端服务
+│ ├── chatService.ts # 聊天数据服务
+│ ├── wcdbService.ts # 数据库服务
+│ ├── decryptService.ts # 解密服务
+│ └── ...
+├── src/ # React 前端
+│ ├── components/ # 通用组件
+│ ├── pages/ # 页面组件
+│ ├── stores/ # Zustand 状态管理
+│ ├── services/ # 前端服务
+│ └── types/ # TypeScript 类型定义
+├── public/ # 静态资源
+└── resources/ # 打包资源
+```
+
+## 注意事项
+
+- 仅支持 Windows 系统
+- 需要微信 4.x 版本
+- 所有数据仅在本地处理,不会上传到任何服务器
+- 请负责任地使用本工具,遵守相关法律法规
diff --git a/app.png b/app.png
new file mode 100644
index 0000000000000000000000000000000000000000..286f744062120e829367373ded2dafda2b01d244
GIT binary patch
literal 387781
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 O*lRwItA$^1zqCi((y8{CI?|uc
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