ktsn-ud commited on
Commit
ccb18c8
·
1 Parent(s): 9dfdcd5

Add data update methods and automation details to the system guide

Browse files
Files changed (1) hide show
  1. docs/システムガイド.md +72 -1
docs/システムガイド.md CHANGED
@@ -524,7 +524,61 @@ BM25F、単語ベクトル、同義語など各種手法を組み合わせて検
524
 
525
  **状況:** MySQLの企画データが更新された
526
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
527
  **手順:**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
528
  ```
529
  1. MySQLのデータを確認
530
 
@@ -538,7 +592,7 @@ BM25F、単語ベクトル、同義語など各種手法を組み合わせて検
538
  ├─ Step 6: 単語ベクトルを抽出
539
  └─ Step 7: 団体名インデックスを生成
540
 
541
- 3. サーバーを再起動
542
 
543
  4. フロントエンドで新しい企画データが見える
544
  ```
@@ -829,6 +883,23 @@ python scripts/build_all.py
829
  python -m uvicorn app.main:app --reload --port 7860
830
  ```
831
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
832
  ### 8.2 Docker でのデプロイ
833
 
834
  ```bash
 
524
 
525
  **状況:** MySQLの企画データが更新された
526
 
527
+ 本システムでは、データ更新を以下の3つの方法で実現できます。
528
+
529
+ #### 方法1: 自動更新(推奨)
530
+
531
+ 毎日午後3時(JST)に自動でデータを更新します。設定は不要です。
532
+
533
+ **流れ:**
534
+ ```
535
+ 毎日 18:00 UTC (3:00 JST)
536
+
537
+ GitHub Actions が自動実行
538
+
539
+ /tasks/update エンドポイントを呼び出し
540
+
541
+ スクリプト build_all.py が実行
542
+
543
+ 新しい企画データで検索エンジンが更新
544
+ ```
545
+
546
+ **設定ファイル:** `.github/workflows/update_data.yaml`
547
+
548
+ **カスタマイズ方法:** 更新時刻を変更したい場合は、`.github/workflows/update_data.yaml` の `cron` 行を編集します。
549
+
550
+ 例:毎日午前10時に変更
551
+ ```yaml
552
+ on:
553
+ schedule:
554
+ - cron: '0 1 * * *' # 毎日1時(JST)に実行
555
+ ```
556
+
557
+ #### 方法2: 手動トリガー
558
+
559
+ GitHub Actions の UI から手動でデータ更新をトリガーできます。
560
+
561
  **手順:**
562
+ 1. GitHub リポジトリの「Actions」タブを開く
563
+ 2. 左側で「update data」ワークフローを選択
564
+ 3. 「Run workflow」ボタンをクリック
565
+ 4. 約5-10分でデータが更新される
566
+
567
+ #### 方法3: APIエンドポイント経由
568
+
569
+ 以下のコマンドでデータ更新をリクエストできます:
570
+
571
+ ```bash
572
+ curl -X POST \
573
+ -H "X-API-KEY: YOUR_SECRET_KEY" \
574
+ https://your-fastapi-url/tasks/update
575
+ ```
576
+
577
+ このエンドポイントは `app/main.py` で定義されており、直接検索用アセットを再生成します。
578
+
579
+ **実行に要する時間:** 5-10分
580
+
581
+ **詳細な流れ:**
582
  ```
583
  1. MySQLのデータを確認
584
 
 
592
  ├─ Step 6: 単語ベクトルを抽出
593
  └─ Step 7: 団体名インデックスを生成
594
 
595
+ 3. サーバーを再起動(必要に応じて)
596
 
597
  4. フロントエンドで新しい企画データが見える
598
  ```
 
883
  python -m uvicorn app.main:app --reload --port 7860
884
  ```
885
 
886
+ **注記:** ステップ5(データ生成)は手動で実行する必要があります。本番環境ではこのステップが `.github/workflows/update_data.yaml` により自動実行されます。
887
+
888
+ **ローカル開発中のデータ更新の流れ:**
889
+
890
+ 通常の開発では、MySQLのデータが更新されたことをシミュレートして検索エンジンをテストしたい場合があります。その際は:
891
+
892
+ ```bash
893
+ # 方法1: 手動でスクリプト実行
894
+ python scripts/build_all.py
895
+
896
+ # 方法2: サーバー起動後、APIエンドポイント経由(本番と同じ)
897
+ curl -X POST -H "X-API-KEY: test_key" \
898
+ "http://localhost:7860/tasks/update"
899
+ ```
900
+
901
+ 本番環境では GitHub Actions により毎日自動的にこの処理が実行されるため、セクション6.2の「企画データの更新フロー」を参照してください。
902
+
903
  ### 8.2 Docker でのデプロイ
904
 
905
  ```bash