Skip to content

feat(server): 情報源の承認レイヤーを追加する - #1114

Draft
owk-owk130 wants to merge 7 commits into
feat/hil-1-retrieval-tracefrom
feat/hil-2-source-approval
Draft

feat(server): 情報源の承認レイヤーを追加する#1114
owk-owk130 wants to merge 7 commits into
feat/hil-1-retrieval-tracefrom
feat/hil-2-source-approval

Conversation

@owk-owk130

@owk-owk130 owk-owk130 commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

概要

ナレッジ HIL 基盤(計画: .brain/plans/knowledge-hil-foundation.md)の PR 2。Issue #1077 / #1078 のコード部分。
D1 の knowledge_sources を Source Control Plane とし、承認された情報源だけが Vectorize に index されることを構造的に保証する。

変更内容

  • knowledge_sources テーブル(source_path / canonical_url / source_hash / r2_etag / approval_status / 承認監査カラム / feat(knowledge): curated 区分を新設し検証用ナレッジを追加 #1083 の curated 契約カラム)
  • indexKnowledgeSource に全 index 経路を集約(R2 event / 全同期 / 管理画面の保存・アップロード・変換)
    • approved 以外は index しない。index 済みなのに未承認になった source はベクトルを削除して整合
    • 管理画面からの保存・アップロードは操作者の承認とみなし、新規・pending を approved に昇格(rejected / disabled は昇格しない)
    • R2 event 経路は source_hash 不変なら再 embedding をスキップ(一括アップロード時のコスト削減。全同期 API は従来どおり強制再構築)
  • 管理 API(super_admin): GET /admin/knowledge/sources(一覧)/ POST /sources/backfill(既存ナレッジの一括 approved 登録)/ PATCH /sources/status(approve = 再 index / reject・disable = ベクトル削除まで)
  • ファイル削除・全削除も manifest を同期(chunk_count リセット)

デプロイ手順(重要)

  1. db:migrate → deploy
  2. 各環境で POST /admin/knowledge/sources/backfill を 1 回実行(既存 329 ファイルを approved 登録)
  3. backfill 前に R2 に入った新規ファイルは pending で止まる。一覧から approve すれば index される
  4. backfill 前は既存ファイルの再アップロード(編集反映)も pending 登録だけで止まり、旧ベクトルが配信され続ける。migrate → deploy 直後に backfill を実行して窓を最小化する

local も同様: db:migrate:local → dev サーバー起動 → backfill。backfill 未実行のまま POST /sync を叩くと全ファイルが pending 登録されて index されないので注意。

暫定事項

  • 承認権限は既存ナレッジ管理に合わせ super_admin 暫定 Task 情報源の登録承認フローを設計 #1078 の「誰が承認できるか」は HIL Review UI(PR 3)で村職員ロールと合わせて見直す
  • 管理画面 UI(一覧・承認ボタン)は本 PR に含まない。PR 3 の HIL 画面と合わせて実装する

🤖 Generated with Claude Code

https://claude.ai/code/session_018BjNFvQjDzMwF8HaZHnJjP

@owk-owk130 owk-owk130 changed the title feat/hil 2 source approval feat(server): 情報源の承認レイヤーを追加する Sep 1, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for server

Status Category Percentage Covered / Total
🟢 Lines 98.18% (🎯 97%) 3576 / 3642
🟢 Statements 97.6% (🎯 96%) 3745 / 3837
🟢 Functions 98.5% (🎯 97%) 660 / 670
🟢 Branches 89.8% (🎯 87%) 1488 / 1657
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
server/src/db/schema.ts 100% 100% 100% 100%
server/src/handlers/r2-event-handler.ts 92% 84.61% 100% 91.83%
server/src/lib/crypto.ts 100% 100% 100% 100%
server/src/repository/knowledge-source-repository.ts 87.5% 100% 85.71% 87.5%
server/src/routes/admin/knowledge/convert.ts 97.14% 85.71% 100% 97.05%
server/src/routes/admin/knowledge/files.ts 100% 83.33% 100% 100%
server/src/routes/admin/knowledge/index.ts 100% 100% 100% 100%
server/src/routes/admin/knowledge/sources.ts 96.29% 87.5% 100% 98%
server/src/routes/admin/knowledge/sync.ts 100% 100% 100% 100%
server/src/services/knowledge/embedding.ts 95.83% 83.33% 100% 95.4%
server/src/services/knowledge/files.ts 100% 85.29% 100% 100%
server/src/services/knowledge/indexing.ts 100% 100% 100% 100%
server/src/services/knowledge/source-meta.ts 100% 100% 100% 100%
server/src/services/knowledge/sync.ts 100% 100% 100% 100%
server/src/services/knowledge/upload.ts 100% 86.36% 100% 100%
Generated in workflow #2108 for commit abaabf9 by the Vitest Coverage Report Action

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for web

Status Category Percentage Covered / Total
🟢 Lines 97.41% (🎯 96%) 1658 / 1702
🟢 Statements 96.28% (🎯 95%) 1764 / 1832
🟢 Functions 96.08% (🎯 95%) 711 / 740
🟢 Branches 89.93% (🎯 88%) 1117 / 1242
File CoverageNo changed files found.
Generated in workflow #2108 for commit abaabf9 by the Vitest Coverage Report Action

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for shared

Status Category Percentage Covered / Total
🟢 Lines 99.15% (🎯 98%) 235 / 237
🟢 Statements 80.96% (🎯 80%) 251 / 310
🟢 Functions 100% (🎯 98%) 79 / 79
🟢 Branches 62.87% (🎯 62%) 105 / 167
File CoverageNo changed files found.
Generated in workflow #2108 for commit abaabf9 by the Vitest Coverage Report Action

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for widget

Status Category Percentage Covered / Total
🟢 Lines 99.62% (🎯 98%) 265 / 266
🟢 Statements 97.94% (🎯 96%) 286 / 292
🟢 Functions 98.11% (🎯 98%) 52 / 53
🟢 Branches 93.28% (🎯 92%) 139 / 149
File CoverageNo changed files found.
Generated in workflow #2108 for commit abaabf9 by the Vitest Coverage Report Action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant