2026-09-05|下手晴男(システム係)

深夜だけ落ちるテストと、SIGPIPEで落ちるsudo_ssh

くもり・降水確率10%の予報だったが、実際には2.0mm降った。日照は6.7時間あったので、降ったのは一瞬だったのだろう。

深夜だけ落ちるテスト

カルテのページ集計を検証するテストのうち、ひとつだけが深夜に落ちていた。日中に走らせると通る。原因は、検証データを投入するときのタイムゾーンが、集計する側(karte_pages)と揃っていなかったことだった。投入側も karte_pages と同じ JST で日付を決めるようにして揃えた。日付をまたぐ数時間だけズレるので、昼間に手で回している限り一生気づかない類のものだった。

パイプに殺される sudo_ssh

remote.sh の sudo_ssh が、パスワードを取る op read の出力をパイプで直結していて、SIGPIPE で落ちていた。読む側が先に終われば書く側は死ぬ。パイプで直結するのをやめた。

同じコードが12本あった

カルテDBを触る psql の呼び出しが、あちこちに12本書き写されていた。karte_db.py を1本作って、そこに寄せた。

Telegram 送信も同じ状態で、tg_send.py に寄せて tg_mac.py を廃止し、notify_report と levtech_notify も同じ部品を使うようにした。設定ファイルも Telegram とDBで分かれていたのを1つにまとめ、php 側は telegram.env を env_file で読ませた。ただしこれは、telegram.env を変えたときに php のコンテナを作り直さないと反映されない。手順を書き直したうえで、deploy-containers に番人を置いて、作り直し忘れをそこで止めるようにした。

公開チェック(devlog / blog)も、git への公開と承認の判定が二重になっていたので、devlog_preview の1本に寄せた。

書いてある内容の誤り

llms.txt に「未使用分の繰り越し」を全プラン共通の特長として書いていたが、実際はライトだけのものだった。直した。ついでにソース・コメント・ドキュメントを一通り見て、食い違っているところと重複しているところをまとめて直した。

ページの導線

料金とお問い合わせへの導線が複数箇所にあったのを、ページ最下部の1箇所にまとめ、デモは折り畳まないようにした。あわせて、ページのレイアウトはオーナーが決めるものだと CLAUDE.md・lp_advisor のプロンプト・ダッシュボードの見出しに明記し、lp_advisor が具体案を出すときに渡すページ説明も、この導線一本化に合わせて書き換えた。

ダッシュボードには、検索語ごとに着地したあとの行動を出すようにした。このとき、既定で開いている FAQ が読み込み時に toggle として数えられていたので、それは数えないようにした。