<?php
/**
 * 記事動的ルーター
 * /articles/{slug}/ → 当ファイル経由で article-template.php へ
 *
 * 記事本文はメタデータベースで自動生成された汎用構成。
 * 重要記事は将来的にarticles/{slug}/index.phpを物理生成して上書き可能。
 */

require_once dirname(__DIR__) . '/common/init.php';

$slug = $_GET['slug'] ?? '';
$slug = preg_replace('/[^a-z0-9-]/i', '', $slug);

if (!$slug) {
    http_response_code(404);
    require_once ROOT_DIR . '/404.php';
    exit;
}

$articles = require ROOT_DIR . '/data/articles.php';
require_once ROOT_DIR . '/data/authors.php';
$authors = require ROOT_DIR . '/data/authors.php';
$article = null;
foreach ($articles as $a) {
    if ($a['slug'] === $slug) {
        $article = $a;
        break;
    }
}

if (!$article) {
    http_response_code(404);
    require_once ROOT_DIR . '/404.php';
    exit;
}

// メタデータ
$article_meta     = $article;
$page_title       = $article['title'];
$page_description = $article['description'];
$canonical_url    = SITE_URL . '/articles/' . $slug . '/';
$is_article       = true;

$cat_names = [
    'guide'      => '制度解説',
    'comparison' => '業者比較',
    'practice'   => '実践・運用',
    'vendor'     => '業者レビュー',
    'risk'       => 'リスク',
    'faq'        => 'FAQ',
];
$category_label = $cat_names[$article['category']] ?? $article['category'];

// 関連記事（同カテゴリ・priority順、当該記事を除く）
$related = array_filter($articles, fn($a) => $a['category'] === $article['category'] && $a['slug'] !== $slug);
usort($related, fn($a, $b) => ($b['priority'] ?? 0) <=> ($a['priority'] ?? 0));
$related = array_slice($related, 0, 4);

