Skip to content

Commit efb9997

Browse files
authored
docs: add Japanese README (#348)
1 parent 0b8f1be commit efb9997

File tree

3 files changed

+282
-2
lines changed

3 files changed

+282
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h1 align="center">Telegram Search</h1>
44

55
<p align="center">
6-
[<a href="https://discord.gg/NzYsmJSgCT">Join Discord Server</a>] [<a href="./docs/README_CN.md">简体中文</a>]
6+
[<a href="https://discord.gg/NzYsmJSgCT">Join Discord Server</a>] [<a href="./docs/README_CN.md">简体中文</a>] [<a href="./docs/README_JA.md">日本語</a>]
77
</p>
88

99
<p align="center">

docs/README_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h1 align="center">Telegram Search</h1>
44

55
<p align="center">
6-
[<a href="https://discord.gg/NzYsmJSgCT">Join Discord Server</a>] [<a href="./README.md">English</a>]
6+
[<a href="https://discord.gg/NzYsmJSgCT">Join Discord Server</a>] [<a href="../README.md">English</a>] [<a href="./README_JA.md">日本語</a>]
77
</p>
88

99
<p align="center">

docs/README_JA.md

Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
1+
![preview](./assets/preview.png)
2+
3+
<h1 align="center">Telegram Search</h1>
4+
5+
<p align="center">
6+
[<a href="https://discord.gg/NzYsmJSgCT">Discordサーバーに参加</a>] [<a href="../README.md">English</a>] [<a href="./README_CN.md">简体中文</a>]
7+
</p>
8+
9+
<p align="center">
10+
<a href="https://deepwiki.com/GramSearch/telegram-search"><img src="https://deepwiki.com/badge.svg"></a>
11+
<a href="https://github.com/GramSearch/telegram-search/blob/main/LICENSE"><img src="https://img.shields.io/github/license/GramSearch/telegram-search.svg?style=flat&colorA=080f12&colorB=1fa669"></a>
12+
<a href="https://discord.gg/NzYsmJSgCT"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Finvites%2FNzYsmJSgCT%3Fwith_counts%3Dtrue&query=%24.approximate_member_count&suffix=%20members&logo=discord&logoColor=white&label=%20&color=7389D8&labelColor=6A7EC2"></a>
13+
<a href="https://t.me/+Gs3SH2qAPeFhYmU9"><img src="https://img.shields.io/badge/Telegram-%235AA9E6?logo=telegram&labelColor=FFFFFF"></a>
14+
</p>
15+
16+
> 公式ウェブサイトは `intentchat.app` のみです。他のウェブサイトはすべて詐欺です。
17+
>
18+
> 仮想通貨は一切発行していません。詐欺にご注意ください。
19+
>
20+
> このソフトウェアは自分のチャット履歴をエクスポートして検索するためのものです。違法な目的で使用しないでください。
21+
22+
<a href="https://trendshift.io/repositories/13868" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13868" alt="groupultra%2Ftelegram-search | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
23+
24+
ベクトル検索とセマンティックマッチングをサポートする強力なTelegramチャット履歴検索ツール。OpenAIのセマンティックベクトル技術に基づいて、Telegramメッセージの検索をよりスマートで正確にします。
25+
26+
## 💖 スポンサー
27+
28+
![Sponsors](https://github.com/luoling8192/luoling8192/raw/master/sponsorkit/sponsors.svg)
29+
30+
## 🚀 クイックスタート
31+
32+
1. リポジトリをクローン:
33+
34+
```bash
35+
git clone https://github.com/GramSearch/telegram-search.git
36+
cd telegram-search
37+
38+
# リリースブランチに切り替え
39+
git switch release
40+
```
41+
42+
2. 設定を構成:
43+
44+
```bash
45+
# 必要に応じて config/config.yaml の設定を変更します。
46+
# 設定の database.host の値を "pgvector" に変更してください。
47+
48+
cp config/config.example.yaml config/config.yaml
49+
```
50+
51+
3. サービスを起動:
52+
53+
```bash
54+
docker compose up -d
55+
```
56+
57+
http://localhost:3333 にアクセスして検索インターフェースを開きます。
58+
59+
## 💻 開発ガイド
60+
61+
1. リポジトリをクローン
62+
63+
2. 依存関係をインストール
64+
65+
```bash
66+
pnpm install
67+
```
68+
69+
3. 環境を設定
70+
71+
4. データベースコンテナを起動:
72+
73+
```bash
74+
# ローカル開発では、Dockerはデータベースコンテナのみに使用されます。
75+
docker compose up -d pgvector
76+
```
77+
78+
5. データベーススキーマを同期:
79+
80+
```bash
81+
pnpm run db:migrate
82+
```
83+
84+
6. サービスを起動:
85+
86+
```bash
87+
# バックエンドを起動
88+
pnpm run dev:server
89+
90+
# フロントエンドを起動
91+
pnpm run dev:frontend
92+
```
93+
94+
## 🏗️ アーキテクチャ
95+
96+
```mermaid
97+
graph TB
98+
subgraph "🖥️ フロントエンドレイヤー"
99+
Frontend["Webフロントエンド<br/>(Vue 3 + Pinia)"]
100+
Electron["Electronデスクトップ"]
101+
102+
subgraph "クライアントイベントハンドラー"
103+
ClientAuth["認証ハンドラー"]
104+
ClientMessage["メッセージハンドラー"]
105+
ClientStorage["ストレージハンドラー"]
106+
ClientEntity["エンティティハンドラー"]
107+
ClientServer["サーバーハンドラー"]
108+
end
109+
end
110+
111+
subgraph "🌐 通信レイヤー"
112+
WS["WebSocketイベントブリッジ<br/>リアルタイム双方向通信<br/>• イベント登録<br/>• イベント転送<br/>• セッション管理"]
113+
end
114+
115+
subgraph "🚀 バックエンドサービスレイヤー"
116+
Server["バックエンドサーバー<br/>(REST API)"]
117+
118+
subgraph "セッション管理"
119+
SessionMgr["セッションマネージャー<br/>• クライアント状態<br/>• CoreContextインスタンス<br/>• イベントリスナー"]
120+
end
121+
end
122+
123+
subgraph "🎯 コアイベントシステム"
124+
Context["CoreContext<br/>🔥 中央イベントバス<br/>(EventEmitter3)<br/>• ToCoreEvent<br/>• FromCoreEvent<br/>• イベントラッパー<br/>• エラーハンドリング"]
125+
126+
subgraph "コアイベントハンドラー"
127+
AuthHandler["🔐 認証ハンドラー"]
128+
MessageHandler["📝 メッセージハンドラー"]
129+
DialogHandler["💬 ダイアログハンドラー"]
130+
StorageHandler["📦 ストレージハンドラー"]
131+
ConfigHandler["⚙️ 設定ハンドラー"]
132+
EntityHandler["👤 エンティティハンドラー"]
133+
GramEventsHandler["📡 Gramイベントハンドラー"]
134+
MessageResolverHandler["🔄 メッセージリゾルバーハンドラー"]
135+
end
136+
end
137+
138+
subgraph "🔧 ビジネスサービスレイヤー"
139+
subgraph "サービス"
140+
AuthService["認証<br/>サービス"]
141+
MessageService["メッセージ<br/>サービス"]
142+
DialogService["ダイアログ<br/>サービス"]
143+
StorageService["ストレージ<br/>サービス"]
144+
ConfigService["設定<br/>サービス"]
145+
EntityService["エンティティ<br/>サービス"]
146+
ConnectionService["接続<br/>サービス"]
147+
TakeoutService["テイクアウト<br/>サービス"]
148+
end
149+
150+
subgraph "メッセージ処理パイプライン"
151+
MsgResolverService["メッセージリゾルバー<br/>サービス"]
152+
153+
subgraph "メッセージリゾルバー"
154+
EmbeddingResolver["🤖 埋め込み<br/>リゾルバー<br/>(OpenAI)"]
155+
JiebaResolver["📚 Jieba<br/>リゾルバー<br/>(中国語分割)"]
156+
LinkResolver["🔗 リンク<br/>リゾルバー"]
157+
MediaResolver["📸 メディア<br/>リゾルバー"]
158+
UserResolver["👤 ユーザー<br/>リゾルバー"]
159+
end
160+
end
161+
end
162+
163+
subgraph "🗄️ データレイヤー"
164+
DB["PostgreSQL<br/>+ pgvector"]
165+
Drizzle["Drizzle ORM"]
166+
end
167+
168+
subgraph "📡 外部API"
169+
TelegramAPI["Telegram API<br/>(gram.js)"]
170+
OpenAI["OpenAI API<br/>ベクトル埋め込み"]
171+
end
172+
173+
%% WebSocketイベントフロー
174+
Frontend -.->|"WsEventToServer<br/>• auth:login<br/>• message:query<br/>• dialog:fetch"| WS
175+
WS -.->|"WsEventToClient<br/>• message:data<br/>• auth:status<br/>• storage:progress"| Frontend
176+
177+
Electron -.->|"WebSocketイベント"| WS
178+
WS -.->|"リアルタイム更新"| Electron
179+
180+
%% サーバーレイヤー
181+
WS <--> Server
182+
Server --> SessionMgr
183+
SessionMgr --> Context
184+
185+
%% コアイベントシステム(アーキテクチャの要点)
186+
Context <==> AuthHandler
187+
Context <==> MessageHandler
188+
Context <==> DialogHandler
189+
Context <==> StorageHandler
190+
Context <==> ConfigHandler
191+
Context <==> EntityHandler
192+
Context <==> GramEventsHandler
193+
Context <==> MessageResolverHandler
194+
195+
%% イベントハンドラーからサービスへ
196+
AuthHandler --> AuthService
197+
MessageHandler --> MessageService
198+
DialogHandler --> DialogService
199+
StorageHandler --> StorageService
200+
ConfigHandler --> ConfigService
201+
EntityHandler --> EntityService
202+
GramEventsHandler --> ConnectionService
203+
MessageResolverHandler --> MsgResolverService
204+
205+
%% メッセージ処理パイプライン
206+
MessageService --> MsgResolverService
207+
MsgResolverService --> EmbeddingResolver
208+
MsgResolverService --> JiebaResolver
209+
MsgResolverService --> LinkResolver
210+
MsgResolverService --> MediaResolver
211+
MsgResolverService --> UserResolver
212+
213+
%% データレイヤー
214+
StorageService --> Drizzle
215+
Drizzle --> DB
216+
217+
%% 外部API
218+
AuthService --> TelegramAPI
219+
MessageService --> TelegramAPI
220+
DialogService --> TelegramAPI
221+
EntityService --> TelegramAPI
222+
EmbeddingResolver --> OpenAI
223+
224+
%% クライアントイベントシステム
225+
Frontend --> ClientAuth
226+
Frontend --> ClientMessage
227+
Frontend --> ClientStorage
228+
Frontend --> ClientEntity
229+
Frontend --> ClientServer
230+
231+
%% スタイリング
232+
classDef frontend fill:#4CAF50,stroke:#2E7D32,color:#fff,stroke-width:2px
233+
classDef websocket fill:#FF9800,stroke:#E65100,color:#fff,stroke-width:3px
234+
classDef server fill:#2196F3,stroke:#1565C0,color:#fff,stroke-width:2px
235+
classDef context fill:#E91E63,stroke:#AD1457,color:#fff,stroke-width:4px
236+
classDef handler fill:#9C27B0,stroke:#6A1B9A,color:#fff,stroke-width:2px
237+
classDef service fill:#607D8B,stroke:#37474F,color:#fff,stroke-width:2px
238+
classDef resolver fill:#795548,stroke:#3E2723,color:#fff,stroke-width:2px
239+
classDef data fill:#3F51B5,stroke:#1A237E,color:#fff,stroke-width:2px
240+
classDef external fill:#F44336,stroke:#C62828,color:#fff,stroke-width:2px
241+
242+
class Frontend,Electron,ClientAuth,ClientMessage,ClientStorage,ClientEntity,ClientServer frontend
243+
class WS websocket
244+
class Server,SessionMgr server
245+
class Context context
246+
class AuthHandler,MessageHandler,DialogHandler,StorageHandler,ConfigHandler,EntityHandler,GramEventsHandler,MessageResolverHandler handler
247+
class AuthService,MessageService,DialogService,StorageService,ConfigService,EntityService,ConnectionService,TakeoutService,MsgResolverService service
248+
class EmbeddingResolver,JiebaResolver,LinkResolver,MediaResolver,UserResolver resolver
249+
class DB,Drizzle data
250+
class TelegramAPI,OpenAI external
251+
```
252+
253+
### イベント駆動アーキテクチャの概要
254+
255+
- **🎯 CoreContext - 中央イベントバス**: EventEmitter3を使用してすべてのイベントを管理するシステムの中心
256+
- **ToCoreEvent**: コアシステムに送信されるイベント(auth:login、message:queryなど)
257+
- **FromCoreEvent**: コアシステムから発行されるイベント(message:data、auth:statusなど)
258+
- **イベントラッピング**: すべてのイベントの自動エラー処理とロギング
259+
- **セッション管理**: 各クライアントセッションに独自のCoreContextインスタンス
260+
261+
- **🌐 WebSocketイベントブリッジ**: リアルタイム双方向通信レイヤー
262+
- **イベント登録**: クライアントが受信したい特定のイベントを登録
263+
- **イベント転送**: フロントエンドとCoreContext間でイベントをシームレスに転送
264+
- **セッション永続性**: 接続全体でクライアント状態とイベントリスナーを維持
265+
266+
- **🔄 メッセージ処理パイプライン**: 複数のリゾルバーを通じたストリームベースのメッセージ処理
267+
- **埋め込みリゾルバー**: セマンティック検索のためにOpenAIを使用してベクトル埋め込みを生成
268+
- **Jiebaリゾルバー**: より良い検索機能のための中国語単語分割
269+
- **リンク/メディア/ユーザーリゾルバー**: さまざまなメッセージコンテンツタイプを抽出して処理
270+
271+
- **📡 イベントフロー**:
272+
1. フロントエンドがWebSocket経由でイベントを発行(例: `auth:login``message:query`
273+
2. サーバーが適切なCoreContextインスタンスにイベントを転送
274+
3. イベントハンドラーがイベントを処理し、対応するサービスを呼び出す
275+
4. サービスがCoreContext経由で結果イベントを発行
276+
5. WebSocketがリアルタイム更新のためにフロントエンドにイベントを転送
277+
278+
## 🚀 アクティビティ
279+
280+
[![Star History Chart](https://api.star-history.com/svg?repos=luoling8192/telegram-search&type=Date)](https://star-history.com/#luoling8192/telegram-search&Date)

0 commit comments

Comments
 (0)