From 6327783554018e69a6d8abd36f6ea538df6ee9f3 Mon Sep 17 00:00:00 2001
From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>
Date: Sun, 21 Jun 2026 19:35:30 +0900
Subject: 一般質問ページに FAQPage 構造化データを追加
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
QuestionSummary コンポーネントを導入し、63ページの一般質問に
Schema.org FAQPage JSON-LD を追加。表と構造化データを単一の
データ源から生成するため、表の更新と JSON-LD の同期が自動化される。
- src/components/QuestionSummary.astro: 新規。表と JSON-LD を生成
- src/components/StructuredQA.astro: 削除(QuestionSummary に置換)
- scripts/migrate-to-question-summary.mjs: 旧 Markdown 表の変換用
- src/content/docs/ippan-situmon/**/*.mdx: 63ファイル移行済み
新規ページ作成時は QuestionSummary コンポーネントを使用する。
Markdown 表を直接書くことは禁止(コンポーネントにルールを明記)。
---
src/components/QuestionSummary.astro | 88 ++++++++++++++++++++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 src/components/QuestionSummary.astro
(limited to 'src/components')
diff --git a/src/components/QuestionSummary.astro b/src/components/QuestionSummary.astro
new file mode 100644
index 0000000..96ec6f8
--- /dev/null
+++ b/src/components/QuestionSummary.astro
@@ -0,0 +1,88 @@
+---
+/**
+ * QuestionSummary — 一般質問の「まとめ」表と FAQPage JSON-LD を単一のデータ源から生成。
+ *
+ * ## 使い方(新規一般質問ページを作成する際のルール)
+ *
+ * 1. Markdown の表(| 質問 | 答弁概要 |)は **書かない**。
+ * 2. 代わりにこのコンポーネントを import して使う:
+ *
+ * ```mdx
+ * import QuestionSummary from '@/components/QuestionSummary.astro';
+ *
+ *
+ * ```
+ *
+ * 3. 表の更新は qa 配列を編集するだけ。表表示と JSON-LD が自動で同期される。
+ *
+ * - question: 表の「質問」列の内容(番号付きで)
+ * - answer: 表の「答弁概要」列のテキスト(リンク構文なしのプレーンテキスト)
+ * - anchor: 詳細セクションへのアンカー(見出しから自動生成されるID)
+ * - headline: ページのタイトル(JSON-LD の headline に使われる)
+ * - datePublished: 質問日(ISO 8601: YYYY-MM-DD)
+ */
+
+export interface QA {
+ /** 質問文(例: "通報後に作成する文書と保存期間は。") */
+ question: string;
+ /** 答弁概要のテキスト(リンク構文を含まないプレーンテキスト) */
+ answer: string;
+ /** 詳細セクションへのアンカー(例: "-通報後に作成する文書と保存期間は") */
+ anchor: string;
+}
+
+export interface Props {
+ /** Q&A の配列 */
+ qa: QA[];
+ /** ページの表題 */
+ headline?: string;
+ /** 公開日(ISO 8601形式: YYYY-MM-DD) */
+ datePublished?: string;
+}
+
+const { qa, headline, datePublished } = Astro.props;
+---
+
+{
+ qa.length > 0 && (
+