Skip to content

Develop v2.1.0 - #1933

Merged
Ooka-Masashi merged 658 commits into
release_v2.1.0from
develop_v2.1.0
Sep 30, 2026
Merged

Ooka-Masashi merged 658 commits into
release_v2.1.0from
develop_v2.1.0

Conversation

@Ooka-Masashi

Copy link
Copy Markdown
Contributor

概要 (Summary)

関連Issue / チケット (Related Issues)

  • close #

変更タイプ (Type of Change)

  • 🚀 新機能追加 (Feature)
  • 🐛 バグ修正 (Bug Fix)
  • 🔒 セキュリティ修正 (Security Fix)
  • 🚫 機能のクローズ・非公開化・削除 (Feature Deprecation/Disable)
  • ⚠️ 破壊的変更・データ移行を伴う修正 (Breaking Change / Migration)
  • 📚 仕様書・マニュアル・APIリストの更新 (Documentation)

🤖 0. CI 自動チェック (API Inventory Drift)

PR ごとに WEKO3 コンテナを起動し、url_map のダンプ・台帳との突き合わせ・変更行の
到達可否測定を自動実行する。結果は PR コメントと Actions の artifact
(api-inventory-summary) に出る。

このリポジトリは public のため、台帳もベースラインも同梱していない。
実データはプライベートリポジトリ RCOSDP/weko-secret にあり、CI は Secret 経由で取得する。
以降この文書では、そこを単にプライベートリポジトリと呼ぶ。

台帳はブランチごとに内容が違うため、CI は weko 側と同名のブランチを
プライベートリポジトリから探して使う(head → base → 既定ブランチ の順)。
採用されたブランチ名は PR コメントの冒頭に出るので、件数を読む前にそこを見ること。
対応ブランチが無い場合は既定ブランチと比較され、コメント冒頭に警告が出る。
その件数は当てにならないので、PASS でも「確認済み」と読まないこと。
詳細: tools/api-inventory/ci/README.md §3a

  • CI が PASS している、または FAIL の各項目に対処済み
    Secret (API_INVENTORY_REPO / API_INVENTORY_SSH_KEY) が未設定のリポジトリ、
    および fork からの PR では、このジョブは何もせずスキップされる。

API を追加・変更した場合(必須)

  • プライベートリポジトリ側の作業ブランチを、この PR のブランチと同名で切った
    この PR が fix/issue62569 → develop_v2.0.4 なら、プライベート側も
    fix/issue62569 → develop_v2.0.4。同名にしておけば台帳 PR が未マージでも
    CI がそれを見るので、2つの PR のマージ順を気にしなくてよい。
  • プライベートリポジトリの api_snapshot.json を更新し、対応する PR を出した
    bash export WEKO_API_INVENTORY_DIR=/path/to/weko-secret ./install.sh python3 tools/api-inventory/scripts/snapshot.py --out "$WEKO_API_INVENTORY_DIR/api_snapshot.json"
    更新しないと CI が落ちる。公開リポジトリのコード変更とは別の PRになる。
  • プライベートリポジトリの weko3_api_list_full.tsv に行を追加・更新し、
    build_checklist.py で 24 列版を再生成した(未収載だと reconcile が FAIL する)
  • 台帳・スナップショット・実測結果をこの公開リポジトリにコミットしていない
    (git status に *.tsv / api_snapshot.json が出ていないこと)

FAIL したときの対処(要約)

まず PR コメント冒頭の台帳ブランチを見る。警告が出ていれば、件数を追う前に
プライベートリポジトリ側の対応ブランチを用意すること(比較相手が違うので件数に意味がない)。

ジョブが落ちる条件は 3 つある。PR コメントのどのセクションに件数が出ているかで切り分ける。

落ちた場所 落ちる条件
ベースラインとの差分 (drift.md) G1〜G7 のいずれかに該当
台帳との突き合わせ (reconcile.md) A + B + C + D + E の合計が 1 件以上
変更行の到達可否測定 (probe) G8 / G9 に該当(結果は artifact に含めないので Actions のログで件数を見る)
検出 意味 対処
G1 / G2 新規経路に認証系デコレータが無い / 認証系デコレータが削除された 実装を直す。意図的な公開なら台帳に根拠を書いてベースライン更新
G3 認証・認可デコレータのコメントアウトが増えた 原則やり直し。残す場合は理由をコード中のコメントに明記する
G4 *_PERMISSION_FACTORY / CSRF 保護 等が危険側の値に変わった 原則やり直し
G5 ModelView の can_delete / can_export が False → True 意図的なら台帳の data_op を更新
G6 静的解析で属性が取れない経路が追加された 台帳に行を追加してレビューする(外部ライブラリ由来など)
G7 依存パッケージの更新で経路が増減した 増えた経路は台帳に追加。消えた経路は行を削除するか allow に登録
G8 台帳で data_op が作成/更新/削除の経路に、未認証で到達した 原則やり直し。意図的な公開なら台帳の根拠を更新。data_op の記載誤りなら台帳を直す
G9 台帳では遮断なのに実測で到達(認可の回帰) 原則やり直し
reconcile A / E 実機にあるが台帳に無い(A: URI 単位 / E: 同一 URI の endpoint 単位) 台帳に行を追加する
reconcile B 台帳にあるが実機の url_map に無い 理由を確認し、正当なら allow に登録する
reconcile C / D メソッド・app 列の記載誤り 台帳を実機に合わせる

reconcile B のうち、実機に存在しないことが正当な行(プラグイン未登録・config で無効等)は
プライベートリポジトリの reconcile_allow.json に理由付きで登録する。理由なしの登録は不可。
登録済みの行は B'(既知・許容)として集計され、E'(endpoint が実機に無い)と併せてゲート対象外になる。

W1〜W6 は WARN でゲートは通るが、レビューでは見ること
(ModelView の追加 / 実装本体の変化 / HTTP メソッド・URL の変化 / 監視対象 config の変化 /
依存パッケージの版の変化)。特に W6(依存の版)は、ベースラインを CI と異なる環境で作ると
毎回出続けて形骸化するため、ベースラインは install.sh で作った環境から生成する。

CI の出力は件数のみ。該当した経路名は Actions には出ないので、プライベートリポジトリ側の
完全版レポート(--summary-only なしで再実行したもの)で確認すること
(このリポジトリは public で、ログ・artifact・PR コメントは誰でも読めるため)。


🔒 1. セキュリティ & API アクセス制御チェック (必須)