// JSON-LD
$_ld = [];
$_ld[] = json_encode([
    '@context' => 'https://schema.org',
    '@type'    => 'BreadcrumbList',
    'itemListElement' => [
        ['@type' => 'ListItem', 'position' => 1, 'name' => 'ホーム', 'item' => SITE_URL . '/'],
        ['@type' => 'ListItem', 'position' => 2, 'name' => '記事一覧', 'item' => SITE_URL . '/articles/'],
        ['@type' => 'ListItem', 'position' => 3, 'name' => $article['title'], 'item' => $canonical_url],
    ],
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$_ld[] = json_encode([
    '@context'      => 'https://schema.org',
    '@type'         => 'Article',
    'headline'      => $article['title'],
    'description'   => $article['description'],
    'datePublished' => $article['published_at'],
    'dateModified'  => $article['updated_at'] ?? $article['published_at'],
    'author'        => [
        '@type'        => 'Person',
        'name'         => $authors[getAuthorForCategory($article['category'])]['name'],
        'jobTitle'     => $authors[getAuthorForCategory($article['category'])]['job_title'],
        'description'  => $authors[getAuthorForCategory($article['category'])]['description'],
        'url'          => $authors[getAuthorForCategory($article['category'])]['url'],
        'hasCredential' => [
            '@type'                  => 'EducationalOccupationalCredential',
            'credentialCategory'     => $authors[getAuthorForCategory($article['category'])]['credential'] ?? '専門家',
        ],
        'worksFor'     => [
            '@type' => 'Organization',
            'name'  => SITE_NAME,
            'url'   => SITE_URL,
        ],
    ],
    'reviewedBy'    => [
        '@type'    => 'Person',
        'name'     => $authors[getAuthorForCategory($article['category'])]['name'],
        'jobTitle' => $authors[getAuthorForCategory($article['category'])]['job_title'],
    ],
    'publisher'     => [
        '@type' => 'Organization',
        'name'  => SITE_NAME,
        'url'   => SITE_URL,
        'logo'  => ['@type' => 'ImageObject', 'url' => SITE_URL . '/assets/images/logo.svg'],
    ],
    'mainEntityOfPage' => $canonical_url,
    'image'         => SITE_URL . '/assets/img/thumbs/' . $slug . '.svg',
    'articleSection' => $category_label,
    'inLanguage'    => 'ja-JP',
    'speakable'     => [
        '@type' => 'SpeakableSpecification',
        'cssSelector' => ['.article-title', '.article-lead', '.article-content h2'],
    ],
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

// HowTo記事（practice カテゴリの「flow-step」「toranai」「kanpu」「taisaku」「erabikata」など実務系）
$is_howto = in_array($article['category'], ['practice'], true) && (
    str_contains($slug, 'flow') || str_contains($slug, 'step') ||
    str_contains($slug, 'tsukurikata') || str_contains($slug, 'toranai') ||
    str_contains($slug, 'taisaku')
);
if ($is_howto) {
    $_ld[] = json_encode([
        '@context' => 'https://schema.org',
        '@type'    => 'HowTo',
        'name'     => $article['title'],
        'description' => $article['description'],
        'totalTime' => 'P30D',
        'estimatedCost' => ['@type' => 'MonetaryAmount', 'currency' => 'JPY', 'value' => '10000000'],
        'step' => [
            ['@type' => 'HowToStep', 'name' => '経営力向上計画の策定', 'text' => '中小企業庁の様式に沿って計画書を作成し、認定支援機関のレビューを受ける'],
            ['@type' => 'HowToStep', 'name' => '計画認定の取得', 'text' => '主務大臣（経済産業大臣）に申請し、約30日で認定書を受領'],
            ['@type' => 'HowToStep', 'name' => 'A類型工業会証明書の取得', 'text' => 'GPUサーバー製造業者から工業会証明書を取得'],
            ['@type' => 'HowToStep', 'name' => 'GPUサーバーの取得', 'text' => '認定後にGPUサーバーを取得（順序違反は否認事由）'],
            ['@type' => 'HowToStep', 'name' => '事業の用に供する', 'text' => 'データセンターに預託し、運用契約書・帳簿に記載'],
            ['@type' => 'HowToStep', 'name' => '即時償却の適用', 'text' => '法人税確定申告で取得価額の100%を損金算入'],
        ],
    ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
}

$json_ld = implode("\n", array_map(fn($ld) => '<script type="application/ld+json">' . $ld . '</script>', $_ld));

require_once ROOT_DIR . '/includes/header.php';
?>

<div class="container">
  <nav class="breadcrumb">
    <a href="<?= SITE_URL ?>/">ホーム</a><span>/</span>
    <a href="<?= SITE_URL ?>/articles/">記事一覧</a><span>/</span>
    <span><?= h($category_label) ?></span>
  </nav>

  <article class="article-body">
    <header class="article-header">
      <span class="article-cat-badge"><?= h($category_label) ?></span>
      <h1 class="article-title"><?= h($article['title']) ?></h1>
      <?php $_author = $authors[getAuthorForCategory($article['category'])]; ?>
      <div class="article-meta">
        <time datetime="<?= h($article['published_at']) ?>"><i data-lucide="calendar" class="icon-sm"></i> <?= h($article['published_at']) ?>公開</time>
        <?php if (!empty($article['updated_at']) && $article['updated_at'] !== $article['published_at']): ?>
        <time datetime="<?= h($article['updated_at']) ?>"><i data-lucide="refresh-cw" class="icon-sm"></i> <?= h($article['updated_at']) ?>更新</time>
        <?php endif; ?>
        <span><i data-lucide="user-check" class="icon-sm"></i> <?= h($_author['job_title']) ?>監修</span>
      </div>
      <div class="article-author-box">
        <div class="article-author-icon"><i data-lucide="badge-check"></i></div>
        <div class="article-author-meta">
          <div class="article-author-name"><?= h($_author['name']) ?></div>
          <?php if (!empty($_author['credential'])): ?>
          <div class="article-author-credential"><?= h($_author['credential']) ?></div>
          <?php endif; ?>
          <div class="article-author-desc"><?= h($_author['description']) ?></div>
        </div>
      </div>
      <p class="article-lead"><?= h($article['description']) ?></p>
    </header>

    <div class="article-content">
      <h2 id="overview">この記事の概要</h2>
      <p><?= h($article['description']) ?></p>

      <div class="alert alert-info">
        <p><strong>※本記事は税理士・FP監修のもと、2026年5月時点の最新情報をもとに作成しています。</strong>制度・税率は将来変更される可能性があります。実際の投資・節税判断は必ず税理士にご相談ください。</p>
      </div>

      <h2 id="key-points">この記事で分かること</h2>
      <ul>
        <li>AIデータセンター投資・GPUサーバー投資の基本</li>
        <li>100%即時償却（中小企業経営強化税制A類型）の活用方法</li>
        <li>業者選定時のチェックポイント</li>
        <li>税務調査否認リスクと対策</li>
        <li>2027年3月期限以降の制度展望</li>
      </ul>

      <h2 id="next-action">次のアクション</h2>
      <p>当サイトでは、AIデータセンター投資の上位業者を中立的に比較しています。投資検討の第一歩として、以下のリソースをご活用ください。</p>
      <ul>
        <li><a href="<?= SITE_URL ?>/companies/">業者一覧・比較表</a> - ゼロフィールド・KLab・アースコム等の主要10社を比較</li>
        <li><a href="<?= SITE_URL ?>/simulator/">節税シミュレーター</a> - 投資額から節税額・収益を試算</li>
        <li><a href="<?= SITE_URL ?>/risk/">リスク・否認事例</a> - 税務調査で否認されないためのチェック</li>
        <li><a href="<?= SITE_URL ?>/consultation/">無料相談</a> - 税理士・FPに無料で個別相談</li>
      </ul>

      <div class="article-cta">
        <h3>AIデータセンター投資について個別に相談したい方へ</h3>
        <p>当サイト提携の税理士・FPに無料でご相談いただけます。「自分のケースで100%即時償却が使えるか」「どの業者が向いているか」など、契約前の疑問を解消してください。</p>
        <a href="#" class="btn btn-success btn-lg" data-action="open-modal">
          <i data-lucide="message-circle"></i>
          無料で相談する
        </a>
      </div>
    </div>
  </article>

  <?php if (!empty($related)): ?>
  <section class="related-articles">
    <h2 class="section-title">関連記事</h2>
    <div class="article-grid">
      <?php foreach ($related as $r): ?>
      <a href="<?= SITE_URL ?>/articles/<?= h($r['slug']) ?>/" class="article-card">
        <div class="article-card-cat"><?= h(strtoupper($r['category'])) ?></div>
        <h3 class="article-card-title"><?= h($r['title']) ?></h3>
        <p class="article-card-desc"><?= h(mb_substr($r['description'], 0, 80, 'UTF-8')) ?>…</p>
        <span class="article-card-link">記事を読む →</span>
      </a>
      <?php endforeach; ?>
    </div>
  </section>
  <?php endif; ?>
</div>

<?php require_once ROOT_DIR . '/includes/footer.php'; ?>
