作成: 2026-09-17 / ブランチ: develop(79bcf20 時点。作業ツリーは clean)/ ★調査のみ。コードは1行も変更していない★
docs/UI差分まとめ_20260915.md ★第4章(:223-255)の26件★を「仕様」と「不具合」に振り分けるための材料です。
docs/decisions.md に残してください(★採番は監督★)file:line / grep コマンド)。推測の箇所は「推測」と明記しましたdocs/UI差分まとめ_20260915.md は書き換えていません★(訂正は監督が行う)$ grep -n "^### D-" docs/decisions.md # 最新は D-148(`^### D-0` では3桁台を拾えない) $ grep -rn "ログアウト\|logout" docs/ $ grep -n "空状態\|該当するログはありません\|該当なし\|読み込み中" docs/decisions.md docs/handoff.md $ grep -n "平日のみ\|土日のみ\|曜日\|サブタイトル\|メーカーPill\|備考セル\|統計カード\|アンバー\|D-Sec ログ" docs/decisions.md docs/handoff.md $ grep -n "StatCard\|共通カード\|色帯\|大文字\|uppercase" docs/decisions.md docs/handoff.md $ grep -n "絞り込み条件に一致する全件\|表示中のページ\|注意文\|アドバイスはありません\|該当するエリア" docs/decisions.md docs/handoff.md $ grep -n "SHOW_ALL_LIMIT\|weekdaysLabel\|weekdays_label" docs/decisions.md docs/handoff.md $ grep -n "全エリアが◎○\|total_count=1\|404 にしない" docs/decisions.md $ grep -n "全期間\|既定値\|date_from\|resolved_at" docs/decisions.md
内訳: ★記録あり 11件★ / ★仕様として記録すべき 12件★ / ★不具合 2件★ / ★判断が要る 1件(+サブ項目2件)★
凡例: 記 記録あり(第4章の記載が誤り、または09-16以降に決着) / 仕 仕様として記録すべき / バ 不具合 / 判 判断が要る
| # | 画面 | 内容 | 現状(実測) | モック | 記録 | 判定 | |||
|---|---|---|---|---|---|---|---|---|---|
| 1 | 共通 | メニューの未対応件数バッジが無い | components/layout/AppShell.tsx:36-53(NavItem に badge 引数が無い) |
d-watch-mock.jsx:372,378,391 |
★D-143 §3 #4(docs/decisions.md:11411)/ D-146 §8 #4(:11891)★ = ★足さない・保留で確定★ |
記 | |||
| 2 | 共通 | ログアウトの導線が無い | API は app/api/auth/logout/route.ts にあるが、components/ からの呼び出し0件 |
★モックにログイン自体が無い★ | ★無し★(grep -rn "ログアウト" docs/ は docs/code-map.md:617「画面からの呼び出しは現状なし」の事実記載のみ) |
仕※1 | |||
| 3 | ダッシュボード | 清掃ログ表が4列 | ★5列になっている★(CleanLogTable.tsx:168 の colSpan={compact ? 5 : 11}) |
d-watch-mock.jsx:311 付近 |
★D-146 §1 #3(:11767)★ = ★「出発」1列だけ足す=5列で確定・実装済み(065c9a7)★ |
記 | |||
| 4 | ダッシュボード | 行展開アドバイスが無効 | ★有効★(CleanLogTable.tsx:30,174,183 に !compact && が無い) |
同上 | ★D-146 §1 #6 / §5(:11833)★ = ★有効化済み(148734b)。根拠だった「規約」は存在しなかった★ |
記 | |||
| 5 | ダッシュボード | 「判定 ?」ボタンが機能しない | ★機能する★(DashboardScreen.tsx:64,290-291 の showGradeInfo) |
— | ★D-146 §1 #2(:11767)★ = ★修正済み(49a5ce9)★ |
記 | |||
| 6 | ダッシュボード | 未解消件数バッジが1枚だけ | DashboardScreen.tsx:217-219(D-Sec の Pill のみ) |
d-watch-mock.jsx:479-480(未解消+D-Sec の2枚) |
★無し★。ただし ★DashboardResponse(lib/types/index.ts:1080-1123)に事前チェック未解消件数のフィールドが無い★ のは実測で確認 |
仕※2 | |||
| 7 | ダッシュボード | 表の空状態の文言 | CleanLogTable.tsx:168-170「該当するログはありません」 |
無し | ★無し★ | 仕 | |||
| 8 | 清掃詳細ログ | CSVの注意文を常時表示 | DetailLogScreen.tsx:487 |
無し | ★★記録あり — D-120 項14 ③(docs/decisions.md:7994)★★「CSV と画面の件数が食い違う → ★清掃詳細ログに注記を出すだけにした★」。D-136(:10346)が表示方法を精緻化 |
記 | |||
| 9 | 清掃詳細ログ | アドバイス0件時の文言とボタン非表示 | CleanLogTable.tsx:226-229(文言)/ :251-260(ボタンは advices.length > 0 の中) |
(△×は必ず何か出る) | ★無し★ | 仕※3 | |||
| 10 | 清掃詳細ログ | エリアモーダルの空状態を2種に分岐 | AreaModal.tsx:115-119 |
1種類 | ★★根拠は記録あり — D-119(docs/decisions.md:7726)★★「全エリアが◎○ → items は空配列・total_count=1(★404 にしない★)」。★文言そのものの記録は無い★ |
記※4 | |||
| 11 | アラート | サマリーカードの見た目(色帯・文字サイズ) | 共通 StatCard(components/ui/StatCard.module.css: 36px / uppercase / border-left: 3px) |
アラート画面だけ専用の小型カード(d-watch-mock.jsx:587-598。28px・色帯なし) |
★無し★ | 仕※5 | |||
| 12 | アラート | 「合計」カードの色 | AlertsScreen.tsx:144 tone="ac" |
d-watch-mock.jsx:596 color={c.txD}(グレー) |
★無し★。StatTone は `ok\ |
wn\ | ng\ | acの4値のみ(StatCard.tsx:8`)=★中立トーンが存在しない★ |
仕※5 |
| 13 | アラート | 日付の既定値が空 | AlertsScreen.tsx:58-59 useState("") |
d-watch-mock.jsx:604-606 defaultValue="2026-03-27"(★飾り。onChange なし★) |
★無し★ | ★判★ | |||
| 14 | アラート | 「解消」バッジに日付を追加 | AlertsScreen.tsx:36-38,298(formatMd + formatHm) |
d-watch-mock.jsx:644「解消 (01:45)」 |
★無し★ | 仕※6 | |||
| 15 | アラート | バッテリー残量行 | lib/fixtures/prechecks.ts に値あり・実DBは常に null |
無し | ★★記録あり — D-105 項5(docs/decisions.md:5602)/ D-114★★(第4章 :244 で訂正済み) |
記 | |||
| 16 | レポート | 絞り込みを実動作にした | ReportsScreen.tsx:97-102,265-267,323(draft / 確定の分離、<form onSubmit>) |
d-watch-mock.jsx:679 の「検索」ボタンは飾り |
★★記録あり — D-069 項8(docs/decisions.md:763-764)★★「検索欄(施設名・シリアル・ステータス)は★「検索」ボタン押下時のみ★APIに反映する」 |
記 | |||
| 17 | レポート | 「上位10件に戻す」「全N施設を表示」の出現条件 | FacilityPerformanceTable.tsx:155-164(★理由をコードコメントに明記済み★) |
d-watch-mock.jsx:821 RANK.length > 10(10 を直書き) |
★無し★(決定としては未記録。D-120 項14 ②(:7993)は SHOW_ALL_LIMIT の別件) |
仕 | |||
| 18 | レポート | 空状態の文言 | ReportsScreen.tsx:570「該当施設なし」/ :667「該当なし」 |
無し | ★★記録あり — D-069 項6(docs/decisions.md:744-747)★★「エラー種別内訳の空データ時の文言は『該当なし』(★モックが持たない空データ文言として新規に採用★)」 |
記 | |||
| 19 | D-Secログ | 見出しの表記ゆれ(英語対訳が当たらない) | DsLogScreen.tsx:301 t("D-Secログ") |
d-watch-mock.jsx:833 t("D-Sec ログ")(半角スペースあり) |
★無し★。★lib/i18n.ts:37 に "D-Sec ログ": "D-Sec Logs" が孤児キーとして残っている★(D-143 §4 #4 が「使用箇所0」と実測済み) |
★バ★ | |||
| 20 | D-Secログ | 統計カードのラベル短縮/並び順/案内文/備考セルの色 | ラベル DsLogScreen.tsx:306-308/並び順 :300-404(カード→フィルタ)/案内文 :367/備考色 DsLogScreen.module.css:148 var(--tx-m) 固定 |
d-watch-mock.jsx:834-851(フィルタ→カード。ラベル「D-Sデバイス総数/正常稼働/異常・通信断」/案内文「施設名 / デバイスID」)/:884 color: d.n ? c.wn : c.txM |
★無し★。ただし案内文は ★D-129 の照合規則表(docs/decisions.md:8823-8824)★ と一致(facility_name + serial_number を検索。lib/ds-devices/query.ts:87-88 で実測)。備考の意味変更は ★D-065 / D-076★ |
仕+★判1件(備考セルの色)★ | |||
| 21 | D-Secアラート | 「通信断」バッジの色 | DsAlertsScreen.tsx:36-38 c.wn(アンバー) |
赤 | ★D-143 §3 #5(:11412)/ D-146 §8 #5(:11892)★ = ★アンバー維持で確定★ |
記 | |||
| 22 | D-Secアラート | 期間フィルタが無い | DsAlertsScreen.tsx:86-95(date_from / date_to を組み立てていない) |
d-watch-mock.jsx の日付欄は★飾り★ |
★D-146 §8 #7(:11893)★ = ★今は入れない。入れるなら d-watch-api.yaml の変更から★ |
記 | |||
| 23 | 施設マスタ | メーカーPillの見た目 | 共通 Pill(components/ui/Pill.module.css: 12px / padding: 2px 8px / 太字なし / 背景 color + "22") |
d-watch-mock.jsx:1019(11px / padding: 2px 6px / fontWeight: 600 / 背景 c.prD) |
★無し★ | 仕※5 | |||
| 24 | スケジュール | 曜日に「平日のみ」「土日のみ」「なし」を追加 | lib/format/schedule.ts:17-28 |
d-watch-mock.jsx は「毎日」「月水金」の2例のみ |
★docs/decisions.md には無し★。ただし ★docs/fixtures.md:216★ と ★docs/code-map.md:1264★ が対応表を明記 |
仕※7 | |||
| 25 | システム管理 | サブタイトルの位置 | SystemScreen.tsx:245-251(h1 直下に昇格、運用設定 は h2 に分離) |
d-watch-mock.jsx:1631-1633(カード見出し「運用設定」の中) |
★無し★。ただし ★D-084 段階6 / 項4(docs/decisions.md:2721,2745)★ が「9タブUIを作らず運用設定1画面にする」「モックの :1628 側を採用」と記録済み=★位置変更はその帰結★ |
仕 | |||
| 26 | 全画面 | 空状態・読み込み中・エラー表示の追加(EN未対応を含む) | 空状態12箇所・読み込み中…12箇所・エラー表示11箇所(下の §4 に実測一覧) |
無し | ★無し★ | 仕+★バ(EN が壊れている10箇所)★ |
docs/code-map.md:617 が「画面からの呼び出しは現状なし」と★事実として★書いており、意図の記録ではありません。unresPre(事前チェック未解消件数)に相当する項目が API に無いことは実測で確認しました(lib/types/index.ts:1080-1123)。★D-143 §3 #4 が同じデータについて「現状足さない。保留」と決めている★ので、★同じ判断がここにも及ぶ★と読むのが自然です(→ §3 の確認事項 J-4)。lib/db/clean-log-mapping.ts:177 が ★departed === false ⟺ completion_rate === null★ を不変条件として保証しており、lib/judge/advice.ts:60-83 は △(10〜70%未満)→ B1、×(10%未満)→ R2、未実施(null ⇒ 未出発)→ R1 か R3/R4 を必ず返します。★つまり △× の行で0件になる経路が無い★ので、文言もボタン非表示も★防御的な分岐★です。★ただし到達したときはエリア別詳細ボタンごと消える★ので、その事実は残す価値があります。components/ui/StatCard は★モックのダッシュボードの Num(d-watch-mock.jsx:99-107)をそのまま移植した部品★で、36px・uppercase・letterSpacing 1.2・borderLeft 3px まで一致します。つまり ★モックの中でも「ダッシュボード流」と「アラート流」の2種類があり、実装は前者に統一した★ということです。同様に components/ui/Pill はモックの Pill(:91-97)の移植で、施設マスタのメーカーバッジ(:1019)だけがモック内で独自に書かれていました。weekdaysLabel() は7桁ビット列 128 通りすべてを扱う関数で、モックはその値域のうち2例を書いていただけです。★モックから「外れた」というより、モックが網羅していなかった★というのが正確です。★★4件★★(うち1件は第4章の中で訂正済み)。★いずれも第4章の作成日(2026-09-15)より前に記録されていました★。
| # | 件名 | 実際の記録 | 記録日 |
|---|---|---|---|
| 8 | 清掃詳細ログ CSVの注意文 | ★D-120 項14 ③(docs/decisions.md:7994)★ |
2026-09-11 |
| 16 | レポート 絞り込みを実動作にした | ★D-069 項8(docs/decisions.md:763-764)★ |
2026-09-07 |
| 18 | レポート 空状態の文言 | ★D-069 項6(docs/decisions.md:744-747)★ |
2026-09-07 |
| 15 | アラート バッテリー残量行 | ★D-105 項5(docs/decisions.md:5602)/ D-114★(★第4章 :244 で訂正済み★) |
2026-09-10 |
部分的に記録があったもの(1件)
| # | 件名 | 実際の記録 | 何が記録され、何が記録されていないか |
|---|---|---|---|
| 10 | エリアモーダルの空状態2種 | ★D-119(docs/decisions.md:7726)★ |
★「全エリアが◎○」を404にせず空配列で返すというAPI契約は記録あり★。★画面が2文言に分けたことは記録なし★ |
第4章の作成後(09-16/09-17)に決着したもの(6件) — ★記載の誤りではなく陳腐化です★
| # | 件名 | 決着 |
|---|---|---|
| 1 | メニューの未対応件数バッジ | D-143 §3 #4(足さない・保留) |
| 3 | 清掃ログ表が4列 | D-146 §1 #3(★5列にして実装済み。8列に戻す作業として再提案しないこと★) |
| 4 | 行展開アドバイスが無効 | D-146 §1 #6(有効化済み) |
| 5 | 「判定 ?」ボタン | D-146 §1 #2(修正済み) |
| 21 | 「通信断」バッジの色 | D-143 §3 #5(アンバー維持) |
| 22 | D-Secアラートの期間フィルタ | D-146 §8 #7(今は入れない) |
★★第4章の表(
:229-255)は、この11行が実質すでに片付いています★★。★残る「本当に未記録」は15件★です。
現状: components/features/alerts/AlertsScreen.tsx:58-59 が useState("")。 対応状況フィルタの既定は "open"(:60)なので、★画面を開いた初期状態は「未解消の全期間」★です。
| 選択 | 何が起きるか(具体例) |
|---|---|
| ★このまま(全期間)★ | ★3日前に出て未解消のままのアラートが、翌朝に画面を開いた時点で見える★。「翌朝確認型」の運用(CLAUDE.md §1)とは相性がよい。一方 ★一覧に複数日が混ざる★ので、#14(解消バッジに日付を出す)が★必須★になる。件数が増えたときはページ送り(D-120)頼み |
| ★当日を既定にする(モック相当)★ | 開いた瞬間は当日ぶんだけ。★昨夜以前から未解消のアラートが初期表示から消える★ — ★★「未解消なのに画面に出ない」が起きる★★。運用担当が日付を手で戻さないと取りこぼす |
★推奨は現状維持★(上の理由。ただし決めるのはユーザー)。
現状: components/features/ds-logs/DsLogScreen.module.css:148 が color: var(--tx-m) 固定。 モック: d-watch-mock.jsx:884 が color: d.n ? c.wn : c.txM(備考ありはアンバー)。
| 選択 | 何が起きるか |
|---|---|
| ★このまま(常にグレー)★ | ★備考は D-065 / D-076 で「DBに無い、運用担当の自由メモ」と判明した★ので、★アンバー=警告色を当てると「異常がある行」と誤読される★。★同じ画面の「接続状態」列が異常=赤/正常=緑なので、備考の色と意味が干渉する★ |
| ★モックに戻す(備考ありはアンバー)★ | ★どの行にメモが入っているか一覧で分かる★(12行でも探すのは面倒)。ただし上の誤読リスクを負う。★中立色(var(--tx) など)で「入っている」ことだけ示す第3案もある★ |
★D-143 §3 #1 で「★英語を配布するか未定★」を理由に i18n の不具合(未対応 の誤訳)を★直さないと決めています★。 ★本章で見つかった2件も同じ性質★ですが、★こちらは辞書の側ではなく呼び出しの側の漏れ★で、★JA表示には一切影響しません★。
| 件 | 実測 | 直す手間 |
|---|---|---|
| ★#19 D-Secログの h1★ | DsLogScreen.tsx:301 が t("D-Secログ")。辞書にあるのは lib/i18n.ts:37 の "D-Sec ログ"(★半角スペースあり★)で★当たらない★。孤児キーであることは D-143 §4 #4 が実測済み |
★lib/i18n.ts:37 のキーを D-Secログ に直す1行★。JA表示は変わらない |
★#26a 読み込み中… / エラー文言★ |
★辞書には既にある★(lib/i18n.ts:73 "読み込み中…": "Loading…" / :336 データの取得に失敗しました: "Failed to load data")。なのに ★10箇所が t() を通さず生文字列で書かれている★(§4 の表) |
★t() で包むだけ★。JA表示は変わらない |
| 選択 | 帰結 |
|---|---|
| ★いま直す★ | ★JA は1文字も変わらない★ので回帰リスクは実質ゼロ。★英語配布を決めたときの残作業が減る★ |
| ★英語配布を決めるまで保留★ | D-143 §3 #1 と歩調が揃う。★ただし「辞書に登録済みなのに当たらない」状態は、次の担当者が辞書を見て「対応済み」と誤認する★ |
★D-143 §3 #4 は「★サイドバーの★未対応件数バッジ」を足さないと決めました★。 ★ダッシュボードのヘッダにも同じデータ(事前チェック未解消件数)のバッジがモックにあり(d-watch-mock.jsx:479)、そちらは決定に名前が出ていません★。 ★データが無いこと(lib/types/index.ts:1080-1123 に該当フィールド無し)は同じ★なので、★同じ判断を明示的に及ぼしてよいか★の確認です。
$ grep -n "D-Sec ログ\|D-Secログ" lib/i18n.ts
17: "🔒 D-Secログ": "🔒 D-Sec Logs", ← サイドバーのメニュー(当たる)
37: "D-Sec ログ": "D-Sec Logs", ← ★孤児。使用箇所0★
$ grep -n 't("D-Secログ")' components/features/ds-logs/DsLogScreen.tsx
301: <h1 className={styles.title}>{t("D-Secログ")}</h1>
実害: EN に切り替えても h1 だけ「D-Secログ」と和文で出ます。 ★サイドバーは 🔒 D-Sec Logs に変わるので、メニューと見出しが英日で食い違います★。 なぜ起きたか(推測): 実装で h1 から半角スペースを落としたとき、辞書のキーを直さなかった。 ★lib/i18n.ts はキーが日本語原文の1階層辞書(lib/i18n.ts:363-366 の translate() は完全一致)★なので、★原文を1文字でも変えると黙って当たらなくなります★(D-146 §9 と同じ構造)。
t() を通っていない(#26 の一部。★10箇所★)★辞書には登録済み★(lib/i18n.ts:73 / :336)なのに、★呼び出し側が生文字列で書いている★箇所の実測一覧です。
| 種別 | t() 未経由(★EN で和文のまま★) |
t() 経由(正しい) |
|---|---|---|
読み込み中… |
AlertsScreen.tsx:256 / DashboardScreen.tsx:223 / DetailLogScreen.tsx:492 / DsAlertsScreen.tsx:246 / DsLogScreen.tsx:405 / FacilitiesScreen.tsx:113 / ReportsScreen.tsx:445 / SchedulesScreen.tsx:115 / SystemScreen.tsx:429 / CleanLogTable.tsx:224 = ★10箇所★ |
CleanAreaScreen.tsx:281 / AreaModal.tsx:99 / SystemScreen.tsx:351 |
| エラー表示 | {error} をそのまま描画 — AlertsScreen.tsx:257 / DashboardScreen.tsx:224 / DetailLogScreen.tsx:493 / DsAlertsScreen.tsx:247 / DsLogScreen.tsx:406 / FacilitiesScreen.tsx:114 / SchedulesScreen.tsx:116 / SystemScreen.tsx:430 |
SystemScreen.tsx:353(t(limitLoadError)) |
★第2章(
docs/UI差分まとめ_20260915.md:200)は「読み込み中…は4画面で未対応」と書いていますが、★実測は10箇所(9画面+共通表)★です。★第2章の記載も過小です★(訂正は監督が行ってください)。
空状態の文言の i18n 登録状況(実測。grep -c で確認)
| 文言 | 辞書 | 呼び出し |
|---|---|---|
該当する施設はありません / 該当するスケジュールはありません / 該当データがありません / 要レスキューの店舗はありません / アドバイス文言は登録されていません / 該当施設なし / エリアのデータがありません |
★あり★ | t() 経由 |
★該当するアラートはありません★ / ★該当するデバイスはありません★ / ★問題エリアはありません(全エリア◎○)★ |
★無し★ | t() 経由(だが当たらない) |
★該当するログはありません★ / ★該当するアドバイスはありません★ / ★該当なし★ / ★本日の清掃予定はありません★ |
★無し★ | ★t() すら通っていない★ |
docs/decisions.md に貼れる文案★(1件1行)★決定番号は
D-XXXのままにしています。採番は監督がgrep -n "^### D-" docs/decisions.md | tail -3(★最新は D-148★)で実測してから採ってください★。
[確定] UI差分第4章26件の振り分け(記録あり11 / 仕様12 / 不具合2 / 要判断1)日付: 2026-09-_ / 指示書: なし(調査は `docs/handoff/UI差分第4章調査_20260917.md)/ **前提**: D-069 / D-076 / D-084 / D-101 / D-105 / D-119 / D-120 / D-129 / D-143 §3 / D-146 §1・§8 /CLAUDE.md` §5・§9.6
:229-255 の該当行を訂正すること)★| # | 件名 | 実際の記録 |
|---|---|---|
| 8 | 清掃詳細ログ CSVの注意文を常時表示 | ★D-120 項14 ③(docs/decisions.md:7994)★ |
| 16 | レポート 絞り込みを実動作にした | ★D-069 項8(docs/decisions.md:763-764)★ |
| 18 | レポート 空状態の文言(「該当なし」「該当施設なし」) | ★D-069 項6(docs/decisions.md:744-747)★ |
| 10 | エリアモーダルの空状態を2種に分岐 | ★D-119(docs/decisions.md:7726)が根拠のAPI契約を記録済み(文言は未記録)★ |
| # | 件名 | 決着 |
|---|---|---|
| 1 | メニューの未対応件数バッジ | ★D-143 §3 #4 — 足さない・保留★ |
| 3 | ダッシュボードの清掃ログ表が4列 | ★D-146 §1 #3 — 「出発」1列を足して5列。★8列に戻す作業として再提案しないこと★★ |
| 4 | 行展開アドバイスが無効 | ★D-146 §1 #6 — 有効化済み★ |
| 5 | 「判定 ?」ボタンが機能しない | ★D-146 §1 #2 — 修正済み★ |
| 21 | D-Secアラート「通信断」バッジの色 | ★D-143 §3 #5 — アンバー維持★ |
| 22 | D-Secアラートの期間フィルタ | ★D-146 §8 #7 — 今は入れない★ |
| # | 件名 | ★仕様である理由★ | |||
|---|---|---|---|---|---|
| 2 | ログアウトの導線が無い | ★モックにログイン画面が無いので「モックからの逸脱」ではない★。ログイン(D-101)に付随する★未完成★であり、足すなら新規UIとして設計する | |||
| 6 | ダッシュボードの未解消件数バッジが1枚だけ | ★DashboardResponse に事前チェック未解消件数のフィールドが無い★(lib/types/index.ts:1080-1123)。★D-143 §3 #4 の「足さない」を同じデータのこのバッジにも及ぼす★ |
|||
| 7 | ダッシュボード表の空状態の文言 | ★取得0件と取得失敗を画面で区別するため★。モックは固定データなので空状態を持たない | |||
| 9 | アドバイス0件時の文言とボタン非表示 | ★防御的な分岐で、現在の発火条件では到達しない★(lib/judge/advice.ts:60-83 と lib/db/clean-log-mapping.ts:177 の不変条件により、△× の行は必ず1件以上該当する)。★到達したときはエリア別詳細ボタンも消える★ことを併記する |
|||
| 11 | アラートのサマリーカードの見た目 | ★モック内に2流儀(Num=d-watch-mock.jsx:99-107 と、アラート画面だけの専用カード :587-598)があり、共通部品 StatCard は前者の完全移植★。★画面ごとに部品を書き分けない★ |
|||
| 12 | 「合計」カードの色がアクセント色 | ★StatTone は `ok\ |
wn\ | ng\ | acの4値で中立トーンが無い★(components/ui/StatCard.tsx:8`)。D-Secログの「青→シアン」と同じ原因 |
| 14 | 「解消」バッジに日付を追加 | ★日付の既定値が「全期間」なので、一覧に複数日が混ざる★。時刻だけでは「いつ解消したか」が読めない | |||
| 17 | 「上位10件に戻す」「全N施設を表示」の出現条件 | ★モックは既定件数 10 を直書きしている★。実装は totalCount と items.length の比較にして★既定件数を知らずに済む形★にした(FacilityPerformanceTable.tsx:155-164) |
|||
| 20 | D-Secログの統計カードのラベル短縮/並び順/案内文 | ★ラベル★: 接続状態が2値化(D-065 / D-076)して「異常・通信断」が成り立たなくなった。★並び順★: 他2画面(アラート / D-Secアラート)が「見出し→カード→フィルタ」で、D-Secログだけモックで順序が違っていた。★案内文★: 実際の検索対象が facility_name + serial_number(lib/ds-devices/query.ts:87-88。D-129 の照合規則表)なので、モックの「デバイスID」は事実と合わない |
|||
| 23 | 施設マスタのメーカーPillの見た目 | ★共通部品 Pill はモックの Pill(d-watch-mock.jsx:91-97)の移植★。モック内でこの1箇所(:1019)だけが独自に書かれていた |
|||
| 24 | 曜日に「平日のみ」「土日のみ」「なし」 | ★weekdaysLabel() は7桁ビット列128通りを扱う関数★(lib/format/schedule.ts:17-28)。モックはその2例を書いていただけで、逸脱ではない。対応表は docs/fixtures.md:216 / docs/code-map.md:1264 |
|||
| 25 | システム管理のサブタイトルの位置 | ★9タブUIを作らず運用設定1画面にした(D-084 段階6 / 項4)帰結★。カード見出しの中に置くと、画面唯一のカードの中に画面全体の説明が入ることになる |
| # | 件名 | 実害 | 直し方 |
|---|---|---|---|
| 19 | D-Secログの h1 が英語対訳に当たらない | ★EN でサイドバーは D-Sec Logs、見出しは「D-Secログ」と和文★で食い違う |
★lib/i18n.ts:37 のキー "D-Sec ログ" を "D-Secログ" に直す(1行)★ |
| 26a | 読み込み中… / エラー文言が t() 未経由(★10箇所★) |
★辞書に登録済み(lib/i18n.ts:73 / :336)なのに EN で和文★。次の担当者が辞書を見て「対応済み」と誤認する |
★該当箇所を t() で包む★。components/ にテストは1件も無い(vitest.config.ts の include は lib/** と app/**)ので★目視確認が要る★ |
| # | 件名 | 判断 |
|---|---|---|
| 13 | アラートの日付既定値が空(全期間) | ★(記入)★ |
| 20b | D-Secログの備考セルの色 | ★(記入)★ |
| 19 / 26a | EN の抜けをいま直すか、英語配布の決定まで保留するか(D-143 §3 #1 と同じ扱いにするか) | ★(記入)★ |
★どれも lib/judge/** lib/db/** prisma/** d-watch-api.yaml には触りません★。
| 件 | 触るファイル | テスト | i18n | ダーク/ライト |
|---|---|---|---|---|
| ★B-1(#19 h1)★ | lib/i18n.ts:37(キー1行) |
★影響なし★。lib/i18n.ts を直接検証するテストは0件(D-143 §3 #1 で実測済み) |
★JA 変化なし / EN が D-Sec Logs になる★ |
影響なし |
| ★B-2(#26a)★ | AlertsScreen.tsx / DashboardScreen.tsx / DetailLogScreen.tsx / DsAlertsScreen.tsx / DsLogScreen.tsx / FacilitiesScreen.tsx / ReportsScreen.tsx / SchedulesScreen.tsx / SystemScreen.tsx / CleanLogTable.tsx(★10箇所を t() で包むだけ★) |
★components/** はテスト対象外★(vitest.config.ts)→ ★目視が要る★ |
★JA 変化なし / EN が Loading… Failed to load data になる★ |
影響なし |
| #13(日付既定値を当日にする場合) | AlertsScreen.tsx:58-59 |
★lib/prechecks/__tests__/query.test.ts は画面の既定値を見ていないので影響なし(実測)★ |
影響なし | 影響なし |
| #20b(備考セルに色を戻す場合) | DsLogScreen.module.css:143-164(★.noteButton に状態クラスを足す★)+ DsLogScreen.tsx:113-124(クラス付与) |
影響なし | 影響なし | ★アンバー(--wn)はダーク/ライト両方でトークン化済み★。新しい色コードを直書きしないこと(CLAUDE.md §9) |
| ★空状態の文言に対訳を足す場合★ | lib/i18n.ts(★該当するアラートはありません / 該当するデバイスはありません / 問題エリアはありません(全エリア◎○) / 該当するログはありません / 該当するアドバイスはありません / 該当なし / 本日の清掃予定はありません の7キー★) |
影響なし | ★★キーを足す前に必ず grep すること★★(D-146 §9。lib/i18n.ts は★キーが日本語原文の1階層辞書★なので、同じ日本語を別の意味で使うと必ず衝突する。★該当なし は特に汎用的で危険★) |
影響なし |
components/** にテストは1件も存在しません★(vitest.config.ts の include は lib/** と app/**)。★本章の不具合2件はテストで守れない★ので、直したら目視が要ります133.125.238.144 を含む)。データ側の事実(battery_level が常に null 等)は★既存の決定の引用★であり、本調査での再実測ではありませんlib/judge/advice.ts と lib/db/clean-log-mapping.ts のコード読解による結論★です。★実データでの確認はしていません★