Skip to content

fromList アーカイブで Summary(viewer_summary/getSummary) が Page List と同じスコープで集計されていない #370

Description

@YusukeHirao

概要

--list/--list-filefromList)アーカイブにおいて、Page List(Google Sheets の Page List シート、静的 HTML report、viewer の Pages 一覧)は config.roots(とそのリダイレクト/alias 解決先)にスコープを絞り込むようになった(#367)。一方、viewer の Summary 画面が参照する viewer_summarygetSummary())はこの絞り込みを通っておらず、content_items を直接集計している。

このため、fromList アーカイブでリスト外の内部ページが何らかの理由(crawler のバグ等、#369 参照)で content_items に混入した場合、Page List の件数と Summary の「総ページ数」等の集計値が食い違いうる。

想定される不整合の例

  • Page List: リストの URL 数 + リダイレクト先の数(例: 1,808 件のリストなら 1,817 件)
  • Summary の総ページ数: content_items を素のまま集計するため、リスト外の混入ページも数に含まれる(例: 1,831 件)

利用者からは「Page List と Summary で数が合わない、どちらが正しいのか」という混乱の原因になりうる。

対応しなかった理由(#367 時点)

getSummary() は read model(buildViewerReadModel)経由だけでなく、read model を経由しない実行経路からも呼ばれる共通関数。#367 で作った「fromList のとき config.roots に絞る」ロジック(computeFromListAllowedPageIds)は read model 構築時専用に実装したため、getSummary() 側にも同じ絞り込みを効かせるには、そのロジックを read model の外でも呼べる形に一般化する必要があり、#367 の対象範囲を超えると判断し見送った。

対応案(要検討)

  • getSummary() の集計クエリに fromList アーカイブの config.roots スコープ絞り込みを追加する
  • computeFromListAllowedPageIdspackages/@nitpicker/query/src/viewer-read-model/compute-from-list-allowed-page-ids.ts)を read model 外からも呼べる場所に移動、または同等のロジックを共有する
  • あるいは、揃えないことを仕様として明示し、viewer の Summary 画面に「fromList アーカイブでは Page List と一致しない場合がある」旨の注記を出す、という選択肢もある

関連

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions