@kansei-link/bantou 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +110 -0
- package/data/exclusion-rules/README.md +104 -0
- package/data/exclusion-rules/jp-tax-baseline-v1.json +185 -0
- package/data/exclusion-rules-schema.json +109 -0
- package/data/keyword-dict/README.md +91 -0
- package/data/keyword-dict/jp-tax-baseline-v1.json +398 -0
- package/data/keyword-dict-schema.json +117 -0
- package/data/tax-rules/jp-tax-rules-v1.json +170 -0
- package/dist/adapters/csv-parser.d.ts +11 -0
- package/dist/adapters/csv-parser.js +133 -0
- package/dist/adapters/freee-csv-adapter.d.ts +14 -0
- package/dist/adapters/freee-csv-adapter.js +67 -0
- package/dist/adapters/generic-adapter.d.ts +20 -0
- package/dist/adapters/generic-adapter.js +73 -0
- package/dist/adapters/index.d.ts +23 -0
- package/dist/adapters/index.js +386 -0
- package/dist/adapters/types.d.ts +111 -0
- package/dist/adapters/types.js +9 -0
- package/dist/adapters/yayoi-adapter.d.ts +46 -0
- package/dist/adapters/yayoi-adapter.js +181 -0
- package/dist/bin/freee-doctor.d.ts +3 -0
- package/dist/bin/freee-doctor.js +15 -0
- package/dist/classifier/claude-classifier.d.ts +24 -0
- package/dist/classifier/claude-classifier.js +154 -0
- package/dist/classifier/keyword-classifier.d.ts +22 -0
- package/dist/classifier/keyword-classifier.js +124 -0
- package/dist/classifier/keyword-match.d.ts +21 -0
- package/dist/classifier/keyword-match.js +57 -0
- package/dist/classifier/normalize.d.ts +3 -0
- package/dist/classifier/normalize.js +27 -0
- package/dist/classifier/two-stage-classifier.d.ts +21 -0
- package/dist/classifier/two-stage-classifier.js +51 -0
- package/dist/classifier/types.d.ts +31 -0
- package/dist/classifier/types.js +3 -0
- package/dist/connectors/freee.d.ts +115 -0
- package/dist/connectors/freee.js +177 -0
- package/dist/exclusion/exclusion-checker.d.ts +10 -0
- package/dist/exclusion/exclusion-checker.js +162 -0
- package/dist/freee-doctor.d.ts +26 -0
- package/dist/freee-doctor.js +82 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +656 -0
- package/dist/memory/cockpit-memory.d.ts +73 -0
- package/dist/memory/cockpit-memory.js +473 -0
- package/dist/memory/types.d.ts +114 -0
- package/dist/memory/types.js +11 -0
- package/dist/pipeline/confidence-router.d.ts +38 -0
- package/dist/pipeline/confidence-router.js +129 -0
- package/dist/pipeline/nightly-pipeline.d.ts +44 -0
- package/dist/pipeline/nightly-pipeline.js +497 -0
- package/dist/pipeline/types.d.ts +84 -0
- package/dist/pipeline/types.js +12 -0
- package/dist/reports/monthly-report.d.ts +64 -0
- package/dist/reports/monthly-report.js +230 -0
- package/dist/secrets.d.ts +14 -0
- package/dist/secrets.js +86 -0
- package/dist/tax-rules/tax-rule-engine.d.ts +103 -0
- package/dist/tax-rules/tax-rule-engine.js +449 -0
- package/dist/tax-rules/types.d.ts +103 -0
- package/dist/tax-rules/types.js +7 -0
- package/package.json +74 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../keyword-dict-schema.json",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"locale": "ja-JP",
|
|
5
|
+
"tax_jurisdiction": "JP",
|
|
6
|
+
"tax_code_default": 0,
|
|
7
|
+
"last_updated": "2026-05-20",
|
|
8
|
+
"maintainer": "Synapse Arrows PTE. LTD.",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"description": "Cockpit MCP の Stage 1 keyword classification 辞書。日本の税理士業務に特化した勘定科目分類辞書。v1 では 19 categories で構成、v2 で keywords/category を拡張予定。",
|
|
11
|
+
"notes": [
|
|
12
|
+
"match algorithm: 全角→半角、 大文字→小文字 normalize 後に substring match",
|
|
13
|
+
"match priority: 上から順 (= 同 transaction が複数 category match した場合、 上のが採用)",
|
|
14
|
+
"tax_code: 日本の税区分 (= 0=対象外、 1=課税仕入 8%、 2=課税仕入 10%、 21=売上 8%、 22=売上 10%、 ...)。 default 0、 keyword 単位で override 可",
|
|
15
|
+
"special_pattern: 特殊判定 logic を keyword 単位で attach (= 振込+士業名 → 支払報酬料、 振込+カナ人名 → 外注費 等)"
|
|
16
|
+
],
|
|
17
|
+
"categories": [
|
|
18
|
+
{
|
|
19
|
+
"id": "travel",
|
|
20
|
+
"name_ja": "旅費交通費",
|
|
21
|
+
"name_en": "Travel & Transportation",
|
|
22
|
+
"freee_account_code": 605,
|
|
23
|
+
"default_tax_code": 1,
|
|
24
|
+
"description": "交通機関・宿泊・出張関連",
|
|
25
|
+
"keywords": [
|
|
26
|
+
"Suica", "PASMO", "ICOCA", "manaca", "TOICA", "kitaca", "SUGOCA",
|
|
27
|
+
"JR", "新幹線", "のぞみ", "ひかり", "こだま", "はやぶさ", "つばさ",
|
|
28
|
+
"東京メトロ", "都営地下鉄", "メトロ", "地下鉄",
|
|
29
|
+
"タクシー", "TAXI", "GO", "Didi", "S.RIDE",
|
|
30
|
+
"ANA", "JAL", "ピーチ", "Peach", "Jetstar", "Spring",
|
|
31
|
+
"Hotels.com", "Booking.com", "じゃらん", "Expedia", "アゴダ", "Agoda",
|
|
32
|
+
"Trivago", "楽天トラベル", "ホテル", "HOTEL", "INN", "旅館",
|
|
33
|
+
"高速", "ETC", "首都高", "NEXCO", "阪神高速",
|
|
34
|
+
"駐車場", "コインパーキング", "TIMES", "タイムズ", "三井のリパーク",
|
|
35
|
+
"レンタカー", "ニッポンレンタカー", "オリックスレンタカー", "トヨタレンタ"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "consumables",
|
|
40
|
+
"name_ja": "消耗品費",
|
|
41
|
+
"name_en": "Office Consumables",
|
|
42
|
+
"freee_account_code": 619,
|
|
43
|
+
"default_tax_code": 2,
|
|
44
|
+
"description": "事務用品・文房具・日用品",
|
|
45
|
+
"keywords": [
|
|
46
|
+
"Amazon", "AMAZON", "amazon", "ヨドバシ", "ヨドバシカメラ", "yodobashi",
|
|
47
|
+
"ビックカメラ", "BIC", "BIC CAMERA", "ビックカ",
|
|
48
|
+
"ヤマダ電機", "ヤマダデンキ", "Edion", "エディオン", "ノジマ",
|
|
49
|
+
"ケーズデンキ", "ジョーシン", "ベスト電器", "コジマ",
|
|
50
|
+
"askul", "ASKUL", "アスクル", "Kaunet", "カウネット", "たのめーる",
|
|
51
|
+
"カインズ", "コーナン", "DCM", "ナフコ", "ジョイフル本田",
|
|
52
|
+
"100均", "ダイソー", "DAISO", "セリア", "Seria", "キャンドゥ", "Can Do",
|
|
53
|
+
"無印良品", "MUJI", "ニトリ", "NITORI", "IKEA",
|
|
54
|
+
"ホームセンター", "ハンズ", "東急ハンズ", "Loft", "ロフト",
|
|
55
|
+
"ヨドバシ.com", "Amazonビジネス", "Amazon Business"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "communications",
|
|
60
|
+
"name_ja": "通信費",
|
|
61
|
+
"name_en": "Communications & Subscriptions",
|
|
62
|
+
"freee_account_code": 615,
|
|
63
|
+
"default_tax_code": 2,
|
|
64
|
+
"description": "電話・インターネット・SaaS subscription (海外含む)",
|
|
65
|
+
"keywords": [
|
|
66
|
+
"AWS", "Amazon Web Services", "Google Cloud", "GCP", "Azure", "Microsoft",
|
|
67
|
+
"ChatGPT", "OpenAI", "Anthropic", "Claude", "Cursor", "GitHub", "GitLab",
|
|
68
|
+
"Cloudflare", "Vercel", "Netlify", "Heroku", "DigitalOcean", "Linode",
|
|
69
|
+
"Stripe", "PayPal", "Square",
|
|
70
|
+
"Slack", "Discord", "Zoom", "Microsoft Teams", "Google Meet",
|
|
71
|
+
"Notion", "Asana", "Trello", "Jira", "ClickUp", "monday.com",
|
|
72
|
+
"Figma", "Adobe", "Canva", "Sketch", "Framer",
|
|
73
|
+
"Gmail", "Google Workspace", "Office365", "Microsoft 365",
|
|
74
|
+
"ドコモ", "docomo", "au", "ソフトバンク", "SoftBank", "楽天モバイル", "Rakuten Mobile",
|
|
75
|
+
"NTT", "光回線", "フレッツ", "OCN", "ぷらら", "BIGLOBE", "So-net",
|
|
76
|
+
"サーバー", "ドメイン", "お名前.com", "ムームードメイン",
|
|
77
|
+
"Mailchimp", "SendGrid", "Twilio", "HubSpot", "Salesforce"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "shipping",
|
|
82
|
+
"name_ja": "荷造運賃",
|
|
83
|
+
"name_en": "Shipping & Packaging",
|
|
84
|
+
"freee_account_code": 614,
|
|
85
|
+
"default_tax_code": 2,
|
|
86
|
+
"description": "宅配・郵便・運送料・梱包資材",
|
|
87
|
+
"keywords": [
|
|
88
|
+
"ヤマト運輸", "ヤマト", "クロネコ", "クロネコヤマト", "宅急便", "ネコポス",
|
|
89
|
+
"メール便", "クロネコメール便", "DM便",
|
|
90
|
+
"佐川急便", "佐川", "SAGAWA", "飛脚",
|
|
91
|
+
"日本郵便", "ゆうパック", "ゆうメール", "レターパック", "スマートレター", "クリックポスト", "ゆうパケット",
|
|
92
|
+
"西濃運輸", "セイノー", "福山通運", "トナミ運輸",
|
|
93
|
+
"FedEx", "DHL", "UPS", "EMS", "国際郵便",
|
|
94
|
+
"送料", "発送", "配送", "宅配", "運送費", "運賃",
|
|
95
|
+
"ダンボール", "段ボール", "梱包資材", "プチプチ", "緩衝材"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "meeting_meal",
|
|
100
|
+
"name_ja": "会議費",
|
|
101
|
+
"name_en": "Meeting & Meals (under ¥10K)",
|
|
102
|
+
"freee_account_code": 626,
|
|
103
|
+
"default_tax_code": 2,
|
|
104
|
+
"description": "1万円以下の飲食 (社内会議・打合せ)。 1万円超は交際費へ自動振分",
|
|
105
|
+
"amount_threshold_max": 10000,
|
|
106
|
+
"amount_overflow_category": "entertainment",
|
|
107
|
+
"keywords": [
|
|
108
|
+
"スターバックス", "Starbucks", "STARBUCKS", "スタバ",
|
|
109
|
+
"ドトール", "DOUTOR", "Doutor", "タリーズ", "Tully's",
|
|
110
|
+
"コメダ珈琲", "コメダ", "ベローチェ", "プロント", "PRONTO",
|
|
111
|
+
"サンマルクカフェ", "EXCELSIOR", "エクセルシオール",
|
|
112
|
+
"マクドナルド", "McDonald's", "マック", "MOSバーガー", "モスバーガー",
|
|
113
|
+
"ケンタッキー", "KFC", "サブウェイ", "Subway",
|
|
114
|
+
"吉野家", "松屋", "すき家", "なか卯",
|
|
115
|
+
"ジョナサン", "ガスト", "サイゼリヤ", "デニーズ", "ロイヤルホスト",
|
|
116
|
+
"セブンイレブン", "セブン-イレブン", "7-Eleven", "ローソン", "LAWSON",
|
|
117
|
+
"ファミリーマート", "ファミマ", "FamilyMart",
|
|
118
|
+
"ミニストップ", "デイリーヤマザキ", "ヤマザキ", "セコマ", "セイコーマート",
|
|
119
|
+
"コンビニ", "ベーカリー", "パン", "弁当",
|
|
120
|
+
"居酒屋", "鳥貴族", "塚田農場", "和民", "ワタミ",
|
|
121
|
+
"焼肉", "寿司", "回転寿司", "スシロー", "くら寿司", "はま寿司",
|
|
122
|
+
"ラーメン", "うどん", "蕎麦", "天ぷら",
|
|
123
|
+
"丸亀製麺", "はなまるうどん",
|
|
124
|
+
"Uber Eats", "UberEats", "出前館", "Wolt", "menu"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "entertainment",
|
|
129
|
+
"name_ja": "交際費",
|
|
130
|
+
"name_en": "Entertainment (over ¥10K)",
|
|
131
|
+
"freee_account_code": 624,
|
|
132
|
+
"default_tax_code": 2,
|
|
133
|
+
"description": "1万円超の飲食・接待。 1万円以下は会議費へ自動振分",
|
|
134
|
+
"amount_threshold_min": 10001,
|
|
135
|
+
"keywords": [
|
|
136
|
+
"鉄板焼", "ステーキ", "ホテル", "料亭", "懐石", "割烹", "鮨",
|
|
137
|
+
"高級寿司", "ふぐ", "蟹", "和食",
|
|
138
|
+
"フレンチ", "イタリアン", "イタリア料理", "Trattoria", "Ristorante",
|
|
139
|
+
"ワイン", "シャンパン", "Champagne", "Bar", "BAR", "バー",
|
|
140
|
+
"クラブ", "CLUB", "ラウンジ", "Lounge",
|
|
141
|
+
"中華", "中国料理", "コース", "ディナー", "DINNER",
|
|
142
|
+
"接待", "歓送迎会", "懇親会", "新年会", "忘年会",
|
|
143
|
+
"ゴルフ", "GOLF", "ゴルフ場", "ゴルフクラブ",
|
|
144
|
+
"プレゼント", "贈答品", "胡蝶蘭", "お歳暮", "お中元",
|
|
145
|
+
"髙島屋", "三越", "伊勢丹", "大丸", "松坂屋",
|
|
146
|
+
"ザ・リッツ・カールトン", "Ritz-Carlton", "リッツ", "ペニンシュラ", "Peninsula",
|
|
147
|
+
"Mandarin Oriental", "マンダリン", "ハイアット", "Hyatt",
|
|
148
|
+
"ANAインターコンチネンタル", "InterContinental", "Marriott", "マリオット",
|
|
149
|
+
"Hilton", "ヒルトン", "Sheraton", "シェラトン", "コンラッド", "Conrad",
|
|
150
|
+
"Park Hyatt", "パークハイアット",
|
|
151
|
+
"東京會舘", "帝国ホテル", "オークラ", "ホテルオークラ", "ニューオータニ"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "salary",
|
|
156
|
+
"name_ja": "給与",
|
|
157
|
+
"name_en": "Salary & Wages",
|
|
158
|
+
"freee_account_code": 622,
|
|
159
|
+
"default_tax_code": 0,
|
|
160
|
+
"description": "従業員給与。 振込+従業員名 で auto-detect、 税区分対象外",
|
|
161
|
+
"special_pattern": "salary_employee_match",
|
|
162
|
+
"keywords": [
|
|
163
|
+
"給与", "給料", "給与支給", "給料支給",
|
|
164
|
+
"賞与", "ボーナス", "BONUS",
|
|
165
|
+
"通勤手当", "通勤費補助",
|
|
166
|
+
"残業代", "残業手当",
|
|
167
|
+
"役員報酬", "役員賞与",
|
|
168
|
+
"役員給与", "代表報酬"
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "outsourcing",
|
|
173
|
+
"name_ja": "外注費",
|
|
174
|
+
"name_en": "Outsourcing",
|
|
175
|
+
"freee_account_code": 626,
|
|
176
|
+
"default_tax_code": 2,
|
|
177
|
+
"description": "業務委託費。 振込+カナ人名 で auto-detect、 発生日を前月末に自動変更",
|
|
178
|
+
"special_pattern": "transfer_katakana_person",
|
|
179
|
+
"keywords": [
|
|
180
|
+
"外注", "業務委託", "委託費", "委託料",
|
|
181
|
+
"請負", "作業料",
|
|
182
|
+
"デザイン費", "design fee",
|
|
183
|
+
"コンサルティング", "consulting", "顧問料",
|
|
184
|
+
"translation", "翻訳料",
|
|
185
|
+
"ライティング", "writing",
|
|
186
|
+
"開発委託", "development outsourcing",
|
|
187
|
+
"編集",
|
|
188
|
+
"Lancers", "ランサーズ", "CrowdWorks", "クラウドワークス",
|
|
189
|
+
"Upwork", "Fiverr"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "professional_fee",
|
|
194
|
+
"name_ja": "支払報酬料",
|
|
195
|
+
"name_en": "Professional Fees (Tax/Legal)",
|
|
196
|
+
"freee_account_code": 627,
|
|
197
|
+
"default_tax_code": 2,
|
|
198
|
+
"description": "税理士・弁護士・社労士・司法書士等の士業報酬。 振込+士業名 で auto-detect、 取引先名も自動抽出",
|
|
199
|
+
"special_pattern": "transfer_professional",
|
|
200
|
+
"keywords": [
|
|
201
|
+
"税理士", "公認会計士", "会計士", "監査法人",
|
|
202
|
+
"弁護士", "法律事務所", "法律事務"
|
|
203
|
+
,
|
|
204
|
+
"社労士", "社会保険労務士", "社会保険労務",
|
|
205
|
+
"司法書士", "行政書士",
|
|
206
|
+
"弁理士", "中小企業診断士",
|
|
207
|
+
"顧問報酬", "監査報酬",
|
|
208
|
+
"税務調査対応費"
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"id": "rent",
|
|
213
|
+
"name_ja": "地代家賃",
|
|
214
|
+
"name_en": "Rent",
|
|
215
|
+
"freee_account_code": 614,
|
|
216
|
+
"default_tax_code": 2,
|
|
217
|
+
"description": "オフィス・倉庫・駐車場月額賃料。 居住用は税区分0",
|
|
218
|
+
"keywords": [
|
|
219
|
+
"家賃", "賃料", "オフィス賃料",
|
|
220
|
+
"WeWork", "We Work", "WEWORK",
|
|
221
|
+
"リージャス", "Regus", "Spaces",
|
|
222
|
+
"ServCorp", "サーブコープ",
|
|
223
|
+
"コワーキング", "Coworking", "co-working",
|
|
224
|
+
"貸会議室", "会議室レンタル", "TKP",
|
|
225
|
+
"倉庫賃料", "貸倉庫", "トランクルーム",
|
|
226
|
+
"月極", "駐車場月極"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"id": "utilities",
|
|
231
|
+
"name_ja": "水道光熱費",
|
|
232
|
+
"name_en": "Utilities",
|
|
233
|
+
"freee_account_code": 616,
|
|
234
|
+
"default_tax_code": 2,
|
|
235
|
+
"description": "電気・ガス・水道。 公共料金は除外rule で別処理されるため、 ここは事業所契約のみ",
|
|
236
|
+
"keywords": [
|
|
237
|
+
"東京電力", "東電", "TEPCO", "関西電力", "関電",
|
|
238
|
+
"中部電力", "九州電力", "東北電力", "中国電力", "四国電力", "北海道電力",
|
|
239
|
+
"東京ガス", "大阪ガス", "東邦ガス", "西部ガス", "ENEOS",
|
|
240
|
+
"Looop でんき", "ループでんき", "出光興産", "ENEOSでんき",
|
|
241
|
+
"新電力", "PPS",
|
|
242
|
+
"Lemonade", "auでんき", "ソフトバンクでんき"
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"id": "advertising",
|
|
247
|
+
"name_ja": "広告宣伝費",
|
|
248
|
+
"name_en": "Advertising & Marketing",
|
|
249
|
+
"freee_account_code": 631,
|
|
250
|
+
"default_tax_code": 2,
|
|
251
|
+
"description": "Google Ads / Meta / LINE 広告 / 雑誌広告等",
|
|
252
|
+
"keywords": [
|
|
253
|
+
"Google Ads", "Google AdWords", "AdWords",
|
|
254
|
+
"Meta", "Facebook Ads", "Instagram Ads",
|
|
255
|
+
"Twitter Ads", "X Ads", "LinkedIn Ads",
|
|
256
|
+
"TikTok Ads", "YouTube Ads",
|
|
257
|
+
"Yahoo!広告", "Yahoo広告", "YDA", "YDN",
|
|
258
|
+
"LINE Ads", "LINE広告",
|
|
259
|
+
"リスティング", "ディスプレイ広告",
|
|
260
|
+
"Indeed", "求人広告", "PR TIMES", "プレスリリース",
|
|
261
|
+
"アフィリエイト", "ASP", "A8", "もしも", "バリューコマース",
|
|
262
|
+
"SmartNews広告", "Gunosy広告"
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"id": "books_magazines",
|
|
267
|
+
"name_ja": "新聞図書費",
|
|
268
|
+
"name_en": "Books, Magazines, Newspapers",
|
|
269
|
+
"freee_account_code": 620,
|
|
270
|
+
"default_tax_code": 1,
|
|
271
|
+
"description": "書籍・雑誌・新聞・電子書籍",
|
|
272
|
+
"keywords": [
|
|
273
|
+
"Kindle", "Kindle本", "Audible",
|
|
274
|
+
"honto", "ebookjapan", "BookLive",
|
|
275
|
+
"紀伊國屋", "丸善", "ジュンク堂", "三省堂", "文教堂", "未来屋書店",
|
|
276
|
+
"TSUTAYA", "蔦屋", "ブックオフ",
|
|
277
|
+
"日経新聞", "日本経済新聞", "朝日新聞", "読売新聞", "毎日新聞", "産経新聞",
|
|
278
|
+
"東洋経済", "ダイヤモンド", "プレジデント", "Forbes", "Wired",
|
|
279
|
+
"週刊", "月刊", "雑誌"
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"id": "supplies",
|
|
284
|
+
"name_ja": "事務用品費",
|
|
285
|
+
"name_en": "Office Supplies",
|
|
286
|
+
"freee_account_code": 618,
|
|
287
|
+
"default_tax_code": 2,
|
|
288
|
+
"description": "10万円未満の事務器具備品 (= 10万円以上は備品 / 償却資産)",
|
|
289
|
+
"amount_threshold_max": 99999,
|
|
290
|
+
"keywords": [
|
|
291
|
+
"デスク", "椅子", "オフィスチェア", "オカムラ", "Okamura", "イトーキ", "Itoki",
|
|
292
|
+
"ハーマンミラー", "Herman Miller", "アーロンチェア",
|
|
293
|
+
"本棚", "書庫", "キャビネット",
|
|
294
|
+
"プリンター", "Printer", "EPSON", "Canon", "ブラザー", "Brother",
|
|
295
|
+
"ホワイトボード", "white board", "プロジェクター",
|
|
296
|
+
"シュレッダー", "電卓",
|
|
297
|
+
"ボールペン", "ノート", "付箋", "ポストイット", "Post-it",
|
|
298
|
+
"ファイル", "クリアファイル", "バインダー",
|
|
299
|
+
"クリップ", "ホッチキス", "ステープラー",
|
|
300
|
+
"コピー用紙", "A4コピー紙", "Office Depot"
|
|
301
|
+
]
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"id": "membership_fee",
|
|
305
|
+
"name_ja": "諸会費",
|
|
306
|
+
"name_en": "Memberships & Subscriptions",
|
|
307
|
+
"freee_account_code": 632,
|
|
308
|
+
"default_tax_code": 0,
|
|
309
|
+
"description": "業界団体・商工会議所・組合費等。 税区分は通常対象外",
|
|
310
|
+
"keywords": [
|
|
311
|
+
"商工会議所", "商工会",
|
|
312
|
+
"経団連", "日商", "中小企業家同友会",
|
|
313
|
+
"JETRO", "ジェトロ",
|
|
314
|
+
"業界団体", "団体会費", "組合費",
|
|
315
|
+
"ロータリークラブ", "Rotary",
|
|
316
|
+
"ライオンズクラブ", "Lions Club",
|
|
317
|
+
"青年会議所", "JC",
|
|
318
|
+
"倫理法人会", "盛和塾",
|
|
319
|
+
"TKC会費", "税理士会会費"
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": "insurance",
|
|
324
|
+
"name_ja": "保険料",
|
|
325
|
+
"name_en": "Insurance Premiums",
|
|
326
|
+
"freee_account_code": 633,
|
|
327
|
+
"default_tax_code": 0,
|
|
328
|
+
"description": "生命保険・損害保険・社会保険。消費税非課税。労災/雇用保険の事業者負担分(法定福利費)も含む",
|
|
329
|
+
"keywords": [
|
|
330
|
+
"保険料", "保険",
|
|
331
|
+
"生命保険", "養老保険", "定期保険",
|
|
332
|
+
"損害保険", "火災保険", "地震保険",
|
|
333
|
+
"自動車保険", "自賠責", "任意保険",
|
|
334
|
+
"東京海上", "三井住友海上", "損保ジャパン", "あいおいニッセイ",
|
|
335
|
+
"日本生命", "第一生命", "明治安田", "住友生命",
|
|
336
|
+
"アフラック", "Aflac", "メットライフ", "MetLife",
|
|
337
|
+
"社会保険料", "厚生年金", "健康保険料",
|
|
338
|
+
"労災保険", "雇用保険", "労働保険",
|
|
339
|
+
"介護保険", "国民健康保険", "国保",
|
|
340
|
+
"労働保険料", "確定拠出年金", "企業型DC"
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "taxes_dues",
|
|
345
|
+
"name_ja": "租税公課",
|
|
346
|
+
"name_en": "Taxes & Public Charges",
|
|
347
|
+
"freee_account_code": 600,
|
|
348
|
+
"default_tax_code": 0,
|
|
349
|
+
"description": "法人税・住民税・事業税・印紙税・固定資産税等。消費税不課税",
|
|
350
|
+
"keywords": [
|
|
351
|
+
"法人税", "法人住民税", "法人事業税",
|
|
352
|
+
"所得税", "住民税", "源泉所得税",
|
|
353
|
+
"印紙税", "収入印紙", "印紙",
|
|
354
|
+
"固定資産税", "都市計画税",
|
|
355
|
+
"不動産取得税", "登録免許税",
|
|
356
|
+
"自動車税", "軽自動車税", "重量税",
|
|
357
|
+
"事業所税", "償却資産税",
|
|
358
|
+
"税務署", "延滞税", "加算税",
|
|
359
|
+
"住民票", "印鑑証明", "登記簿",
|
|
360
|
+
"謄本", "戸籍", "公証役場"
|
|
361
|
+
]
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "donation",
|
|
365
|
+
"name_ja": "寄付金",
|
|
366
|
+
"name_en": "Donations & Contributions",
|
|
367
|
+
"freee_account_code": 636,
|
|
368
|
+
"default_tax_code": 0,
|
|
369
|
+
"description": "寄付金・献金・義援金。消費税不課税。損金算入限度額あり",
|
|
370
|
+
"keywords": [
|
|
371
|
+
"寄付", "寄附", "寄付金", "寄附金",
|
|
372
|
+
"義援金", "義捐金", "支援金",
|
|
373
|
+
"献金", "募金",
|
|
374
|
+
"ふるさと納税",
|
|
375
|
+
"赤十字", "ユニセフ", "UNICEF",
|
|
376
|
+
"日本財団", "公益財団", "公益社団",
|
|
377
|
+
"NPO", "認定NPO"
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"id": "condolence",
|
|
382
|
+
"name_ja": "慶弔費",
|
|
383
|
+
"name_en": "Condolence & Celebration",
|
|
384
|
+
"freee_account_code": 625,
|
|
385
|
+
"default_tax_code": 0,
|
|
386
|
+
"description": "慶弔見舞金。消費税不課税。福利厚生費の一部として処理する場合も",
|
|
387
|
+
"keywords": [
|
|
388
|
+
"慶弔費", "慶弔",
|
|
389
|
+
"香典", "御霊前", "御仏前",
|
|
390
|
+
"祝金", "御祝", "御祝儀", "祝儀",
|
|
391
|
+
"見舞金", "見舞い", "お見舞い",
|
|
392
|
+
"弔慰金", "弔電",
|
|
393
|
+
"結婚祝", "出産祝", "入学祝",
|
|
394
|
+
"花輪", "供花", "弔花"
|
|
395
|
+
]
|
|
396
|
+
}
|
|
397
|
+
]
|
|
398
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://github.com/michielinksee/kansei-link-cockpit/blob/main/data/keyword-dict-schema.json",
|
|
4
|
+
"title": "Cockpit MCP Keyword Dictionary",
|
|
5
|
+
"description": "Schema for Stage 1 keyword classification dictionaries used by Cockpit MCP's two-stage classifier. Each category maps a list of keywords (= service names, vendor names, common 摘要 patterns) to a 勘定科目 + 税区分.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "locale", "tax_jurisdiction", "categories"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
12
|
+
"description": "Semver version of this dictionary"
|
|
13
|
+
},
|
|
14
|
+
"locale": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^[a-z]{2}-[A-Z]{2}$",
|
|
17
|
+
"description": "BCP 47 locale code (e.g., ja-JP)"
|
|
18
|
+
},
|
|
19
|
+
"tax_jurisdiction": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"pattern": "^[A-Z]{2}$",
|
|
22
|
+
"description": "ISO 3166-1 alpha-2 country code for tax regime"
|
|
23
|
+
},
|
|
24
|
+
"tax_code_default": {
|
|
25
|
+
"type": "integer",
|
|
26
|
+
"description": "Default tax_code if no per-keyword override (= freee 税区分 ID)"
|
|
27
|
+
},
|
|
28
|
+
"last_updated": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"format": "date",
|
|
31
|
+
"description": "ISO 8601 YYYY-MM-DD"
|
|
32
|
+
},
|
|
33
|
+
"maintainer": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"license": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"default": "MIT"
|
|
39
|
+
},
|
|
40
|
+
"description": {
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"notes": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": { "type": "string" },
|
|
46
|
+
"description": "Free-form notes / caveats / algorithm details"
|
|
47
|
+
},
|
|
48
|
+
"categories": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"minItems": 1,
|
|
51
|
+
"items": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"required": ["id", "name_ja", "freee_account_code", "default_tax_code", "keywords"],
|
|
54
|
+
"properties": {
|
|
55
|
+
"id": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"pattern": "^[a-z_]+$",
|
|
58
|
+
"description": "Stable ID (lowercase, underscore-separated)"
|
|
59
|
+
},
|
|
60
|
+
"name_ja": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "Japanese display name (= 勘定科目名)"
|
|
63
|
+
},
|
|
64
|
+
"name_en": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"description": "English equivalent for international expansion"
|
|
67
|
+
},
|
|
68
|
+
"freee_account_code": {
|
|
69
|
+
"type": "integer",
|
|
70
|
+
"description": "freee 勘定科目 ID (= account_item_id in freee API)"
|
|
71
|
+
},
|
|
72
|
+
"mf_account_code": {
|
|
73
|
+
"type": "integer",
|
|
74
|
+
"description": "Money Forward 勘定科目 ID (optional, set when freee + MF mapping confirmed)"
|
|
75
|
+
},
|
|
76
|
+
"default_tax_code": {
|
|
77
|
+
"type": "integer",
|
|
78
|
+
"description": "freee 税区分 ID (= tax_code, e.g., 0=対象外, 1=課税仕入8%, 2=課税仕入10%)"
|
|
79
|
+
},
|
|
80
|
+
"description": {
|
|
81
|
+
"type": "string"
|
|
82
|
+
},
|
|
83
|
+
"amount_threshold_min": {
|
|
84
|
+
"type": "number",
|
|
85
|
+
"description": "Minimum amount (JPY) — below this, transaction does NOT match this category. Used for tiered rules like 会議費 (≤¥10K) vs 交際費 (>¥10K)."
|
|
86
|
+
},
|
|
87
|
+
"amount_threshold_max": {
|
|
88
|
+
"type": "number",
|
|
89
|
+
"description": "Maximum amount (JPY) — above this, transaction does NOT match this category. Used for fixed-asset thresholds like 事務用品費 (<¥100K) vs 備品 (≥¥100K)."
|
|
90
|
+
},
|
|
91
|
+
"amount_overflow_category": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"description": "If amount exceeds amount_threshold_max, auto-redirect to this category id (e.g., 会議費 → 交際費)."
|
|
94
|
+
},
|
|
95
|
+
"special_pattern": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"enum": [
|
|
98
|
+
"salary_employee_match",
|
|
99
|
+
"transfer_katakana_person",
|
|
100
|
+
"transfer_professional"
|
|
101
|
+
],
|
|
102
|
+
"description": "Custom matching logic that requires more than keyword substring (= e.g., '振込+カナ人名 → 外注費' requires regex + name detection)"
|
|
103
|
+
},
|
|
104
|
+
"keywords": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"minItems": 1,
|
|
107
|
+
"items": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"minLength": 1
|
|
110
|
+
},
|
|
111
|
+
"description": "List of substrings to match against normalized 摘要 (= 全角→半角 + lowercase). Order matters for priority within the same category. Across categories, the FIRST matching category wins (= top categories take priority)."
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|