認証・認可 (Authentication & Authorization)

  • 新規/変更された Blueprint・View・REST リソースに適切なデコレータ / Permission を設定している
    • 例: @login_required, @pass_record, need(...), Invenio Access Action
    • /api/* では Permission.require(http_exception=403) を使うこと。
      @login_required は API アプリに security.login が無いため 401 ではなく 500 になる
    • CI: G1 / G2 が自動検出(デコレータの有無・削除)
  • 状態変更・破壊的メソッド (POST / PUT / PATCH / DELETE) の権限が正しく制限されている
    • CI: G8 が変更行を未認証で実測(使い捨て環境なので --allow-writes 付きで
      GET / HEAD 以外も叩く)
  • 未ログイン(Anonymous)状態でアクセスした際、意図しないデータ取得・変更が拒絶される
    • CI: G8 / G9 が変更行を実測。ただし測定対象は変更行のみ、かつ既定プロファイルで
      起動した経路のみ。ワークフロー系など未解決プレースホルダの行は skip される
  • 認可を config の permission factory に委ねている場合、None で無効化していない
    • CI: G4 が *_PERMISSION_FACTORY 等を監視

機能クローズ・非公開化の場合 (Feature Disable)

  • UI(画面・ボタン)の非表示だけでなく、バックエンド API(ルーティング・View)も完全に遮断されている
  • 無効化状態で直接 API を叩いた場合、404 Not Found または 403 Forbidden が返ることを確認した

🧪 2. テストコード観点チェック (pytest / Invenio Test Suite)

権限・異常系テスト (Negative & Authorization Tests)

  • 未認証アクセス (Anonymous): トークン/セッションなしのリクエストで 401 Unauthorized または 403 Forbidden / 404 Not Found が返ることを検証するテストがある
  • 権限不足ユーザー (Forbidden): 閲覧権限のみのユーザーが更新/削除 API を叩いた際に 403 になるテストがある
  • 無効化/非公開機能の遮断テスト: 対象機能が無効化されている場合、エンドポイントが 404 / 403 を返すテストがある

境界値・入力バリデーションテスト (Boundary & Validation)

  • 不正なパラメータ(巨大ファイル、異常な MIME タイプ、無効な JSON/XML スキーマ、SQLi/XSS ペイロード等)で適切に 400 Bad Request / バリデーションエラーが返るテストがある

データ整合性・トランザクションテスト (Integrity & Rollback)

  • ファイルストレージ(S3/ローカル)書き込み失敗時や DB エラー時に、中途半端なレコードやゴミファイルが残らずロールバックされるテストがある

🛡️ 3. データ保護 & 破壊的変更防止チェック (Data Safety)

  • 物理削除・上書きの安全性:
    • ファイル・アイテム・メタデータの完全削除/置換処理に、意図しない一括削除や別レコードへの誤適用リスクがない
    • 論理削除、バージョン管理、バックアップ等のロールバック機構が考慮されている
  • トランザクション整合性:
    • DB 更新とストレージ操作がアトミックに管理されている

⚙️ 4. マイグレーション & システム影響チェック (Invenio / WEKO3 Stack)

データベース (DB / Alembic)

  • invenio alembic upgrade(適用)および downgrade(ロールバック)スクリプトを作成・検証した
  • 既存データに対する破壊的変更(カラム削除、型変更、NOT NULL 制約追加等)の移行スクリプト/データパッチを用意した

検索インデックス (Elasticsearch / OpenSearch)

  • マッピング定義変更の有無を確認した
  • インデックス再作成(Reindex)やエイリアス切り替え手順を準備・検証した

設定 & 非同期処理 (Config / Celery / Cache)

  • invenio.cfg / 環境変数のデフォルト値を設定した
  • Celery タスクのシグネチャ変更によるキュー滞留・不整合が発生しない
  • キャッシュ(Redis/Memcached)のパージが必要か確認した

📚 5. ドキュメント・仕様書更新チェック (weko-document)

  • API インベントリ: ツールは本リポジトリの tools/api-inventory/、
    台帳・調査記録はプライベートリポジトリ(public リポジトリには置かない)。
    §0 のチェック項目で対応済みなら、ここは確認のみ。
    • エンドポイントの追加・変更・廃止、メソッド、認証・認可要件、リクエスト/レスポンス仕様を更新した
    • 調査記録(weko3_api_auth_findings.md)もプライベートリポジトリに置く。台帳は二重管理しない
  • WEKO3 機能仕様書:
    • 対象機能の仕様追加・変更・クローズ(非公開化)内容を反映した
  • 各種マニュアル (管理者 / 利用者マニュアル):
    • 画面導線・操作手順・権限仕様の変更を反映した
  • 更新不要な場合(理由):

📋 6. 動作検証エビデンス (Verification Evidence)

テスト実行結果

cd modules/<対象モジュール> && pytest
# -> PASS

CI の成果物 (artifact: api-inventory-summary)

ファイル 内容
drift.md ベースラインとの差分(件数のみ)
reconcile.md 台帳と実機の突き合わせ(件数のみ)

明細(該当した経路名・実測結果)は公開できないため artifact に含めていない。
プライベートリポジトリ側で同じコマンドを --summary-only なしで実行して確認する。

手動で確認したこと

ivis-miyachi and others added 30 commits June 11, 2026 10:33
weko#57254 fix delete index issue
Compile multilingual files(#60737)
Create SQL migration for item_type_mapping constraints(#61275)
Top page, item landing page and search-result page each called
get_search_setting() three times per request to read display_control
sub-settings (display_facet_search / display_index_tree /
display_community). get_search_setting() issues DB queries via
SearchManagement.get() and is not cached, so the same setting object was
fetched 3x per view (~4 extra DB round-trips each).

Fetch display_control once per view and reuse it. Semantics are
unchanged (read-only reuse of the same dict); ~12 redundant queries
removed across the three pages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Three independent issues prevented these tests from running:

- records-ui itemtypes fixture: ItemType uses SQLAlchemy-Continuum
  versioning, under which a single interleaved flush could emit the
  item_type_mapping INSERTs ahead of their parent item_type rows,
  raising fk_item_type_mapping_item_type_id_item_type. Add item_type
  rows and flush them before adding the mappings.

- weko-theme db fixture: create_all() creates only the parent
  (range-partitioned) user_activity_logs table, not a child partition,
  so activity logging during tests failed with "no partition of
  relation ... found". Create the current-month partition after
  create_all().

- weko-theme test_get_weko_contents: passed a bare string 'comm1' where
  get_weko_contents expects request.args (dict-like); 'c' in 'comm1' is
  a substring match, so get_community_id then called str.get() and
  raised AttributeError. Pass {'c': 'comm1'} instead.

Verified: weko-theme test_utils/test_views, weko-search-ui test_search,
weko-records-ui test_default_view_method[1-4] all pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
default_view_method looped over record.navi paths twice and called
Indexes.get_index() for every path in each loop (building path_name_dict
and then belonging_community), issuing the same DB lookups twice over.

Cache Indexes.get_index() results by path and reuse them in both loops.
Behaviour is unchanged; redundant per-path index queries are eliminated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
WidgetDesignSetting.select_by_repository_id() is queried several times
while rendering a page (get_design_layout and has_widget_design both
read the same repository's design), each time hitting the DB and
re-parsing settings JSON.

Memoize the lookup on flask.g so it runs once per request. g is cleared
each request, so no cross-request invalidation is needed; the result is
only read by callers. update()/create() drop the cached entry to avoid
serving a stale value within the same request.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
get_search_detail_keyword() rebuilt the detail-search conditions on every
page render (top page and item landing page): loading all item types and
walking the browsing tree each time. The result depends only on the
current language and authentication state (guest vs authenticated get
different browsing trees); item types / indexes / settings change
infrequently.

Cache the JSON result on the shared cache keyed by host + language + auth
state, with a short TTL (WEKO_SEARCH_DETAIL_KEYWORD_CACHE_TTL, default
300s) so staleness is bounded without needing strict invalidation hooks.
The str_ argument is unused by the body, so it does not affect the result
or key.

test_get_search_detail_keyword clears the cache between calls that change
underlying data, since it verifies the computation rather than caching.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two test-fixture gaps in weko-items-ui:

- db fixture: create_all() only creates the parent (range-partitioned)
  user_activity_logs table, so activity logging during a test failed with
  "no partition of relation ... found". Create the current-month
  partition after create_all() (same fix already applied to weko-theme).

- app fixture configured CACHE_* but never called InvenioCache(app_), so
  current_cache raised KeyError('invenio-cache'). Initialise it so cache-
  backed code paths can be exercised.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The top-page ranking runs up to five Elasticsearch aggregations and then a
per-item permission check for every candidate, on every render when the
front page is set to show rankings.

Cache the result on the shared cache with a short TTL
(WEKO_ITEMS_UI_RANKING_CACHE_TTL, default 300s). The key includes the
settings signature, the date, and the user identity: guests share one key
(high hit rate for the common anonymous case) while each authenticated
user gets their own, because permission filtering can surface a user's own
not-yet-public items and must not leak across users. Caching is skipped
when the cache extension is not configured. This also bounds the per-item
N+1 record lookups to once per TTL per user-context.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (4-3)

For each search-result hit, sort_meta_data_by_options re-fetched and
recomputed the item-type derived data (ItemTypes.get_by_id, option/order
lists, hide list and JPCOAR mapping) even though a results page renders
many hits that share the same item type.

This data depends only on item_type_id and is read-only for the rest of
the function (to_orderdict only reads the order list; solst_dict_array is
built into a fresh list), so memoize it per request on flask.g. g is
cleared each request, so no cross-request invalidation is needed.

Verified with test_sort_meta_data_by_options[*] and the sample /
no_item_type_id / exception variants.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
default_view_method rebuilt the full JPCOAR OAI-PMH XML on every render
(etree.tostring(getrecord(...))) only to feed the Google Scholar / Dataset
meta tags. The XML depends only on the record, not the user.

Cache it on the shared cache keyed by OAI id + record revision, so an edit
(which bumps the revision) invalidates the entry immediately, with a short
TTL (WEKO_RECORDS_UI_GOOGLE_XML_CACHE_TTL, default 300s) as a backstop for
changes not reflected in the revision. Caching is skipped when the cache
extension is not configured.

Verified with test_default_view_method (records-ui test app has the cache
extension, so the cache path is exercised).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The records_rest item type fixture added item_type_name, item_type and the
FK-referencing item_type_mapping in a single begin_nested() flush. ItemType
uses SQLAlchemy-Continuum versioning, under which that interleaved flush can
emit the item_type_mapping INSERT ahead of its parent item_type row and
raise fk_item_type_mapping_item_type_id_item_type. Flush the item type
before adding the mapping (same fix already applied in weko-records-ui).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mhaya and others added 26 commits September 28, 2026 15:38
- invenio-stats: リクエストの後はフィクスチャのオブジェクトがセッションから
  外れるので、比較に使う id を先に控える
- weko-search-ui: テスト用のインデックスを、フィクスチャのインデックスと
  (parent, position) が重ならない位置に作る

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
権限判定はファイル実体の JSON にある accessrole を見る。アイテム登録時は
メタデータがそこへ書き込まれるが、テストのフィクスチャは書き込んでいない
ため、判定が常に許可になりテストが成立していなかった。登録時と同じく
メタデータを書き込んでから判定させる。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
画像を開く処理に権限判定を入れたため、リクエストの外で動くサムネイル作成
タスクが、利用者の情報が無く失敗するようになっていた。内部処理なので対象の
オブジェクトを直接解決し、画像を開く処理にはそれを使わせる。利用者の
リクエストで通る経路の判定は変えない。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
直前のコミットは、UI 側と共有の limiter を /api アプリにも初期化したため、
既定の制限(WEKO_API_LIMIT_RATE_DEFAULT)が /api 配下の全経路にかかって
いた。検索・統計・ファイル・IIIF の画像などは、同じ IP を共有する環境で
通常の閲覧でも制限に達しうる。

- 既定の制限を持たないログイン専用の Limiter を /api アプリにだけ初期化し、
  ログイン API にだけ付ける。制限値は WEKO_API_LIMIT_RATE_DEFAULT を使う
- 共有の limiter は従来どおり /api アプリには初期化しない
- Flask-Limiter はビュー関数の名前で制限を照合するため、MethodView の
  メソッドではなく decorators 属性で as_view() の関数に付ける
  (メソッドに付けた従来の指定は名前が合わず効いていなかった)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SP の属性は、Web サーバ上のログインスクリプト(secure/login.py, login.php)が
WEKO へ送る。その受け付けを、送信元のアドレスで限定する。

- weko-accounts: 受け付けるアドレスを WEKO_ACCOUNTS_SHIB_SP_ALLOWED_ADDRS
  (既定 127.0.0.1 / ::1)に限るデコレータを付ける。それ以外は 403
- login.py / login.php: 送り先をループバックアドレスにし、Host ヘッダに
  公開ホスト名を入れる
- nginx: /weko/shib/login への GET 以外をループバックアドレスからだけ許可する
  (weko.conf / weko-ams.conf / weko-ams-restricted.conf)

既存の環境では、login.py / login.php と nginx の設定を同時に更新すること。
どちらかだけでは Shibboleth ログインが通らなくなる。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
real_ip は信頼するプロキシ(プライベートアドレス)からの接続について
X-Forwarded-For で $remote_addr を書き換える。そのため $remote_addr で
ループバックかを判定すると、信頼するアドレスから X-Forwarded-For に
ループバックを入れた要求を通してしまう。

/weko/shib/login の判定を $realip_remote_addr(書き換える前の接続元)で
行い、WEKO へ渡す REMOTE_ADDR も同じ値にする。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix group permission issue (No. 307, 312~326)
fix widget permission issue (No. 290, 303, 304)
fix: Shibboleth SP の属性の受け付けを SP のログインスクリプトからの要求に限る
fix: ログイン API の失敗応答を揃え、回数制限をログイン API にかける
fix: 管理系 API の担当範囲を確認し、SWORD の登録可能ロールの設定を効かせる
fix: 公開向けの配信・統計・補助 API で公開状態と閲覧権限を確認する
fix: ファイルの取得・プレビュー・IIIF でファイル単位の権限判定を行う
fix: デポジット・レコードの更新系 API の権限判定を有効にする
fix: nginx の gzip が HTTP/1.0 のリクエストで効かない問題と、起動時の警告を直す
Fix/issue62782/issue62796(No.557, 560, 618, 1016)
Delete unnecessary instance.cfg (#63281)

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 300 files, and this pull request has 793

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 672 files, which is 572 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 11cf90e7-4292-4e77-af2f-52d1456fd3af

📥 Commits

Reviewing files that changed from the base of the PR and between 5f4bef4 and 2614af9.

⛔ Files ignored due to path filters (121)
  • modules/weko-search-ui/tests/data/ams/broken_word.docx is excluded by !**/*.docx
  • modules/weko-search-ui/tests/data/ams/png_file.pdf is excluded by !**/*.pdf
  • nginx/ams/weko-frontend/public/img/ams/bg.jpg is excluded by !**/*.jpg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-close.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-detail-search.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-display-item.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-filter.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-gototop.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-gototop_sp.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-index.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-indextree.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-item.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-login.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-logout.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-mylist.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/btn/btn-remove.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/energy-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/environmental-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/frontier-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/humanities-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_a.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_add.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_approval.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_block_active.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_block_inactive.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_calendar.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_check.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_close.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_close02.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_data.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_detailed-search.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_dl-rank.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_down-arrow-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_down-arrow-blue.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_down-arrow.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_download-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_download.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_export.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_external.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_eye-fill.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_feed.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_file.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_filelist.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_filter.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_group.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_index.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_info.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_information-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_item-display.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_item.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_language.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_language02.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_left-arrow-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_login.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_logout.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_mail-send.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_mail.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_member.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_menu.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_minus.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_mylist-blue.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_mylist.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_open-all.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_open-group.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_order.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_organization.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_plus01.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_plus02.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_plus03.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_preview.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_private.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_public.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_q.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_ranking.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_remove.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_restricted.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_rhombus.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_right-arrow-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_search-results.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_search.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_sort01.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_star-fill-black.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_star-fill.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_star.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_statistics.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_summary_active.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_summary_inactive.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_table_active.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_table_inactive.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_thesis.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_up-arrow-bk.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_up-arrow-blue.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_up-arrow.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_update-date.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_upload-date.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/icon/icon_upload.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/informatics-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/kv.jpg is excluded by !**/*.jpg
  • nginx/ams/weko-frontend/public/img/ams/license/by-nc-nd.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/by-nc-sa.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/by-nc.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/by-nd.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/by-sa.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/by.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/license/cc-zero.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/lifeScience-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/logo/gakunin.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/logo/gakunin_logo.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/logo/logo.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/logo/logo.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/logo/logo01.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/logo/logo02.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/logo/logo_w.svg is excluded by !**/*.svg
  • nginx/ams/weko-frontend/public/img/ams/manufacturing-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/nanotech-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/naturalScience-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/noimage_detail.jpg is excluded by !**/*.jpg
  • nginx/ams/weko-frontend/public/img/ams/noimage_thumbnail.jpg is excluded by !**/*.jpg
  • nginx/ams/weko-frontend/public/img/ams/others-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/social-sample.png is excluded by !**/*.png
  • nginx/ams/weko-frontend/public/img/ams/thumbnail-sample.PNG is excluded by !**/*.png
