Export human-readable songs and artists reports to the derived data layer

This commit is contained in:
2026-08-04 15:15:49 +08:00
parent ae0e9d0a08
commit 1f95f0231d
9 changed files with 1711 additions and 20 deletions
+7
View File
@@ -141,3 +141,10 @@
- **歌手名正規化**:歌手名大小寫不敏感歸併、存首見拼法;
正名表(casefold 鍵→官方拼法)存官方拼法,含跨拼法合併
ye→Kanye West。
- **`data/` 增設 `derived/` 衍生層**`build-db` 建置工作儲存
的同一動作產出兩張人讀報表(songs.csv、artists.csv)並
commit——與 SQLite 同交易語意、驗證通過才寫檔,稽核鏈
「committed 輸入+程式→CSV」無中間空缺;為「可再生仍
commit」的第二例外。報表不含資料庫 ID(內部參照,資料
改版會重排,不供引用);關係以內嵌字串呈現——`/` 連同
一首歌的多次上榜、`|` 連不同歌曲——欄位一律字母序。
+10 -6
View File
@@ -10,7 +10,7 @@ pop-fem-audit/
│ # 絕不放理論、codebook、預期結果)
├── .gitignore # captures/lyrics/、.env、scratch
├── conference_abstract.md # pilot 摘要(投稿版)
├── data/ # 依生命週期分層(文字格式)
├── data/ # 依生命週期分層(文字格式)
│ ├── source/ # 源頭:手放後不動
│ │ └── yearend_hot100_2016_2025.csv # 原始榜單
│ ├── captures/ # 外部捕捉:只由 fetch 命令與
@@ -20,8 +20,11 @@ pop-fem-audit/
│ │ ├── lyrics_missing.csv # 歌詞缺漏報表
│ │ └── lyrics/ # 歌詞 .txt 快取
│ │ # gitignored,版權)
── manual/ # 人工著作:只由研究者手寫
└── artists_overrides.csv # 人工核定 / 深度背景
── manual/ # 人工著作:只由研究者手寫
└── artists_overrides.csv # 人工核定 / 深度背景
│ └── derived/ # 衍生:只由 build-db 寫入
│ ├── songs.csv # 歌曲報表(人讀;進 git)
│ └── artists.csv # 歌手報表(人讀;進 git)
├── prompts/ # LLM 定義檔(逐字作為 system prompt
│ └── <task>_v<N>.md # 版本化:screen_v1.md、judge_v2.md…
├── tools/ # 輔助工具子專案(src-layout
@@ -77,9 +80,10 @@ pop-fem-audit/
論文附錄的引用單位,須可直接指名(如 judge_v2.md)。
- **Commit 判準**:能由「committed 輸入+程式」決定性再生者不
commitSQLite 工作儲存、LLM 輸入檔);源頭、捕捉、人工著作
一律以文字 commit。`results/` 報表是唯一例外(引用穩定性、
審稿人零門檻、撰稿期可 diff。詳見 `research_plan.md`
「資料儲存與模型」。
一律以文字 commit。「可再生仍 commit」的例外有二:
`results/` 報表(引用穩定性、審稿人零門檻、撰稿期可 diff
`data/derived/` 人讀報表(與工作儲存同一動作產出,稽核
鏈無中間空缺)。詳見 `research_plan.md`「資料儲存與模型」。
- **設定**經 pydantic-settings 統一:`.env`gitignored,範本
`tools/.env.example`)供應 `SQLALCHEMY_DATABASE_URL`
`ANTHROPIC_API_KEY`,絕不寫入 repo。
+7 -4
View File
@@ -41,10 +41,13 @@
設定經 pydantic-settings`.env` 供應
`SQLALCHEMY_DATABASE_URL``ANTHROPIC_API_KEY`)。
歌詞全文入 DB(不進 git 故無版權疑慮)。
- 報表:論文引用的最終表由 export 產出 CSV 進 `results/`
——此為「可再生仍 commit」的唯一例外,理由:引用穩定性
(十年尺度的環境會腐化)、審稿人零門檻、撰稿期數字變動
可 diff
- 衍生:`build-db` 建置工作儲存的同一動作產出人讀報表
`data/derived/` 的 songs.csv、artists.csv,進 git)——
與 SQLite 同交易語意,稽核鏈無中間空缺;不含資料庫 ID。
- 報表:論文引用的最終表由 export 產出 CSV 進 `results/`
衍生與報表為「可再生仍 commit」的兩個例外,理由:引用
穩定性(十年尺度的環境會腐化)、審稿人零門檻、撰稿期
數字變動可 diff、供人工檢視。
- **資料模型**`songs`(歌曲實體,含 lyrics nullable 欄位)、
`chart_entries`1 歌—N 筆榜單紀錄)、`artists`(歌手實體:
Wikidata QID、性別、型態、曲風、國籍)、`song_artists`