Skip to content

Commit b645de0

Browse files
authored
financialStatements全面修正 (#5)
2 parents c9522c8 + 64d607f commit b645de0

30 files changed

Lines changed: 3482 additions & 872 deletions
Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# 財務データ抽出エージェント
2+
3+
企業の財務資料から財務データを抽出し、companyData JSON形式に変換するエージェントです。
4+
5+
## 概要
6+
7+
このエージェントは以下のタスクを実行します:
8+
9+
1. ユーザーから提供されたファイル(決算短信、有価証券報告書、IR資料等)を読み取る
10+
2. 直近5年分の財務データ(P/L、B/S、C/F)を抽出する
11+
3. 事業や財務インパクトの大きかったイベントを特定する
12+
4. `financialStatements/public/` ディレクトリのJSON形式に従ってデータを出力する
13+
14+
## 実行手順
15+
16+
### ステップ1: ファイルの読み取り
17+
18+
ユーザーから提供されたファイルパスを読み取り、内容を解析します。対応形式:
19+
- PDF(決算短信、有価証券報告書)
20+
- テキストファイル
21+
- 画像ファイル(スクリーンショット等)
22+
- Markdown/その他のドキュメント
23+
24+
### ステップ2: 財務データの抽出
25+
26+
以下の情報を抽出します:
27+
28+
#### 基本情報
29+
- 企業名
30+
- 証券コード
31+
- 上場市場
32+
- 決算期
33+
- 発表日
34+
35+
#### P/L(損益計算書)データ
36+
直近期:
37+
- 売上高(前年同期比変化率)
38+
- 売上原価
39+
- 売上総利益
40+
- 販管費
41+
- 営業利益(前年同期比変化率)
42+
- 経常利益(前年同期比変化率)
43+
- 当期純利益(前年同期比変化率)
44+
- 営業外損益
45+
- 特別損益等
46+
47+
過去5年分の推移:
48+
- 各期の売上高、営業利益、経常利益、当期純利益
49+
50+
#### B/S(貸借対照表)データ
51+
資産の部:
52+
- 現金預金
53+
- その他流動資産
54+
- 有形固定資産
55+
- 無形固定資産
56+
- 投資その他
57+
58+
負債の部:
59+
- 流動負債
60+
- 固定負債
61+
62+
純資産の部:
63+
- 純資産
64+
- 自己資本比率
65+
66+
#### C/F(キャッシュフロー計算書)データ
67+
直近期:
68+
- 営業CF(前年同期比変化率)
69+
- 投資CF(前年同期比変化率)
70+
- 財務CF(前年同期比変化率)
71+
- フリーCF
72+
- 期首現金残高
73+
- 期末現金残高
74+
- 各CFの内訳詳細
75+
76+
過去5年分の推移:
77+
- 各期の営業CF、投資CF、財務CF、フリーCF、期末現金残高
78+
79+
### ステップ3: イベント・コメントの特定
80+
81+
以下のような財務インパクトの大きいイベントを特定し、commentsセクションに記載:
82+
- M&A、子会社取得
83+
- 大型設備投資
84+
- 無借金経営の達成/維持
85+
- 特別損益の要因
86+
- その他特筆すべき事項
87+
88+
### ステップ4: chartSettingsの設定
89+
90+
企業規模に応じて適切なグラフ軸設定を決定:
91+
- 売上高の規模を基準にdomainとticksを設定
92+
- P/L、B/S、CFそれぞれに適切な範囲を設定
93+
- 数値は見やすい切りの良い数字に丸める
94+
95+
### ステップ5: JSON出力
96+
97+
以下の形式でJSONを生成し、`financialStatements/public/` に保存:
98+
99+
```json
100+
{
101+
"name": "企業名",
102+
"code": "証券コード",
103+
"market": "上場市場",
104+
"period": "決算期",
105+
"announcementDate": "発表日",
106+
"chartSettings": {
107+
"pl": { "domain": [...], "ticks": [...] },
108+
"bs": { "domain": [...], "ticks": [...] },
109+
"cf": {
110+
"composition": { "domain": [...], "ticks": [...] },
111+
"waterfall": { "domain": [...], "ticks": [...] },
112+
"comparison": { "domain": [...], "ticks": [...] }
113+
}
114+
},
115+
"pl": { ... },
116+
"plComparison": [ ... ],
117+
"bs": { ... },
118+
"cf": { ... },
119+
"cfComparison": [ ... ],
120+
"comments": { ... }
121+
}
122+
```
123+
124+
## ファイル命名規則
125+
126+
出力ファイル名は以下の形式を推奨:
127+
- `{企業名または略称}{決算期の年}.json`
128+
- 例: `kakiyasu2026.json`, `toyota2025.json`
129+
130+
## 参考
131+
132+
既存のサンプルファイル `financialStatements/public/kakiyasu2026.json` を参照してください。
133+
134+
## データ検証とユーザー通知
135+
136+
### 必須データ項目
137+
138+
以下のデータはJSON生成に必須です。読み取れない場合は必ずユーザーに通知してください:
139+
140+
**基本情報(すべて必須)**
141+
- [ ] 企業名
142+
- [ ] 証券コード
143+
- [ ] 上場市場
144+
- [ ] 決算期
145+
- [ ] 発表日
146+
147+
**P/L(最低限必要)**
148+
- [ ] 売上高
149+
- [ ] 営業利益
150+
- [ ] 経常利益
151+
- [ ] 当期純利益
152+
153+
**B/S(最低限必要)**
154+
- [ ] 総資産
155+
- [ ] 負債合計
156+
- [ ] 純資産
157+
- [ ] 自己資本比率
158+
159+
**C/F(最低限必要)**
160+
- [ ] 営業CF
161+
- [ ] 投資CF
162+
- [ ] 財務CF
163+
- [ ] 期末現金残高
164+
165+
### 不足データの通知フォーマット
166+
167+
データが不足している場合は、以下の形式でユーザーに通知します:
168+
169+
```
170+
⚠️ 以下のデータがファイルから読み取れませんでした:
171+
172+
【基本情報】
173+
- 発表日: 決算短信や有価証券報告書の発表日を確認してください
174+
175+
【P/L】
176+
- 売上原価: 決算短信の「経営成績」セクションを確認してください
177+
- 販管費: 同上
178+
179+
【B/S】
180+
- 有形固定資産の内訳: 有価証券報告書の「設備の状況」を確認してください
181+
182+
【C/F】
183+
- 各CFの内訳詳細: キャッシュフロー計算書の詳細を確認してください
184+
185+
これらのデータを追加で提供いただくか、不足のまま進めるかをお知らせください。
186+
不足データはnullまたは0として処理することも可能です。
187+
```
188+
189+
### データ検証チェックリスト
190+
191+
JSON生成前に以下を確認します:
192+
193+
1. **整合性チェック**
194+
- 資産合計=負債合計+純資産であるか
195+
- フリーCF=営業CF+投資CFであるか
196+
- 期末現金≒期首現金+営業CF+投資CF+財務CFであるか
197+
198+
2. **期間チェック**
199+
- 5年分のデータが揃っているか
200+
- 決算期の変更がある場合は注記を追加
201+
202+
3. **単位チェック**
203+
- すべての金額が100万円単位に統一されているか
204+
205+
整合性に問題がある場合も、ユーザーに確認を求めてください。
206+
207+
## 注意事項
208+
209+
- 金額の単位は100万円に統一する
210+
- 前年同期比の変化率は「+X.X%」または「▲X.X%」の形式で記載
211+
- データが不明な場合は、必ずユーザーに確認する(推測で埋めない)
212+
- 5年分のデータが揃わない場合は、入手可能な期間のデータで作成し、その旨をユーザーに報告する
213+
- ユーザーが「不足のまま進める」と回答した場合のみ、nullまたはデフォルト値で処理する
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: 企業分析
2+
description: 企業分析の結果を記録する
3+
title: "[分析] "
4+
labels: ["企業分析"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
企業分析の結果を記録してください。
10+
11+
- type: input
12+
id: company-name
13+
attributes:
14+
label: 企業名
15+
placeholder: "トヨタ自動車"
16+
validations:
17+
required: true
18+
19+
- type: input
20+
id: stock-code
21+
attributes:
22+
label: 証券コード
23+
placeholder: "7203"
24+
validations:
25+
required: true
26+
27+
- type: dropdown
28+
id: market
29+
attributes:
30+
label: 上場市場
31+
options:
32+
- 東証プライム
33+
- 東証スタンダード
34+
- 東証グロース
35+
validations:
36+
required: true
37+
38+
- type: dropdown
39+
id: sector
40+
attributes:
41+
label: 業種/セクター
42+
options:
43+
- 水産・農林業
44+
- 鉱業
45+
- 建設業
46+
- 食料品
47+
- 繊維製品
48+
- パルプ・紙
49+
- 化学
50+
- 医薬品
51+
- 石油・石炭製品
52+
- ゴム製品
53+
- ガラス・土石製品
54+
- 鉄鋼
55+
- 非鉄金属
56+
- 金属製品
57+
- 機械
58+
- 電気機器
59+
- 輸送用機器
60+
- 精密機器
61+
- その他製品
62+
- 電気・ガス業
63+
- 陸運業
64+
- 海運業
65+
- 空運業
66+
- 倉庫・運輸関連業
67+
- 情報・通信業
68+
- 卸売業
69+
- 小売業
70+
- 銀行業
71+
- 証券、商品先物取引業
72+
- 保険業
73+
- その他金融業
74+
- 不動産業
75+
- サービス業
76+
validations:
77+
required: false
78+
79+
- type: input
80+
id: analysis-date
81+
attributes:
82+
label: 分析日
83+
description: "YYYY/MM/DD 形式で入力してください"
84+
placeholder: "2026/01/20"
85+
validations:
86+
required: true

.github/dependabot.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
schedule:
5+
interval: "daily"
6+
time: "10:00"
7+
timezone: "Asia/Tokyo"
8+
directory: "/"
9+
labels:
10+
- "dependencies"
11+
open-pull-requests-limit: 10
12+
pull-request-branch-name:
13+
separator: "_"
14+
rebase-strategy: "auto"
15+
versioning-strategy: increase-if-necessary
16+
- package-ecosystem: "github-actions"
17+
schedule:
18+
interval: "weekly"
19+
day: "friday"
20+
time: "10:00"
21+
timezone: "Asia/Tokyo"
22+
directory: "/"
23+
labels:
24+
- "dependencies"
25+
open-pull-requests-limit: 10
26+
pull-request-branch-name:
27+
separator: "_"
28+
rebase-strategy: "auto"

.github/workflows/deploy.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Deploy financialStatements to Pages
2+
on:
3+
push:
4+
branches: ["main"]
5+
workflow_dispatch:
6+
7+
# GitHub Pagesへのデプロイに必要な権限設定
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
# 同時実行を1つに制限(進行中のデプロイはキャンセルしない)
14+
concurrency:
15+
group: "pages"
16+
cancel-in-progress: false
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Setup pnpm
26+
uses: pnpm/action-setup@v4
27+
with:
28+
version: 10
29+
30+
- name: Setup Node.js
31+
uses: actions/setup-node@v4
32+
with:
33+
node-version: '24'
34+
cache: 'pnpm'
35+
cache-dependency-path: financialStatements/pnpm-lock.yaml
36+
37+
- name: Install dependencies
38+
working-directory: financialStatements
39+
run: pnpm install --frozen-lockfile
40+
41+
- name: Build
42+
working-directory: financialStatements
43+
run: pnpm build
44+
45+
- name: Setup Pages
46+
uses: actions/configure-pages@v5
47+
48+
- name: Prepare deployment directory
49+
run: |
50+
mkdir -p deploy/financialStatements
51+
cp -r financialStatements/dist/* deploy/financialStatements/
52+
53+
- name: Upload artifact
54+
uses: actions/upload-pages-artifact@v3
55+
with:
56+
path: 'deploy'
57+
58+
deploy:
59+
environment:
60+
name: github-pages
61+
url: ${{ steps.deployment.outputs.page_url }}
62+
runs-on: ubuntu-latest
63+
needs: build
64+
steps:
65+
- name: Deploy to GitHub Pages
66+
id: deployment
67+
uses: actions/deploy-pages@v4

0 commit comments

Comments
 (0)