📒 Files selected for processing (672)
  • .github/workflows/api-inventory-drift.yml
  • .github/workflows/api-inventory-tests.yml
  • .github/workflows/claude-pr-review.yml
  • .github/workflows/unit-tests.yml
  • .gitignore
  • AGENTS.md
  • Dockerfile.arm64
  • README-TEST.md
  • docker-compose.arm64.yml
  • docker-compose.yml
  • docker-compose2.yml
  • docs/OPERATIONS.md
  • docs/RULE.md
  • docs/superpowers/plans/2026-09-01-claude-pr-review-integration.md
  • docs/superpowers/specs/2026-09-01-claude-pr-review-integration-design.md
  • docs/v2.1.0-test-reconciliation.textile
  • elasticsearch/Dockerfile.arm64
  • inbox/Dockerfile
  • inbox/Dockerfile.arm64
  • modules/invenio-accounts/invenio_accounts/admin.py
  • modules/invenio-accounts/invenio_accounts/alembic/b5c2d8a5bf90_create_invenio_accounts_branch.py
  • modules/invenio-accounts/requirements2.txt
  • modules/invenio-accounts/tests/conftest.py
  • modules/invenio-accounts/tests/test_admin.py
  • modules/invenio-accounts/tests/test_token_duration.py
  • modules/invenio-accounts/tests/test_views.py
  • modules/invenio-accounts/tox.ini
  • modules/invenio-communities/invenio_communities/admin.py
  • modules/invenio-communities/invenio_communities/models.py
  • modules/invenio-communities/requirements2.txt
  • modules/invenio-communities/tests/conftest.py
  • modules/invenio-communities/tests/test_admin.py
  • modules/invenio-communities/tests/test_invenio_communities.py
  • modules/invenio-communities/tests/test_models.py
  • modules/invenio-communities/tox.ini
  • modules/invenio-db/requirements2.txt
  • modules/invenio-db/tests/conftest.py
  • modules/invenio-db/tests/test_cli.py
  • modules/invenio-db/tests/test_examples_app.py
  • modules/invenio-db/tox.ini
  • modules/invenio-deposit/requirements2.txt
  • modules/invenio-deposit/tests/test_examples_app.py
  • modules/invenio-deposit/tox.ini
  • modules/invenio-files-rest/invenio_files_rest/admin.py
  • modules/invenio-files-rest/invenio_files_rest/alembic/8644b32a3eec_add_column_files_location.py
  • modules/invenio-files-rest/invenio_files_rest/permissions.py
  • modules/invenio-files-rest/invenio_files_rest/views.py
  • modules/invenio-files-rest/requirements2.txt
  • modules/invenio-files-rest/tests/conftest.py
  • modules/invenio-files-rest/tests/test_admin.py
  • modules/invenio-files-rest/tests/test_permissions.py
  • modules/invenio-files-rest/tests/test_views_multipart.py
  • modules/invenio-files-rest/tests/test_views_objectversion.py
  • modules/invenio-files-rest/tests/testutils.py
  • modules/invenio-files-rest/tox.ini
  • modules/invenio-iiif/invenio_iiif/config.py
  • modules/invenio-iiif/invenio_iiif/handlers.py
  • modules/invenio-iiif/invenio_iiif/manifest.py
  • modules/invenio-iiif/invenio_iiif/permissions.py
  • modules/invenio-iiif/invenio_iiif/tasks.py
  • modules/invenio-iiif/invenio_iiif/views.py
  • modules/invenio-iiif/requirements2.txt
  • modules/invenio-iiif/tests/test_handlers.py
  • modules/invenio-iiif/tests/test_manifest.py
  • modules/invenio-iiif/tests/test_permissions.py
  • modules/invenio-iiif/tests/test_views.py
  • modules/invenio-iiif/tox.ini
  • modules/invenio-indexer/tests/conftest.py
  • modules/invenio-indexer/tests/test_api.py
  • modules/invenio-indexer/tests/test_cli.py
  • modules/invenio-indexer/tox.ini
  • modules/invenio-mail/invenio_mail/alembic/b1495e98969b_create_mailtemplateusers.py
  • modules/invenio-mail/invenio_mail/alembic/ddbb24276fdc_create_mail_templates_table.py
  • modules/invenio-mail/requirements2.txt
  • modules/invenio-mail/tox.ini
  • modules/invenio-oaiharvester/invenio_oaiharvester/admin.py
  • modules/invenio-oaiharvester/requirements2.txt
  • modules/invenio-oaiharvester/tests/conftest.py
  • modules/invenio-oaiharvester/tests/test_admin.py
  • modules/invenio-oaiharvester/tests/test_cli.py
  • modules/invenio-oaiharvester/tests/test_harvester.py
  • modules/invenio-oaiharvester/tests/test_tasks.py
  • modules/invenio-oaiharvester/tox.ini
  • modules/invenio-oaiserver/invenio_oaiserver/query.py
  • modules/invenio-oaiserver/requirements2.txt
  • modules/invenio-oaiserver/tests/conftest.py
  • modules/invenio-oaiserver/tests/test_query.py
  • modules/invenio-oaiserver/tests/test_response.py
  • modules/invenio-oaiserver/tox.ini
  • modules/invenio-oauth2server/invenio_oauth2server/templates/invenio_oauth2server/authorize.html
  • modules/invenio-oauth2server/invenio_oauth2server/templates/invenio_oauth2server/errors.html
  • modules/invenio-oauth2server/invenio_oauth2server/translations/en/LC_MESSAGES/messages.mo
  • modules/invenio-oauth2server/invenio_oauth2server/translations/en/LC_MESSAGES/messages.po
  • modules/invenio-oauth2server/invenio_oauth2server/translations/ja/LC_MESSAGES/messages.mo
  • modules/invenio-oauth2server/invenio_oauth2server/translations/ja/LC_MESSAGES/messages.po
  • modules/invenio-oauth2server/invenio_oauth2server/translations/messages.pot
  • modules/invenio-oauth2server/invenio_oauth2server/views/server.py
  • modules/invenio-oauth2server/requirements2.txt
  • modules/invenio-oauth2server/tests/conftest.py
  • modules/invenio-oauth2server/tests/test_provider.py
  • modules/invenio-oauth2server/tests/test_settings.py
  • modules/invenio-oauth2server/tox.ini
  • modules/invenio-previewer/requirements2.txt
  • modules/invenio-previewer/tox.ini
  • modules/invenio-queues/requirements2.txt
  • modules/invenio-queues/tox.ini
  • modules/invenio-records-rest/invenio_records_rest/facets.py
  • modules/invenio-records-rest/invenio_records_rest/serializers/response.py
  • modules/invenio-records-rest/invenio_records_rest/views.py
  • modules/invenio-records-rest/requirements2.txt
  • modules/invenio-records-rest/tests/conftest.py
  • modules/invenio-records-rest/tests/test_custom_endpoints.py
  • modules/invenio-records-rest/tests/test_facets.py
  • modules/invenio-records-rest/tests/test_permissions.py
  • modules/invenio-records-rest/tests/test_serializer_json.py
  • modules/invenio-records-rest/tests/test_serializer_response.py
  • modules/invenio-records-rest/tests/test_views_item_put.py
  • modules/invenio-records-rest/tests/test_views_search.py
  • modules/invenio-records-rest/tests/test_views_serializers.py
  • modules/invenio-records-rest/tox.ini
  • modules/invenio-records/invenio_records/api.py
  • modules/invenio-records/requirements2.txt
  • modules/invenio-records/tests/test_api.py
  • modules/invenio-records/tox.ini
  • modules/invenio-resourcesyncclient/requirements2.txt
  • modules/invenio-resourcesyncclient/tests/conftest.py
  • modules/invenio-resourcesyncclient/tests/test_utils.py
  • modules/invenio-resourcesyncclient/tox.ini
  • modules/invenio-resourcesyncserver/invenio_resourcesyncserver/api.py
  • modules/invenio-resourcesyncserver/invenio_resourcesyncserver/permissions.py
  • modules/invenio-resourcesyncserver/invenio_resourcesyncserver/query.py
  • modules/invenio-resourcesyncserver/invenio_resourcesyncserver/views.py
  • modules/invenio-resourcesyncserver/requirements2.txt
  • modules/invenio-resourcesyncserver/tests/conftest.py
  • modules/invenio-resourcesyncserver/tests/test_admin.py
  • modules/invenio-resourcesyncserver/tests/test_api.py
  • modules/invenio-resourcesyncserver/tests/test_permissions.py
  • modules/invenio-resourcesyncserver/tests/test_query.py
  • modules/invenio-resourcesyncserver/tests/test_utils.py
  • modules/invenio-resourcesyncserver/tests/test_views.py
  • modules/invenio-resourcesyncserver/tox.ini
  • modules/invenio-s3/requirements2.txt
  • modules/invenio-s3/tox.ini
  • modules/invenio-stats/invenio_stats/permissions.py
  • modules/invenio-stats/invenio_stats/views.py
  • modules/invenio-stats/requirements2.txt
  • modules/invenio-stats/tests/conftest.py
  • modules/invenio-stats/tests/test_cli.py
  • modules/invenio-stats/tests/test_queries.py
  • modules/invenio-stats/tests/test_utils.py
  • modules/invenio-stats/tests/test_views.py
  • modules/invenio-stats/tox.ini
  • modules/weko-accounts/requirements2.txt
  • modules/weko-accounts/setup.py
  • modules/weko-accounts/tests/conftest.py
  • modules/weko-accounts/tests/test_api.py
  • modules/weko-accounts/tests/test_rest.py
  • modules/weko-accounts/tests/test_utils.py
  • modules/weko-accounts/tests/test_views.py
  • modules/weko-accounts/tox.ini
  • modules/weko-accounts/weko_accounts/alembic/a8e506eb5e32_create_weko_accounts_branch.py
  • modules/weko-accounts/weko_accounts/api.py
  • modules/weko-accounts/weko_accounts/config.py
  • modules/weko-accounts/weko_accounts/errors.py
  • modules/weko-accounts/weko_accounts/ext.py
  • modules/weko-accounts/weko_accounts/rest.py
  • modules/weko-accounts/weko_accounts/utils.py
  • modules/weko-accounts/weko_accounts/views.py
  • modules/weko-admin/requirements2.txt
  • modules/weko-admin/tests/conftest.py
  • modules/weko-admin/tests/test_admin.py
  • modules/weko-admin/tests/test_api.py
  • modules/weko-admin/tests/test_ext.py
  • modules/weko-admin/tests/test_models.py
  • modules/weko-admin/tests/test_permissions.py
  • modules/weko-admin/tests/test_utils.py
  • modules/weko-admin/tests/test_views.py
  • modules/weko-admin/tox.ini
  • modules/weko-admin/weko_admin/alembic/06db73ed4026_create_weko_admin_branch.py
  • modules/weko-admin/weko_admin/alembic/7dc0b1ab5631_add_columns.py
  • modules/weko-admin/weko_admin/alembic/b4d2f3c0734b_update.py
  • modules/weko-admin/weko_admin/config.py
  • modules/weko-admin/weko_admin/models.py
  • modules/weko-admin/weko_admin/permissions.py
  • modules/weko-admin/weko_admin/utils.py
  • modules/weko-admin/weko_admin/views.py
  • modules/weko-authors/requirements2.txt
  • modules/weko-authors/tests/conftest.py
  • modules/weko-authors/tests/test_tasks.py
  • modules/weko-authors/tests/test_utils.py
  • modules/weko-authors/tests/test_views.py
  • modules/weko-authors/tox.ini
  • modules/weko-authors/weko_authors/alembic/1e377b157a5d_add_repository_id_column.py
  • modules/weko-authors/weko_authors/alembic/5872b2d73941_update.py
  • modules/weko-authors/weko_authors/alembic/b2ce1889616c_create_author_community_relation_tables.py
  • modules/weko-authors/weko_authors/alembic/cb9079814bd2_create_weko_authors_branch.py
  • modules/weko-authors/weko_authors/alembic/e471f74f4f27_add_affiliation.py
  • modules/weko-authors/weko_authors/translations/en/LC_MESSAGES/messages.mo
  • modules/weko-authors/weko_authors/translations/ja/LC_MESSAGES/messages.mo
  • modules/weko-bulkupdate/requirements2.txt
  • modules/weko-bulkupdate/tox.ini
  • modules/weko-deposit/requirements2.txt
  • modules/weko-deposit/tests/conftest.py
  • modules/weko-deposit/tests/test_api.py
  • modules/weko-deposit/tests/test_rest.py
  • modules/weko-deposit/tests/test_tasks.py
  • modules/weko-deposit/tests/test_utils.py
  • modules/weko-deposit/tests/test_weko_deposit.py
  • modules/weko-deposit/tox.ini
  • modules/weko-deposit/weko_deposit/config.py
  • modules/weko-gridlayout/requirements2.txt
  • modules/weko-gridlayout/tests/conftest.py
  • modules/weko-gridlayout/tests/test_admin.py
  • modules/weko-gridlayout/tests/test_api.py
  • modules/weko-gridlayout/tests/test_models.py
  • modules/weko-gridlayout/tests/test_services.py
  • modules/weko-gridlayout/tests/test_utils.py
  • modules/weko-gridlayout/tests/test_views.py
  • modules/weko-gridlayout/tox.ini
  • modules/weko-gridlayout/weko_gridlayout/admin.py
  • modules/weko-gridlayout/weko_gridlayout/alembic/f8c7626d048b_create_weko_gridlayout_branch.py
  • modules/weko-gridlayout/weko_gridlayout/models.py
  • modules/weko-gridlayout/weko_gridlayout/services.py
  • modules/weko-gridlayout/weko_gridlayout/static/js/weko_gridlayout/widget.design.js
  • modules/weko-gridlayout/weko_gridlayout/static/js/weko_gridlayout/widget.setting.js
  • modules/weko-gridlayout/weko_gridlayout/views.py
  • modules/weko-groups/requirements2.txt
  • modules/weko-groups/tests/test_views.py
  • modules/weko-groups/tests/test_widgets.py
  • modules/weko-groups/tox.ini
  • modules/weko-groups/weko_groups/alembic/3686c3a62594_create_weko_groups_branch.py
  • modules/weko-groups/weko_groups/models.py
  • modules/weko-groups/weko_groups/views.py
  • modules/weko-handle/requirements2.txt
  • modules/weko-handle/tests/conftest.py
  • modules/weko-handle/tox.ini
  • modules/weko-index-tree/requirements2.txt
  • modules/weko-index-tree/tests/conftest.py
  • modules/weko-index-tree/tests/test_api.py
  • modules/weko-index-tree/tests/test_rest.py
  • modules/weko-index-tree/tests/test_utils.py
  • modules/weko-index-tree/tox.ini
  • modules/weko-index-tree/weko_index_tree/alembic/70a7e1c4809b_create_weko_index_tree_branch.py
  • modules/weko-index-tree/weko_index_tree/alembic/b21aaf04d802_update.py
  • modules/weko-index-tree/weko_index_tree/alembic/efd70c593f4b_update_index.py
  • modules/weko-index-tree/weko_index_tree/api.py
  • modules/weko-index-tree/weko_index_tree/rest.py
  • modules/weko-index-tree/weko_index_tree/utils.py
  • modules/weko-indextree-journal/requirements2.txt
  • modules/weko-indextree-journal/tests/conftest.py
  • modules/weko-indextree-journal/tox.ini
  • modules/weko-indextree-journal/weko_indextree_journal/alembic/ad3fd78b0175_update.py
  • modules/weko-indextree-journal/weko_indextree_journal/alembic/b6cb93e7e896_add_column.py
  • modules/weko-indextree-journal/weko_indextree_journal/alembic/fa0f8230e44b_create_weko_indextree_journal_branch.py
  • modules/weko-items-autofill/requirements2.txt
  • modules/weko-items-autofill/tests/conftest.py
  • modules/weko-items-autofill/tests/data/itemtypes/mapping.json
  • modules/weko-items-autofill/tests/test_utils.py
  • modules/weko-items-autofill/tox.ini
  • modules/weko-items-autofill/weko_items_autofill/utils.py
  • modules/weko-items-ui/requirements2.txt
  • modules/weko-items-ui/setup.py
  • modules/weko-items-ui/tests/conftest.py
  • modules/weko-items-ui/tests/test_tasks.py
  • modules/weko-items-ui/tests/test_utils.py
  • modules/weko-items-ui/tests/test_views.py
  • modules/weko-items-ui/tox.ini
  • modules/weko-items-ui/weko_items_ui/alembic/3668968dffbd_create_weko_items_ui_branch.py
  • modules/weko-items-ui/weko_items_ui/alembic/9dc005064658_create_cris_linkage_result_table.py
  • modules/weko-items-ui/weko_items_ui/config.py
  • modules/weko-items-ui/weko_items_ui/scopes.py
  • modules/weko-items-ui/weko_items_ui/utils.py
  • modules/weko-items-ui/weko_items_ui/views.py
  • modules/weko-itemtypes-ui/requirements2.txt
  • modules/weko-itemtypes-ui/tests/conftest.py
  • modules/weko-itemtypes-ui/tests/test_admin.py
  • modules/weko-itemtypes-ui/tests/test_utils.py
  • modules/weko-itemtypes-ui/tox.ini
  • modules/weko-itemtypes-ui/weko_itemtypes_ui/admin.py
  • modules/weko-itemtypes-ui/weko_itemtypes_ui/static/js/weko_itemtypes_ui/create_itemtype.js
  • modules/weko-itemtypes-ui/weko_itemtypes_ui/static/js/weko_itemtypes_ui/jsonschemaeditor.js
  • modules/weko-logging/requirements2.txt
  • modules/weko-logging/tests/test_utils.py
  • modules/weko-logging/tox.ini
  • modules/weko-logging/weko_logging/alembic/9135a3e69760_create_user_activity_log_table.py
  • modules/weko-logging/weko_logging/alembic/f0621369ac03_create_weko_logging_branch.py
  • modules/weko-notifications/requirements2.txt
  • modules/weko-notifications/tox.ini
  • modules/weko-notifications/weko_notifications/alembic/1aceb8bc87f2_create_weko_notifications_branch.py
  • modules/weko-notifications/weko_notifications/alembic/33c2a0cb8f5f_create_weko_notifications_branch.py
  • modules/weko-notifications/weko_notifications/alembic/9ef65066e0d3_create_notifications_user_settings_table.py
  • modules/weko-plugins/requirements2.txt
  • modules/weko-plugins/tox.ini
  • modules/weko-records-ui/requirements2.txt
  • modules/weko-records-ui/tests/conftest.py
  • modules/weko-records-ui/tests/test_fd.py
  • modules/weko-records-ui/tests/test_pdf.py
  • modules/weko-records-ui/tests/test_permissions.py
  • modules/weko-records-ui/tests/test_preview.py
  • modules/weko-records-ui/tests/test_rest.py
  • modules/weko-records-ui/tests/test_utils.py
  • modules/weko-records-ui/tests/test_views.py
  • modules/weko-records-ui/tox.ini
  • modules/weko-records-ui/weko_records_ui/alembic/d7f12c83cbc6_create_weko_records_ui_branch.py
  • modules/weko-records-ui/weko_records_ui/alembic/e0b1ef08d08c_create_file_url_download_log_table.py
  • modules/weko-records-ui/weko_records_ui/config.py
  • modules/weko-records-ui/weko_records_ui/fd.py
  • modules/weko-records-ui/weko_records_ui/permissions.py
  • modules/weko-records-ui/weko_records_ui/preview.py
  • modules/weko-records-ui/weko_records_ui/rest.py
  • modules/weko-records-ui/weko_records_ui/templates/weko_records_ui/output_detail_data.html
  • modules/weko-records-ui/weko_records_ui/translations/en/LC_MESSAGES/messages.mo
  • modules/weko-records-ui/weko_records_ui/translations/ja/LC_MESSAGES/messages.mo
  • modules/weko-records-ui/weko_records_ui/utils.py
  • modules/weko-records-ui/weko_records_ui/version.py
  • modules/weko-records-ui/weko_records_ui/views.py
  • modules/weko-records/requirements2.txt
  • modules/weko-records/tests/conftest.py
  • modules/weko-records/tests/test_api.py
  • modules/weko-records/tests/test_serializers_opensearch_response.py
  • modules/weko-records/tests/test_serializers_utils.py
  • modules/weko-records/tests/test_utils.py
  • modules/weko-records/tox.ini
  • modules/weko-records/weko_records/alembic/10e311ab03bf_create_weko_records_branch.py
  • modules/weko-records/weko_records/alembic/1619a115156f_add_repository_id_column.py
  • modules/weko-records/weko_records/alembic/32ecd938a01b_create_weko_records_branch.py
  • modules/weko-records/weko_records/alembic/89c58783bf65_create_jsonld_mappings_table.py
  • modules/weko-records/weko_records/alembic/e0dd9fb514cf_add_constraints_to_mapping.py
  • modules/weko-records/weko_records/alembic/e3b07ec6e628_add_oa_status_table.py
  • modules/weko-records/weko_records/api.py
  • modules/weko-records/weko_records/models.py
  • modules/weko-records/weko_records/utils.py
  • modules/weko-redis/requirements2.txt
  • modules/weko-redis/tests/conftest.py
  • modules/weko-redis/tests/test_redis.py
  • modules/weko-redis/tox.ini
  • modules/weko-schema-ui/requirements2.txt
  • modules/weko-schema-ui/setup.py
  • modules/weko-schema-ui/tests/conftest.py
  • modules/weko-schema-ui/tests/data/oai_dc.xsd
  • modules/weko-schema-ui/tests/data/simpledc20021212.xsd
  • modules/weko-schema-ui/tests/test_rest.py
  • modules/weko-schema-ui/tests/test_schema.py
  • modules/weko-schema-ui/tox.ini
  • modules/weko-schema-ui/weko_schema_ui/schema.py
  • modules/weko-search-ui/requirements2.txt
  • modules/weko-search-ui/tests/conftest.py
  • modules/weko-search-ui/tests/data/ams/png_file.txt
  • modules/weko-search-ui/tests/data/ams/sample.txt
  • modules/weko-search-ui/tests/data/ams/with_two_extended_metadata.json
  • modules/weko-search-ui/tests/data/ams/without_hasPart.json
  • modules/weko-search-ui/tests/data/ams/サンプル2.txt
  • modules/weko-search-ui/tests/data/jsonld/ro-crate-metadata.json
  • modules/weko-search-ui/tests/data/list_records/b4_handle_check_exist_record4.json
  • modules/weko-search-ui/tests/data/search/rd_result01_02_03_Exception.json
  • modules/weko-search-ui/tests/data/unpackage_import_file/result.json
  • modules/weko-search-ui/tests/data/unpackage_import_file/result_force_new.json
  • modules/weko-search-ui/tests/data/zip_crate/bag-info.txt
  • modules/weko-search-ui/tests/data/zip_crate/data/ro-crate-metadata.json
  • modules/weko-search-ui/tests/data/zip_crate/manifest-sha256.txt
  • modules/weko-search-ui/tests/data/zip_crate/tagmanifest-sha256.txt
  • modules/weko-search-ui/tests/test_admin.py
  • modules/weko-search-ui/tests/test_api.py
  • modules/weko-search-ui/tests/test_mapper.py
  • modules/weko-search-ui/tests/test_query.py
  • modules/weko-search-ui/tests/test_rest.py
  • modules/weko-search-ui/tests/test_tasks.py
  • modules/weko-search-ui/tests/test_utils.py
  • modules/weko-search-ui/tests/test_views.py
  • modules/weko-search-ui/tox.ini
  • modules/weko-search-ui/weko_search_ui/admin.py
  • modules/weko-search-ui/weko_search_ui/api.py
  • modules/weko-search-ui/weko_search_ui/config.py
  • modules/weko-search-ui/weko_search_ui/mapper.py
  • modules/weko-search-ui/weko_search_ui/query.py
  • modules/weko-search-ui/weko_search_ui/rest.py
  • modules/weko-search-ui/weko_search_ui/static/js/weko_search_ui/import.js
  • modules/weko-search-ui/weko_search_ui/tasks.py
  • modules/weko-search-ui/weko_search_ui/templates/weko_search_ui/admin/import.html
  • modules/weko-search-ui/weko_search_ui/translations/en/LC_MESSAGES/messages.mo
  • modules/weko-search-ui/weko_search_ui/translations/en/LC_MESSAGES/messages.po
  • modules/weko-search-ui/weko_search_ui/translations/ja/LC_MESSAGES/messages.mo
  • modules/weko-search-ui/weko_search_ui/translations/ja/LC_MESSAGES/messages.po
  • modules/weko-search-ui/weko_search_ui/translations/messages.pot
  • modules/weko-search-ui/weko_search_ui/utils.py
  • modules/weko-search-ui/weko_search_ui/views.py
  • modules/weko-signposting/requirements2.txt
  • modules/weko-signposting/tests/conftest.py
  • modules/weko-signposting/tests/test_api.py
  • modules/weko-signposting/tox.ini
  • modules/weko-sitemap/requirements2.txt
  • modules/weko-sitemap/tests/test_ext.py
  • modules/weko-sitemap/tox.ini
  • modules/weko-sitemap/weko_sitemap/ext.py
  • modules/weko-swordserver/requirements2.txt
  • modules/weko-swordserver/tests/conftest.py
  • modules/weko-swordserver/tests/data/records/test_items.json
  • modules/weko-swordserver/tests/data/records/test_records.json
  • modules/weko-swordserver/tests/test_decorators.py
  • modules/weko-swordserver/tests/test_sword_e2e_dump.py
  • modules/weko-swordserver/tests/test_sword_response_dump.py
  • modules/weko-swordserver/tests/test_sword_wf_dump.py
  • modules/weko-swordserver/tests/test_views.py
  • modules/weko-swordserver/tox.ini
  • modules/weko-swordserver/weko_swordserver/alembic/05683afc0320_create_weko_swordserver_branch.py
  • modules/weko-swordserver/weko_swordserver/alembic/ce1507cfda02_create_weko_swordserver_branch.py
  • modules/weko-swordserver/weko_swordserver/alembic/ce82f0d78dcb_create_sword_clients_table.py
  • modules/weko-swordserver/weko_swordserver/config.py
  • modules/weko-swordserver/weko_swordserver/decorators.py
  • modules/weko-swordserver/weko_swordserver/utils.py
  • modules/weko-swordserver/weko_swordserver/views.py
  • modules/weko-theme/requirements2.txt
  • modules/weko-theme/setup.py
  • modules/weko-theme/tests/conftest.py
  • modules/weko-theme/tests/test_utils.py
  • modules/weko-theme/tox.ini
  • modules/weko-theme/weko_theme/bundles.py
  • modules/weko-theme/weko_theme/config.py
  • modules/weko-theme/weko_theme/static/js/weko_theme/preview_widget.js
  • modules/weko-theme/weko_theme/templates/weko_theme/macros/tabs_selector.html
  • modules/weko-theme/weko_theme/templates/weko_theme/preview_widget_design.html
  • modules/weko-theme/weko_theme/utils.py
  • modules/weko-user-profiles/requirements2.txt
  • modules/weko-user-profiles/tests/conftest.py
  • modules/weko-user-profiles/tests/test_forms.py
  • modules/weko-user-profiles/tox.ini
  • modules/weko-user-profiles/weko_user_profiles/alembic/250f0661704b_userprofiles_userprofile.py
  • modules/weko-user-profiles/weko_user_profiles/alembic/9aa432ab3b84_create_weko_user_profiles_branch.py
  • modules/weko-user-profiles/weko_user_profiles/alembic/ac4ff52361f4_add_column_userprofile.py
  • modules/weko-workflow/requirements2.txt
  • modules/weko-workflow/tests/conftest.py
  • modules/weko-workflow/tests/test_activity.py
  • modules/weko-workflow/tests/test_admin.py
  • modules/weko-workflow/tests/test_api.py
  • modules/weko-workflow/tests/test_rest.py
  • modules/weko-workflow/tests/test_utils.py
  • modules/weko-workflow/tests/test_views.py
  • modules/weko-workflow/tox.ini
  • modules/weko-workflow/weko_workflow/admin.py
  • modules/weko-workflow/weko_workflow/alembic/2084f52e00b7_update.py
  • modules/weko-workflow/weko_workflow/alembic/841860bb1333_add_activity_request_mail.py
  • modules/weko-workflow/weko_workflow/alembic/a560202ff0ac_add_columns_for_deleting_items.py
  • modules/weko-workflow/weko_workflow/alembic/b1f5618360f5_create_weko_workflow_branch.py
  • modules/weko-workflow/weko_workflow/alembic/f312b8c2839a_add_columns.py
  • modules/weko-workflow/weko_workflow/api.py
  • modules/weko-workflow/weko_workflow/ext.py
  • modules/weko-workflow/weko_workflow/headless/activity.py
  • modules/weko-workflow/weko_workflow/utils.py
  • modules/weko-workflow/weko_workflow/views.py
  • modules/weko-workspace/requirements2.txt
  • modules/weko-workspace/tests/conftest.py
  • modules/weko-workspace/tests/test_api.py
  • modules/weko-workspace/tests/test_utils.py
  • modules/weko-workspace/tests/test_views.py
  • modules/weko-workspace/tox.ini
  • modules/weko-workspace/weko_workspace/alembic/197013eb095f_add_tables_for_weko_workspace.py
  • modules/weko-workspace/weko_workspace/alembic/f78348c12d44_create_weko_workspace_branch.py
  • modules/weko-workspace/weko_workspace/api.py
  • modules/weko-workspace/weko_workspace/config.py
  • modules/weko-workspace/weko_workspace/static/css/weko_workspace/WorkspaceBodyContents.css
  • modules/weko-workspace/weko_workspace/static/css/weko_workspace/style.css
  • modules/weko-workspace/weko_workspace/static/js/weko_workspace/WorkspaceExport.js
  • modules/weko-workspace/weko_workspace/static/js/weko_workspace/WorkspaceItemList.js
  • modules/weko-workspace/weko_workspace/static/js/weko_workspace/workspace_register.js
  • modules/weko-workspace/weko_workspace/templates/weko_workspace/item_register.html
  • modules/weko-workspace/weko_workspace/templates/weko_workspace/workspace_body_contents.html
  • modules/weko-workspace/weko_workspace/translations/en/LC_MESSAGES/messages.mo
  • modules/weko-workspace/weko_workspace/translations/en/LC_MESSAGES/messages.po
  • modules/weko-workspace/weko_workspace/translations/ja/LC_MESSAGES/messages.mo
  • modules/weko-workspace/weko_workspace/translations/ja/LC_MESSAGES/messages.po
  • modules/weko-workspace/weko_workspace/translations/messages.pot
  • modules/weko-workspace/weko_workspace/utils.py
  • modules/weko-workspace/weko_workspace/views.py
  • nginx/Dockerfile
  • nginx/Dockerfile.ams
  • nginx/Dockerfile.arm64
  • nginx/ams/weko-frontend/app.config.ts
  • nginx/ams/weko-frontend/assets/data/amsAlert.json
  • nginx/ams/weko-frontend/assets/sass/common.scss
  • nginx/ams/weko-frontend/assets/sass/styles.scss
  • nginx/ams/weko-frontend/components/common/Alert.vue
  • nginx/ams/weko-frontend/components/common/Footer.vue
  • nginx/ams/weko-frontend/components/common/Header.vue
  • nginx/ams/weko-frontend/components/common/HeaderMenu.vue
  • nginx/ams/weko-frontend/components/common/IndexTree.vue
  • nginx/ams/weko-frontend/components/common/SearchForm.vue
  • nginx/ams/weko-frontend/components/common/modal/CreaterInfo.vue
  • nginx/ams/weko-frontend/components/common/modal/DetailSearch.vue
  • nginx/ams/weko-frontend/components/contact/modal/ContactConfirm.vue
  • nginx/ams/weko-frontend/components/detail/DownloadRank.vue
  • nginx/ams/weko-frontend/components/detail/ItemContent.vue
  • nginx/ams/weko-frontend/components/detail/ItemInfo.vue
  • nginx/ams/weko-frontend/components/detail/Section.vue
  • nginx/ams/weko-frontend/components/detail/SubSection.vue
  • nginx/ams/weko-frontend/components/detail/Switcher.vue
  • nginx/ams/weko-frontend/components/detail/ViewsNumber.vue
  • nginx/ams/weko-frontend/components/detail/modal/RequestMail.vue
  • nginx/ams/weko-frontend/components/files/TableStyle.vue
  • nginx/ams/weko-frontend/components/files/modal/Filter.vue
  • nginx/ams/weko-frontend/components/index/LatestItem.vue
  • nginx/ams/weko-frontend/components/search/Conditions.vue
  • nginx/ams/weko-frontend/components/search/SummaryStyle.vue
  • nginx/ams/weko-frontend/composables/refreshToken.ts
  • nginx/ams/weko-frontend/locales/en.json
  • nginx/ams/weko-frontend/locales/ja.json
  • nginx/ams/weko-frontend/nuxt.config.ts
  • nginx/ams/weko-frontend/pages/ams/contact.vue
  • nginx/ams/weko-frontend/pages/ams/detail.vue
  • nginx/ams/weko-frontend/pages/ams/files.vue
  • nginx/ams/weko-frontend/pages/ams/login.vue
  • nginx/ams/weko-frontend/pages/ams/logout.vue
  • nginx/ams/weko-frontend/pages/ams/preview.vue
  • nginx/ams/weko-frontend/pages/ams/search/[id].vue
  • nginx/ams/weko-frontend/pages/ams/search/index.vue
  • nginx/ams/weko-frontend/pages/index.vue
  • nginx/ams/weko-frontend/server/api/ams/captcha/[id]/request-mail.post.ts
  • nginx/ams/weko-frontend/server/api/ams/captcha/image.get.ts
  • nginx/ams/weko-frontend/server/api/ams/captcha/validate.post.ts
  • nginx/ams/weko-frontend/server/api/ams/mail/send.post.ts
  • nginx/ams/weko-frontend/server/api/ams/token/create.get.ts
  • nginx/ams/weko-frontend/server/api/ams/token/refresh.get.ts
  • nginx/ams/weko-frontend/tailwind.config.js
  • nginx/login.php
  • nginx/login.py
  • nginx/orthrosstg-idp-metadata.xml
  • nginx/weko-ams-restricted.conf
  • nginx/weko-ams.conf
  • nginx/weko.conf
  • packages.txt
  • postgresql/ddl/W2025-61a.sql
  • postgresql/update/W2025-16.sql
  • pref_issues.md
  • scripts/ci/compose.local.yml
  • scripts/ci/matrix.sh
  • scripts/ci/run-local.sh
  • scripts/ci/run-module-tests.sh
  • scripts/demo/addjpcoar_v2_mapping.py
  • scripts/demo/ams/create_ams_itemtype.sh
  • scripts/demo/ams/facet_search_setting.sql
  • scripts/demo/ams/index_style.sql
  • scripts/demo/ams/item_type.sql
  • scripts/demo/ams/item_type_mapping.sql
  • scripts/demo/ams/item_type_name.sql
  • scripts/demo/ams/item_type_property.sql
  • scripts/demo/ams/jsonld_mappings.sql
  • scripts/demo/ams/rocrate_mapping.sql
  • scripts/demo/ams/update_search_management.py
  • scripts/demo/item_type.sql
  • scripts/demo/register_item_types.py
  • scripts/demo/resticted_access.sql
  • scripts/demo/search_management_update.sql
  • scripts/demo/update_item_type.py
  • scripts/demo/update_itemtype_full.py
  • scripts/demo/update_search_management.sh
  • scripts/instance.cfg
  • scripts/make_item_type_sql.sh
  • scripts/provision-web.sh
  • spec.md
  • test/perf_measure/.gitignore
  • test/perf_measure/RUNBOOK.md
  • test/perf_measure/browser/measure_browser.mjs
  • test/perf_measure/browser/measure_browser_parallel.mjs
  • test/perf_measure/browser/package.json
  • test/perf_measure/browser/run_parallel_browser.sh
  • test/perf_measure/browser/run_parallel_browser_warm.sh
  • test/perf_measure/loadtest/loadtest.mjs
  • test/perf_measure/loadtest/run_load.sh
  • test/perf_measure/loadtest/run_load_pages.sh
  • test/perf_measure/measure.sh
  • test/perf_measure/nginx-override.yml
  • test/perf_measure/pref_result.md
  • test/perf_measure/results/after.txt
  • test/perf_measure/results/after_browser.txt
  • test/perf_measure/results/after_browser_c40.txt
  • test/perf_measure/results/after_browser_c5.txt
  • test/perf_measure/results/before.txt
  • test/perf_measure/results/before_browser.txt
  • test/perf_measure/results/before_browser_c40.txt
  • test/perf_measure/results/before_browser_c5.txt
  • test/perf_measure/results/load_after_c16.txt
  • test/perf_measure/results/load_after_c20.txt
  • test/perf_measure/results/load_after_c4.txt
  • test/perf_measure/results/load_after_c40.txt
  • test/perf_measure/results/load_after_c8.txt
  • test/perf_measure/results/load_after_detail_c20.txt
  • test/perf_measure/results/load_after_top_c20.txt
  • test/perf_measure/results/load_before_c16.txt
  • test/perf_measure/results/load_before_c20.txt
  • test/perf_measure/results/load_before_c4.txt
  • test/perf_measure/results/load_before_c40.txt
  • test/perf_measure/results/load_before_c8.txt
  • test/perf_measure/results/load_before_detail_c20.txt
  • test/perf_measure/results/load_before_top_c20.txt
  • test/perf_measure/results/sequential_browser/after_browser.txt
  • test/perf_measure/results/sequential_browser/before_browser.txt
  • test/perf_measure/results/with_k8s_noise/after.txt
  • test/perf_measure/results/with_k8s_noise/after_browser.txt
  • test/perf_measure/results/with_k8s_noise/before.txt
  • test/perf_measure/results/with_k8s_noise/before_browser.txt
  • test/perf_measure/run_all.sh
  • test/perf_measure/seed_records.py
  • tools/api-inventory/.gitignore
  • tools/api-inventory/ci/README.md
  • tools/api-inventory/ci/api-inventory-drift.yml
  • tools/api-inventory/ci/api-inventory-tests.yml
  • tools/api-inventory/ci/claude-pr-review.yml
  • tools/api-inventory/pytest.ini
  • tools/api-inventory/scripts/README.md
  • tools/api-inventory/scripts/_ensure_profile.py
  • tools/api-inventory/scripts/add_authmech.py
  • tools/api-inventory/scripts/add_row.py
  • tools/api-inventory/scripts/audit_authz.py
  • tools/api-inventory/scripts/audit_evidence.py
  • tools/api-inventory/scripts/audit_masking.py
  • tools/api-inventory/scripts/build_checklist.py
  • tools/api-inventory/scripts/detect_routes.py
  • tools/api-inventory/scripts/enrich_git.py
  • tools/api-inventory/scripts/fixtures.py
  • tools/api-inventory/scripts/measure.sh
  • tools/api-inventory/scripts/merge.py
  • tools/api-inventory/scripts/open_findings.py
  • tools/api-inventory/scripts/paths.py
  • tools/api-inventory/scripts/prioritize.py
  • tools/api-inventory/scripts/refresh_callers.py
  • tools/api-inventory/scripts/schema.py
  • tools/api-inventory/scripts/snapshot.py
  • tools/api-inventory/tests/README.md
  • tools/api-inventory/tests/conftest.py
  • tools/api-inventory/tests/test_add_authmech.py
  • tools/api-inventory/tests/test_add_row.py
  • tools/api-inventory/tests/test_audit_authz.py
  • tools/api-inventory/tests/test_audit_evidence.py
  • tools/api-inventory/tests/test_audit_masking.py
  • tools/api-inventory/tests/test_build_checklist.py
  • tools/api-inventory/tests/test_detect_routes.py
  • tools/api-inventory/tests/test_docs.py
  • tools/api-inventory/tests/test_merge.py
  • tools/api-inventory/tests/test_open_findings.py
  • tools/api-inventory/tests/test_prioritize.py
  • tools/api-inventory/tests/test_reconcile.py
  • tools/api-inventory/tests/test_refresh_callers.py
  • tools/api-inventory/tests/test_test_coverage.py
  • tools/api-inventory/tests/test_workflows.py
  • tools/claude-review/README.md
  • tools/claude-review/prompt.md
  • tools/claude-review/scripts/aggregate.py
  • tools/claude-review/scripts/build_input.py
  • tools/claude-review/scripts/collect_reviews.py
  • tools/claude-review/scripts/mdsafe.py
  • tools/claude-review/scripts/post_inline.py
  • tools/claude-review/scripts/render.py
  • tools/claude-review/tests/conftest.py
  • tools/claude-review/tests/fixtures/pr1905.diff
  • tools/claude-review/tests/fixtures/pr1905_graphql.json
  • tools/claude-review/tests/test_aggregate.py
  • tools/claude-review/tests/test_build_input.py
  • tools/claude-review/tests/test_collect_reviews.py
  • tools/claude-review/tests/test_mdsafe.py
  • tools/claude-review/tests/test_post_inline.py
  • tools/claude-review/tests/test_render.py
  • tools/itemtype_required_checker.py
  • tools/release/README.md
  • tools/release/open-pr.sh
  • tools/release/preflight.sh
  • tools/replace_db_fqdn.py
  • tools/replace_es_fqdn.py
  • tools/update/addjpcoar_v1_mapping.py
  • tools/update/migrate_item_type_mapping.py
  • ui-tests/conftest.py
  • ui-tests/test_import_to_gakunin_rdm_button.py
  • ui-tests/utils.py
  • unittest_result.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Ooka-Masashi
