コンテンツにスキップ

LabelStore

インストールのレビュー済みの答えを保存するポート。1 つのエンティティまたはファセットへの判定で、元の文書から写し取ったもの。

ポート: LabelStore。 indx_interfaces.protocols で、indx_interfaces.labels のモデルの上に宣言しています(ADR-0076)。

Label は、レーンが返した 1 つの答えへの人の判定です。approved、正しい値を添えた corrected、 rejected のいずれかです。対象は EntityTarget(ブロック、そのページと枠、エンティティのラベル、文字範囲、 表記)か FacetTarget(文書、ページ、チャンクのいずれかのブロック、ファセット、答えたラベル)です。文書の ダイジェストと名前を持ち、任意で、埋めるタイプとフィールド、レビュー担当者が名乗った名前を持ちます。

class LabelStore(Protocol):
def put(self, owner: OwnerId, label: Label) -> None: ...
def get(self, owner: OwnerId, label_id: LabelId) -> Label | None: ...
def list(
self, owner: OwnerId, *, digest: SourceDigest | None = None, type_id: TypeId | None = None
) -> tuple[Label, ...]: ...
def delete(self, owner: OwnerId, label_id: LabelId) -> bool: ...

SchemaStore の隣の 4 つ目のストアのポートです。ポートは集約ごとに 分けるからです。ラベルが指す先を写し取るのは、読んだ元の保存された文書がクッキーのもので失効する一方、ラベルは 失効しないからです。失効しないので、purge はありません。同梱するバックエンドは memory、sqlite、 postgres の 3 つで、INDX_LABEL_STORE が名指します。

  • オーナー。 どのメソッドも最初に OwnerId を取り、オーナーをまたぐものはありません。
  • 同一性。 ラベルの ID はダイジェストと対象から導くので、同じ答えへの 2 つ目の判定の put は 1 つ目を 置き換えます。
  • 冪等性。 ない ID の delete は False です。
  • 絞り込み。 list は digest、type_id、またはその両方で絞り込みます。どちらもなければオーナーの ラベルをすべて返します。
  • 順序。 list はダイジェスト、次に ID の順でラベルを返します。
  • 検証。 モデルは、corrected でない訂正と、訂正のない corrected を拒みます。type_id と field が 保存されたタイプとそのフィールドを名指すかを確かめるのは、ストアではなくサーバーです。

tests/unit/test_store_conformance.py が、インストール済みのすべてのバックエンドをこの規則に従わせます。