[Admin UI] SchemaEditor crashes to white screen when analyze returns a table without csv_options
概要
Admin UI の analyze 処理後、SchemaEditor が「描画しようとしたテーブルの csv_options が undefined な場合」にホワイトアウト(白画面)する。
ユーザーには「画面が真っ白になって何も操作できない」としか見えず、analyze 自体は完走している可能性があるのに復帰手段がない。
ブラウザコンソール:
Uncaught TypeError: Cannot read properties of undefined (reading 'delimiter')
at index-C_F4NM9t.js:264:45372
at Array.map (<anonymous>)
at ore (index-C_F4NM9t.js:264:44272)
...
再現条件
testcase/M06-manifest-a01-1tb-single/ (1TB / 350 CSV ファイル + 1 manifest)に対して analyze を実行。2 回続けて再現。
他の manifest ケース(M01〜M05、M07/M08)では再現せず。M06 は「manifest の entries が 350 件」という点だけが際立つ。
原因(フロントエンド)
frontend/admin/src/components/SchemaEditor.tsx L99 付近:
<TextField label="delimiter" size="small" value={table.csv_options.delimiter} />
table.csv_options が undefined のときに落ちる。null-safe ではない。
原因(推定・バックエンド)
lambda/adminwebbackend/app.py の manifest 分岐で Bedrock converse の toolUse 出力を table_def としてそのまま tables に append している。
_TABLE_TOOL_SCHEMA では csv_options は required だが、prompt 肥大化(manifest entries 350 ファイル分のファイル名リスト)で出力トークン不足が起き、tool output が途中で切れて csv_options が欠落する可能性がある。
該当箇所:
# _analyze_single_csv_with_bedrock
if len(group_keys) > 1:
filenames = "\n".join(f" - {k.rsplit('/', 1)[-1]}" for k in group_keys)
user_message += f"\n\nこのテーブルには以下の {len(group_keys)} ファイルがグルーピングされています:\n{filenames}\n..."
350 ファイル × ~30 文字 = 10 KB 超のファイル名リストを prompt に埋め込む。さらに columns[].description が required で 10〜100 カラムぶんの日本語説明を出力させるため、合計トークン数が maxTokens: 8192 を超える可能性。
期待される挙動
フロントエンド:
table.csv_options が undefined でもホワイトアウトせず、デフォルト(空文字)を表示するか、該当テーブルだけ warning を表示する
バックエンド:
- 大量の manifest entries を扱うとき、ファイル名リストを全件 prompt に含めない(
len(group_keys) > N の場合に省略・サンプリング)
- toolUse 出力のバリデーション(必須フィールド欠落検知)を追加し、欠落時は
errors に積むなどのハンドリングを行う
修正方針(フロント側)
SchemaEditor.tsx で csv_options が無い場合のフォールバック:
const csvOpt = table.csv_options ?? { delimiter: ',', quote_char: '"', null_as: '', dateformat: '', timeformat: '' };
// ... value={csvOpt.delimiter} のように参照
さらに columns が空 / undefined の場合も考慮すると安全。
影響
関連情報
- 対象スタック:
arn:aws:cloudformation:ap-northeast-1:411521242467:stack/stagingDwhAgentStack/6d94b460-4105-11f1-a522-0e470ca459d5
- テストデータ:
testcase/M06-manifest-a01-1tb-single/ 配下 sensor_000.csv〜sensor_349.csv + sensor.manifest (entries 350)
- 比較用 (問題なし): M07 (150 entries) / M08 (30 entries) は同じ manifest 構造で analyze 完走
[Admin UI] SchemaEditor crashes to white screen when analyze returns a table without csv_options
概要
Admin UI の analyze 処理後、SchemaEditor が「描画しようとしたテーブルの
csv_optionsがundefinedな場合」にホワイトアウト(白画面)する。ユーザーには「画面が真っ白になって何も操作できない」としか見えず、analyze 自体は完走している可能性があるのに復帰手段がない。
ブラウザコンソール:
再現条件
testcase/M06-manifest-a01-1tb-single/(1TB / 350 CSV ファイル + 1 manifest)に対して analyze を実行。2 回続けて再現。他の manifest ケース(M01〜M05、M07/M08)では再現せず。M06 は「manifest の entries が 350 件」という点だけが際立つ。
原因(フロントエンド)
frontend/admin/src/components/SchemaEditor.tsxL99 付近:table.csv_optionsがundefinedのときに落ちる。null-safe ではない。原因(推定・バックエンド)
lambda/adminwebbackend/app.pyの manifest 分岐で Bedrockconverseの toolUse 出力をtable_defとしてそのままtablesに append している。_TABLE_TOOL_SCHEMAではcsv_optionsは required だが、prompt 肥大化(manifest entries 350 ファイル分のファイル名リスト)で出力トークン不足が起き、tool output が途中で切れてcsv_optionsが欠落する可能性がある。該当箇所:
350 ファイル × ~30 文字 = 10 KB 超のファイル名リストを prompt に埋め込む。さらに
columns[].descriptionが required で 10〜100 カラムぶんの日本語説明を出力させるため、合計トークン数がmaxTokens: 8192を超える可能性。期待される挙動
フロントエンド:
table.csv_optionsがundefinedでもホワイトアウトせず、デフォルト(空文字)を表示するか、該当テーブルだけ warning を表示するバックエンド:
len(group_keys) > Nの場合に省略・サンプリング)errorsに積むなどのハンドリングを行う修正方針(フロント側)
SchemaEditor.tsxでcsv_optionsが無い場合のフォールバック:さらに
columnsが空 / undefined の場合も考慮すると安全。影響
関連情報
arn:aws:cloudformation:ap-northeast-1:411521242467:stack/stagingDwhAgentStack/6d94b460-4105-11f1-a522-0e470ca459d5testcase/M06-manifest-a01-1tb-single/配下 sensor_000.csv〜sensor_349.csv + sensor.manifest (entries 350)