Ooka-Masashi merged commit 5080307 into release_v2.1.0 Sep 30, 2026
219 of 237 checks passed
@github-actions

Copy link
Copy Markdown

API インベントリ差分(件数のみ)

台帳ブランチ: develop_v2.1.0

明細は公開できないため件数のみ表示しています。該当箇所はプライベートリポジトリ側の台帳・レポートで確認してください。

ベースラインとの差分

API インベントリ差分レポート

  • 旧: b572c442d v2.0.4-577-gb572c442d (profile=default) endpoints=933 (外部ライブラリ由来 359)
  • 新: e24c341b1 v2.0.4-659-ge24c341b1 (profile=default) endpoints=933 (外部ライブラリ由来 359)

判定: ❌ FAIL (FAIL 1 / WARN 2)

サマリ

分類 件数
ADDED 0
REMOVED 0
RULE_CHANGED 0
METHODS_CHANGED 0
AUTH_CHANGED 36
IMPL_CHANGED 8
ATTRS_UNKNOWN_NEW 0
ModelView 追加 0
ModelView 削除 0
ModelView フラグ変化 0
config 変化 2
コメントアウト認証の増加 0
依存パッケージの版変化 0

[FAIL] G2 認証系デコレータが削除された — 3件

件数のみ。該当の経路名はプライベートリポジトリ側の完全版レポートを参照。

[WARN] W2 実装本体が変化(data_op / 情報露出を再確認) — 8件

件数のみ。該当の経路名はプライベートリポジトリ側の完全版レポートを参照。

[WARN] W5 監視対象 config が変化した — 2件

件数のみ。該当の経路名はプライベートリポジトリ側の完全版レポートを参照。


台帳との突き合わせ

(生成されませんでした)

ソース由来の経路検知

(生成されませんでした)

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.

7 participants