# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

--------------------------------------------------------------------------------
SECRETS
--------------------------------------------------------------------------------

ハンドラー名
------------

SECRETS ハンドラー (SQ076) — API キー、パスワード、および機密情報の管理
ファイル システムとデータベース間のファイル権限のある認証情報。


説明
------------

シークレット ハンドラーは、機密データの安全なストレージとクエリを提供します。
すべてのシークレットはデータベース (bach.db:secrets) に保存され、オプションで
ローカルの JSON ファイルに保存されます。権限はファイルにあります: それがありません
ファイルを削除すると、すべてのシークレットが DB (ENT-44) から削除されます。

保管場所のシークレット ファイル: ~/.bach/bach_secrets.json (経由で構成可能)
system_config とキー 'secrets_file_path')。

各シークレットには、説明、カテゴリ、タイムスタンプを与えることができます。


操作
-----------

bach secrets list
    保存されているすべてのシークレットを表示します。この値はセキュリティ上の理由からです
    表示されず、キー、カテゴリ、説明、ソース、作成時間のみ
    時間。カテゴリとキーで並べ替えます。

bach secrets get <key>
    特定のシークレットの値を取得し、キー、説明を表示します。
    そして価値。シークレットが存在しない場合はエラー。

bach secrets set <key> <value> [<description>] [<category>]
    シークレットを保存または更新します。値は両方とも DB にあります
    Secrets ファイルにも書き込まれます (双方向同期)。
    パラメータ:
        <key>: 一意の識別子 (例: 「telegram_api_key」)
        <value>: シークレット値
        <description> (オプション): 説明、デフォルト: 空
        <category> (オプション): カテゴリ、デフォルト: 'general'

bach secrets delete <key>
    DB およびファイルからシークレットを削除します。シークレットが存在しない場合はエラー。

bach secrets sync
    ファイルからデータベースへの手動比較 (ファイル -> DB)。
    ファイル権限: ファイルが見つからない場合、DB は空になります。
    プレフィックス '_example_' のエントリはスキップされます。


例
---------

新しいシークレットの保存 (カテゴリあり):
    bach secrets set telegram_api_key "12345:ABCDEFG..." "Telegram Bot" "api"

シークレットの取得:
    bach secrets get telegram_api_key

すべてのシークレットのリスト:
    bach secrets list

シークレットの削除:
    bach secrets delete telegram_api_key

ファイル変更後の手動同期:
    bach secrets sync

シークレット ファイル (USB スティック) の上書き:
    bach settings set secrets_file_path /media/usb/my_secrets.json


FILES
-------

hub/secrets_handler.py
    ハンドラー実装 CLI エントリー ポイント: handle_secrets_command()。
    SecretsHandler クラスは DB 接続とファイル同期を管理します。

data/bach.db
    テーブル「シークレット」（キー、値、説明、カテゴリ、
    ソース、作成された_at、更新された_at、id).

~/.bach/bach_secrets.json
    すべてのシークレットを含むユーザー側 JSON ファイル (構造: メタ、シークレット、
    注）。同期によって自動生成されます。手動による編集は保持されます。

core/database.py
    データベース接続ユーティリティ (直接 sqlite3 接続へのフォールバック、
    インポートが失敗した場合)。


関連項目
----------

bach settings — Konfiguration von system_config Eintraegen
core/database — データベース アーキテクチャ
BACH-KONZEPTE/ENT-44 — ファイルと権限のある同期
