コンテンツにスキップ

3画面パック ⑥ 作り方と、確かめ方

結論(3行)

  1. 工程は 5 つ:置く → 検査 → 生成 → 配る → 確かめる。工程ごとに「終わりの印」があります
  2. 🔴 生成器は、おかしなデータを黙って落としません。エラーで止めて、人に知らせます
  3. HTTP 200 が返ることは、出来たことではありません。中身を取って読むまでが確認です

このページは、あなたの右腕(AI エージェント)に渡す作業指示です。そのまま読ませてください。


1. 全体の流れ

flowchart LR
    A["① 置く<br>CSV 9表"] --> B["② 検査<br>おかしければ止める"]
    B --> C["③ 生成<br>HTML 2枚を書く"]
    C --> D["④ 配る<br>読める場所に置く"]
    D --> E["⑤ 確かめる<br>中身を取って読む"]
    B -.->|エラー| X["人に知らせて止まる"]

2. ① 置く

  1. data/ の CSV 10 枚と schema.sql を、1 つのフォルダにコピーします
  2. 中身を、あなたの会社のものに差し替えます(→ 01_data
  3. schema.sqlそのまま置いておきます(あとで SQLite に移すときに使います)

終わりの印

フォルダに area.csv stage.csv kind.csv company.csv person.csv deal.csv standard.csv activity.csv invoice.csv9 枚(+ _dictionary.csvschema.sql)がある。 ファイル名はこのとおり(大文字小文字も含めて)。


3. ② 検査 — 🔴 ここが仕組みの要です

生成器は、HTML を書く前に次を確かめます。1 つでも引っかかったら、どの ID の何が悪いかを日本語で出して、止まります。

# 検査 引っかかったときのメッセージの例
1 deal.company_idcompany.csv にあるか deal D001: company_id=C999 は company にありません
2 deal.stage_idstage.csv にあるか deal D001: stage_id=Z9 は stage にありません
3 🔴 deal.area_id と、stage_id から導ける領域が一致するか deal D001: 案件の領域 B と 工程の領域 A が食い違っています
4 🔴 deal.area_id板の列にあるか(終了 を除く) deal D001: area_id=E は板の列にありません。板に出ないので、領域を直すか列の一覧を増やしてください
5 deal.snooze_untilYYYY-MM-DD deal D002: snooze_until='2026/12/31' は YYYY-MM-DD ではありません
6 standard.stage_id / kind_id が実在するか standard SD-Z9-CL: stage_id=Z9 は stage にありません
7 🔴 standard に同じ(工程 × 種別)が 2 行ないか standard: stage_id=A1 / kind_id=WF が重複しています
8 🔴 standard の行数が 工程の数 × 種別の数 ちょうどか standard の行数が stage × kind と一致しません: 15 != 4 × 4 (16)
9 抜けている(工程 × 種別)が無いか standard に無い工程×種別があります: A2/WF

検査 3 だけは、SQL のビューでも見られます

schema.sqlv_check_area_mismatch が同じ食い違いを出します(0 行が健全)。 生成器の中で止めるのが確実ですが、スプレッドシートの段階で先に見つけたいときはこちらを使ってください。

🔴 検査 4 が、いちばん見つけにくい事故を止めます

板に列が無い領域へ案件が入ると、画面から黙って消えます。 「あれ、あの案件どこ行った?」に気づくのは、たいてい手遅れになってからです。 落とすのではなく、止めて人に気づかせます。

検査を「警告」にしないでください

警告にすると、壊れたまま画面が出来て、しかも 200 が返ります。 エラーで止めて、終了コードを 0 以外にします。

空欄の扱い

CSV の空欄は、読み込んだ時点で「なし」に変換します(空文字のまま持ち回らない)。 これをやらないと、「空文字という ID の行」を探しにいって、SQLite に移すときに必ず落ちます。

終わりの印

検査を通すと、次の 1 行が出る。エラーなら 1 行も HTML が書かれていない。

pm: 案件2件 / 停滞1件  sw: 型 1ある 1途中 14空 (16)

4. ③ 生成

入力 出力
CSV 9 表があるフォルダ pm/index.htmlsw/index.html2 ファイルだけ

生成器の要件

要件 中身
1 ファイル完結 CSS も JavaScript もデータも HTML の中に埋め込む。外部への読み込みは 0 件
データは JSON で埋める 画面の中に必要な列だけを入れる。🔴 personinvoice は入れない(個人情報・金額を画面に出さないため)
文字をエスケープする 案件名に < & " が入っても壊れない
リンクの起点を引数で変えられる 社内の住所が変わっても作り直せる
生成日時を埋める 画面の最下部に出す
繰り返し実行できる 同じ CSV なら、生成日時以外は同じものが出る

終わりの印

pm/index.htmlsw/index.html の 2 つができ、どちらもブラウザで開くだけで動く (ネットを切っても表示が崩れない)。


5. ④ 配る

社内から読める場所に、この 2 ファイルを置きます。置き方は環境によって違うので、ここでは決めません。

外に出さない設定を、置く前に決めてください

案件名・会社名・金額が入っています。社内からだけ読める形にしてください。 社外から見える場所に置くなら、何が見えるかを 1 件ずつ確認してからにします。

終わりの印

別の PC のブラウザから、/pm//sw/ の両方が開く。


6. ⑤ 確かめる — 🔴 200 は確認になりません

🔴 「HTTP 200 が返った」は、出来たことではありません

トップページが真っ白でも 200 は返ります。中身を取って、読んでください。

機械で判定できる合格条件

右腕に、この 8 つを実際に実行させて、出力をそのまま報告させてください。

# 確かめること 合格
1 生成器が正常に終わる 終了コードが 0
2 画面に、CSV にある案件名が全部入っている deal.csvname が 1 つ残らず PM の HTML の中にある
3 画面に、CSV にある工程名が全部入っている stage.csvname_ja が 1 つ残らず SW の HTML の中にある
4 升目の数が合う SW の中の ある 途中 の合計が 工程の数 × 4
5 🔴 個人情報が混ざっていない person.csv の氏名・メール・電話が、PM / SW の HTML に 1 件も無い
6 外部への読み込みが 0 件 HTML の中に http://https:// で始まる読み込み(script / link / img)が無い
7 生成日時が入っている 最下部に今日の日時がある
8 🔴 わざと壊すと、止まる 下の「模擬失敗」参照

🔴 8 の「模擬失敗」— 検査が効いていることを、実際に確かめる

検査があることと、検査が効いていることは別です。壊した CSV を 1 回食わせてください。

壊し方 期待する結果
deal.csvstage_id を、存在しない Z9 に書き換える エラーで止まる。終了コードが 0 以外。HTML が更新されていない
standard.csv から 1 行消す エラーで止まる(行数が合わない)
deal.csvsnooze_until2026/12/31 にする エラーで止まる(日付の形が違う)
deal.csvarea_id を、板の列に無い領域に書き換える エラーで止まる(板から黙って消えない)
deal.csvcompany_id を、存在しない C999 にする エラーで止まる
standard.csvstandard_idstage_id を、別の行と同じにする エラーで止まる(重複)

🔴 壊しても通ってしまったら、検査は入っていません

「エラーが 0 件だった」は、合格の証拠ではありません。対象を読めていないだけかもしれません。 必ず、壊した版で 1 回止まることを見てから、合格と言ってください。

確かめ終わったら、壊した CSV を必ず元に戻してください。

目で見る確認(機械では判定できないもの)

見るところ 合っているか
PM の板 列の並びが area.csv の順。件数が合っている
PM のカード 次の一手が読める。空なら 未定 と出ている
PM の警告 決めて止めている案件(snooze_until が未来)が鳴っていない
判定日を未来に変える 警告の件数が増える
SW 升目がほぼ (初日はこれが正常)
SW の升目にマウスを乗せる 「埋まったと言える条件」が出る
3 画面の行き来 ポータル ⇄ PM ⇄ SW が全部つながっている

終わりの印

上の 8 つの出力と、目で見た確認の結果が、実際の出力つきで報告されている。 「確認しました」だけの報告は受け取らないでください。何をどう確かめたかを 1 行添えさせます。


7. 作り直すとき

CSV を直したら、②〜⑤ をもう一度通します。画面の HTML を直してはいけません。

flowchart LR
    A["CSV を直す"] --> B["検査 → 生成 → 配る"]
    B --> C["確かめる"]
    C -->|おかしい| A

「画面を直したい」と思ったら、それは CSV の話です

  • 案件が出ていない → deal.csvstatusarea_id
  • 警告が出すぎる → deal.csvsnooze_until が空
  • 升目が埋まらない → standard.csvstatus
  • 列を増やしたい → area.csv に 1 行足す + 板の列の一覧に足す

8. 右腕に渡すときの注意

渡すこと 渡さないこと
この 6 枚と data/ の雛形 他社の実データ
「判断に迷ったら、工夫して進めず止めて報告する」という指示 「うまいことやっといて」
合格条件(上の 8 つ)を実行して出力を報告せよという指示 「動いたら教えて」

エージェントが『出来ました』と言ったら、上の 8 つの出力を見せてもらってください

出力が無い報告は、確かめていない報告です。

これで 6 枚は終わりです。00_structure に戻る。

📦 このパックの入口 | pmsw-pack.zip をそのまま落とす