blog テーブル
概要
| 項目 |
内容 |
| テーブル名 |
blog |
| 説明 |
AI が生成したブログ記事を管理するテーブル。過去ブログのリライト(blog_rewriter)と、レースの情報から書き下ろす回顧・予想(blog_generation)の両方を扱う |
| 主な用途 |
ブログ記事の生成・編集・公開管理・関連情報の類似検索 |
カラム定義
| カラム名 |
データ型 |
PK |
FK |
Unique |
Nullable |
デフォルト |
備考 |
| _id |
ObjectId |
◯ |
|
◯ |
|
|
DocumentDB自動採番 |
| name |
string |
|
|
|
|
|
ブログのタイトル。本文 HTML にも h2 見出しとして焼き込まれるため、更新時は本文の見出しも差し替える |
| race_id |
string |
|
auto_racing:_id / bicycle_racing:_id / horse_racing:_id |
|
◯ |
|
紐づくレース。レースに紐づかないブログでは null |
| race_type |
enum |
|
|
|
◯ |
|
auto_racing / bicycle_racing / horse_racing。レース由来のブログのみ設定 |
| blog_type |
string |
|
|
|
◯ |
|
ブログのシリーズ種別(例: ジョッキーインタビュー、斎藤コラム) |
| old_blog_id |
string |
|
old_blog:_id |
|
◯ |
|
リライト元の過去ブログ。書き下ろし(回顧・予想)では null |
| source_url |
string |
|
|
|
◯ |
|
リライト元の過去ブログの掲載元 URL(old_blog から引き継ぐ) |
| category_id |
string |
|
category:_id |
|
◯ |
|
|
| body_html |
string |
|
|
|
|
|
HTML形式。blog_builder が oddspark の実コンポーネントを SSR して構築する |
| embedding |
number[] |
|
|
|
◯ |
|
埋め込みベクトル。関連ブログの類似検索(コサイン類似度)に使用 |
| status |
enum |
|
|
|
|
draft |
generating: 生成中 / draft: 下書き / published: 公開 |
| created_at |
number |
|
|
|
|
|
|
| updated_at |
number |
|
|
|
|
|
一覧取得のデフォルトは更新日時順にする |
| deleted_at |
number |
|
|
|
◯ |
|
|
出自(origin)
ブログが「リライト」か「書き下ろし」かは保存せず、old_blog_id の有無から導出する。
API レスポンスでは origin フィールドとして返る。
| origin |
条件 |
生成元 |
rewrite |
old_blog_id あり |
blog_rewriter(過去ブログのリライト) |
generation |
old_blog_id なし |
blog_generation(レース回顧・予想の書き下ろし) |
embedding の取得経路
| 経路 |
内容 |
| リライト |
old_blog 登録時に odds_poc_app が付与したベクトルを、ブログ作成時に引き継ぐ |
| 書き下ろし |
blog_generation が生成本文から作成して保存する |
ベクトル生成には Amazon Bedrock の Titan Text Embeddings v2(amazon.titan-embed-text-v2:0)を使用する。
body_html のマークアップ契約
複数のサービスが body_html を正規表現で後加工するため、次のマークアップを維持する必要がある。
| 要素 |
用途 |
<div class="nb-body"> |
本文コンテナ。thumbnail_generation の挿入アンカー |
<img class="nb-thumbnail" src="..."> |
サムネイル画像。再ビルド時に抽出して引き継ぐ |
<section class="nb-related"> |
関連情報セクション。再ビルド時に抽出して引き継ぐ |
ルート要素の末尾 </div> |
関連情報はルート閉じタグ直前に挿入する |