building-standards-act-mcp 1.8.1 → 1.9.1
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/README.md +29 -25
- package/dist/data/kokuji-term-aliases.d.ts +2 -0
- package/dist/data/kokuji-term-aliases.js +21 -0
- package/dist/data/kokuji-term-aliases.js.map +1 -0
- package/dist/lib/article-ref.d.ts +14 -0
- package/dist/lib/article-ref.js +52 -0
- package/dist/lib/article-ref.js.map +1 -0
- package/dist/lib/article-schemas.d.ts +21 -135
- package/dist/lib/egov-client.js +1 -0
- package/dist/lib/egov-client.js.map +1 -1
- package/dist/lib/kokuji-amendment.d.ts +2 -0
- package/dist/lib/kokuji-amendment.js +26 -0
- package/dist/lib/kokuji-amendment.js.map +1 -0
- package/dist/lib/mlit-client.d.ts +10 -10
- package/dist/lib/mlit-client.js +128 -54
- package/dist/lib/mlit-client.js.map +1 -1
- package/dist/lib/pdf-extractor.d.ts +7 -1
- package/dist/lib/pdf-extractor.js +20 -9
- package/dist/lib/pdf-extractor.js.map +1 -1
- package/dist/lib/tool-helpers.d.ts +7 -0
- package/dist/lib/tool-helpers.js +18 -5
- package/dist/lib/tool-helpers.js.map +1 -1
- package/dist/lib/types.d.ts +10 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/server.js +2 -2
- package/dist/tools/get-kokuji.js +69 -27
- package/dist/tools/get-kokuji.js.map +1 -1
- package/dist/tools/get-law.js +35 -7
- package/dist/tools/get-law.js.map +1 -1
- package/dist/tools/get-laws-batch.js +90 -6
- package/dist/tools/get-laws-batch.js.map +1 -1
- package/dist/tools/search-articles.js +2 -2
- package/dist/tools/search-articles.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -59,9 +59,11 @@ Vercel にデプロイすると、Claude.ai からすぐに使えます。環境
|
|
|
59
59
|
インストール不要で実行できます。
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
npx -y building-standards-act-mcp
|
|
62
|
+
npx -y building-standards-act-mcp@latest
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
`@latest` を付けると、npx のキャッシュに古い版が残っていても最新版で起動します。
|
|
66
|
+
|
|
65
67
|
### Claude Desktop
|
|
66
68
|
|
|
67
69
|
`claude_desktop_config.json` に以下を追加してください。
|
|
@@ -71,7 +73,7 @@ npx -y building-standards-act-mcp
|
|
|
71
73
|
"mcpServers": {
|
|
72
74
|
"building-standards-act": {
|
|
73
75
|
"command": "npx",
|
|
74
|
-
"args": ["-y", "building-standards-act-mcp"]
|
|
76
|
+
"args": ["-y", "building-standards-act-mcp@latest"]
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
}
|
|
@@ -80,43 +82,37 @@ npx -y building-standards-act-mcp
|
|
|
80
82
|
### Claude Code
|
|
81
83
|
|
|
82
84
|
```bash
|
|
83
|
-
claude mcp add building-standards-act -- npx -y building-standards-act-mcp
|
|
85
|
+
claude mcp add building-standards-act -- npx -y building-standards-act-mcp@latest
|
|
84
86
|
```
|
|
85
87
|
|
|
86
88
|
#### Windows + VS Code 拡張機能の場合
|
|
87
89
|
|
|
88
|
-
VS Code 拡張機能では `npx` 経由の起動が `Connection closed`
|
|
89
|
-
プロジェクトルートに `.mcp.json` を作成してください。
|
|
90
|
-
|
|
91
|
-
**Step 1: グローバルインストール**
|
|
90
|
+
VS Code 拡張機能では `npx` 経由の起動が `Connection closed` エラーになる場合があります。その場合は、公開中の Vercel 版に HTTP で接続するのが確実です。
|
|
92
91
|
|
|
93
92
|
```bash
|
|
94
|
-
|
|
93
|
+
claude mcp add --transport http building-standards-act https://building-standards-act-mcp.vercel.app/api/mcp
|
|
95
94
|
```
|
|
96
95
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
where node # → node.exe のフルパス(例: C:\Program Files\nodejs\node.exe)
|
|
101
|
-
npm root -g # → グローバル node_modules のパス
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Step 3: `.mcp.json` を作成**
|
|
105
|
-
|
|
106
|
-
取得したパスで置き換えてください(パス区切りは `/` を使用):
|
|
96
|
+
プロジェクト単位で設定するなら、プロジェクトルートの `.mcp.json` に次を書きます。
|
|
107
97
|
|
|
108
98
|
```json
|
|
109
99
|
{
|
|
110
100
|
"mcpServers": {
|
|
111
101
|
"building-standards-act": {
|
|
112
|
-
"
|
|
113
|
-
"
|
|
102
|
+
"type": "http",
|
|
103
|
+
"url": "https://building-standards-act-mcp.vercel.app/api/mcp"
|
|
114
104
|
}
|
|
115
105
|
}
|
|
116
106
|
}
|
|
117
107
|
```
|
|
118
108
|
|
|
119
|
-
|
|
109
|
+
ローカルの stdio で動かしたい場合は、`npx` を `cmd /c` で包みます。
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
claude mcp add building-standards-act -- cmd /c npx -y building-standards-act-mcp@latest
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
> **注意**: グローバルインストールした `dist/index.js` のパスを `.mcp.json` に直接書く方法は使わないでください。パッケージの更新・削除やフォルダの移動で、エラーを出さずに接続できなくなります。
|
|
120
116
|
|
|
121
117
|
### ローカル(ソースから)
|
|
122
118
|
|
|
@@ -142,13 +138,13 @@ npm run build
|
|
|
142
138
|
|
|
143
139
|
| ツール | 説明 |
|
|
144
140
|
| ------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
145
|
-
| `get_law` |
|
|
141
|
+
| `get_law` | 条番号を指定して条文を取得する。テキスト本文は `max_chars`(既定 100,000)で区切り、続きは `offset` で取得 |
|
|
146
142
|
| `get_full_law` | 法令の全文を取得する。`max_chars`(既定 100,000)で区切り、続きは `offset` で取る |
|
|
147
143
|
| `search_law` | 法令名(タイトル)で建築関連法令を検索する。略称マップと e-Gov API の両方を検索。条文本文の検索は `search_articles` |
|
|
148
144
|
| `search_articles` | 条文本文をキーワードで全文検索する(e-Gov `/keyword`)。法令名で絞り込み可。条番号は返らないので `get_law` で確定する |
|
|
149
145
|
| `get_kokuji` | 建築基準法が技術基準を委任している告示の全文を取得する(省エネ告示は国交省 PDF から直接取得) |
|
|
150
146
|
| `check_law_updates` | 法令の改正状況を e-Gov API で確認する。`since`(既定は 12 か月前)より後の改正だけを「改正あり」にする |
|
|
151
|
-
| `get_laws_batch` |
|
|
147
|
+
| `get_laws_batch` | 複数条文を一括取得(最大20件)。`max_chars_per_item`(既定 8,000)で切り詰め、`max_total_chars`(既定 60,000)を超える後続本文は省略 |
|
|
152
148
|
| `verify_citation` | AIの回答に含まれる法令引用を検証する(条文存在確認・テキスト照合、最大10件) |
|
|
153
149
|
| `suggest_related` | 指定した条文の関連法令・委任先・同法令内参照を自動抽出して提案する |
|
|
154
150
|
| `analyze_article` | 条文の構造解析メタデータ(項数・号数・参照統計・プレビュー)をJSON形式で返す |
|
|
@@ -163,6 +159,10 @@ npm run build
|
|
|
163
159
|
| `law_name` | 法令名(正式名称または略称) | `建築基準法`, `建基法` |
|
|
164
160
|
| `article_number` | 条文番号(附則・別表にも対応) | `第20条`, `附則`, `別表第一` |
|
|
165
161
|
| `format` | 出力形式(`text` または `structured`、省略時は `text`) | `structured` |
|
|
162
|
+
| `max_chars` | 本文の最大文字数(1,000〜500,000、既定 100,000)。`format=text` のみ | `8000` |
|
|
163
|
+
| `offset` | 本文内の開始位置(既定 0)。`format=text` のみ。続きは `next_offset` を指定 | `8000` |
|
|
164
|
+
|
|
165
|
+
`offset` は見出し・参照・出典を含まない本文内の文字位置です。`get_laws_batch` の `next_offset` をそのまま指定できます。
|
|
166
166
|
|
|
167
167
|
#### `get_full_law`
|
|
168
168
|
|
|
@@ -209,6 +209,10 @@ npm run build
|
|
|
209
209
|
| パラメータ | 説明 | 例 |
|
|
210
210
|
| ---------- | ---------------------------------------------------------------------- | --- |
|
|
211
211
|
| `requests` | 取得対象の配列。各要素に `law_name`, `article_number`, `format` を指定 | — |
|
|
212
|
+
| `max_chars_per_item` | 条文ごとの最大文字数(1,000〜50,000、既定 8,000)。構造化形式はJSONの長さを基準に項単位で切り詰め | `8000` |
|
|
213
|
+
| `max_total_chars` | 応答全体のJSONの最大文字数(10,000〜500,000、既定 60,000)。超過する後続本文は省略 | `60000` |
|
|
214
|
+
|
|
215
|
+
切り詰めたテキストの続きは、案内された `offset` を `get_law` に指定して取得します。本文を省略した結果は `omitted: true` と省略一覧で示します。取得の成功・失敗件数は本文の省略によって変わりません。
|
|
212
216
|
|
|
213
217
|
#### `verify_citation`
|
|
214
218
|
|
|
@@ -566,7 +570,7 @@ e-Gov API は告示を収録していないため、`get_kokuji` は国土交通
|
|
|
566
570
|
"mcpServers": {
|
|
567
571
|
"building-standards-act": {
|
|
568
572
|
"command": "npx",
|
|
569
|
-
"args": ["-y", "building-standards-act-mcp"],
|
|
573
|
+
"args": ["-y", "building-standards-act-mcp@latest"],
|
|
570
574
|
"env": {
|
|
571
575
|
"BUILDING_LAW_CACHE": "file"
|
|
572
576
|
}
|
|
@@ -590,7 +594,7 @@ e-Gov API は告示を収録していないため、`get_kokuji` は国土交通
|
|
|
590
594
|
| API 並行呼び出し | 最大 5 並行(200ms 間隔) |
|
|
591
595
|
| Vercel デプロイ | 対応(MCP-over-HTTP + REST API) |
|
|
592
596
|
| Vercel 関数タイムアウト | 60 秒(maxDuration) |
|
|
593
|
-
| Node.js | >=
|
|
597
|
+
| Node.js | >= 22.12.0 |
|
|
594
598
|
|
|
595
599
|
## セキュリティ
|
|
596
600
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Terms absent from the legacy MLIT titles; keep aliases tied to provisions. */
|
|
2
|
+
const KOKUJI_TERM_ALIASES = {
|
|
3
|
+
// Reiwa 6 MLIT Notice 447 moved wall-quantity rules to Showa 56 Notice 1100, titled with Order Article 46(4).
|
|
4
|
+
壁量: "令46条4項",
|
|
5
|
+
// Required wall quantity is governed by the same Order Article 46(4) rule in Showa 56 Notice 1100.
|
|
6
|
+
必要壁量: "令46条4項",
|
|
7
|
+
// Wall-quantity calculations use Order Article 46(4), named in the legacy title of Showa 56 Notice 1100.
|
|
8
|
+
壁量計算: "令46条4項",
|
|
9
|
+
// Wall-quantity standards moved under Showa 56 Notice 1100 through Reiwa 6 MLIT Notice 447.
|
|
10
|
+
壁量基準: "令46条4項",
|
|
11
|
+
// Existing wall quantity is assessed against the Order Article 46(4) wall-quantity rule.
|
|
12
|
+
存在壁量: "令46条4項",
|
|
13
|
+
};
|
|
14
|
+
/** Append distinct provision aliases while preserving the user's original text. */
|
|
15
|
+
export function expandKokujiAliases(text) {
|
|
16
|
+
const targets = new Set(Object.entries(KOKUJI_TERM_ALIASES)
|
|
17
|
+
.filter(([term]) => text.includes(term))
|
|
18
|
+
.map(([, target]) => target));
|
|
19
|
+
return [text, ...targets].join(" ");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=kokuji-term-aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kokuji-term-aliases.js","sourceRoot":"","sources":["../../src/data/kokuji-term-aliases.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,mBAAmB,GAAqC;IAC5D,8GAA8G;IAC9G,EAAE,EAAE,QAAQ;IACZ,mGAAmG;IACnG,IAAI,EAAE,QAAQ;IACd,yGAAyG;IACzG,IAAI,EAAE,QAAQ;IACd,4FAA4F;IAC5F,IAAI,EAAE,QAAQ;IACd,yFAAyF;IACzF,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAC/B,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** A reference and its source span; numeral strings retain kanji spelling. */
|
|
2
|
+
export interface ArticleRef {
|
|
3
|
+
law?: string;
|
|
4
|
+
article: string;
|
|
5
|
+
branches: string[];
|
|
6
|
+
paragraph?: string;
|
|
7
|
+
item?: string;
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
}
|
|
11
|
+
/** Parse bare references and explicit law names without assuming a law context. */
|
|
12
|
+
export declare function parseArticleRefs(text: string): ArticleRef[];
|
|
13
|
+
/** Render the kanji reference form used in notice titles, without the law name. */
|
|
14
|
+
export declare function formatArticleRef(ref: ArticleRef): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const NUMERAL = "[0-90-9〇零一二三四五六七八九十百千万億兆]+";
|
|
2
|
+
const LAW = "[\\u4E00-\\u9FFF]+(?:法(?:施行令|施行規則)?|施行令|規則)|施行令|規則|法|令";
|
|
3
|
+
/** Parse bare references and explicit law names without assuming a law context. */
|
|
4
|
+
export function parseArticleRefs(text) {
|
|
5
|
+
const pattern = new RegExp(`(?:(${LAW})\\s*)?第?(${NUMERAL})条((?:の第?${NUMERAL})*)(?:第?(${NUMERAL})項)?(?:第?(${NUMERAL})号)?`, "g");
|
|
6
|
+
return [...text.matchAll(pattern)].map((match) => {
|
|
7
|
+
const prefix = match[1];
|
|
8
|
+
const law = prefix === "法"
|
|
9
|
+
? "建築基準法"
|
|
10
|
+
: prefix === "令" || prefix === "施行令"
|
|
11
|
+
? "建築基準法施行令"
|
|
12
|
+
: prefix;
|
|
13
|
+
return {
|
|
14
|
+
law,
|
|
15
|
+
article: match[2],
|
|
16
|
+
branches: match[3] ? match[3].split("の").slice(1) : [],
|
|
17
|
+
paragraph: match[4],
|
|
18
|
+
item: match[5],
|
|
19
|
+
start: match.index,
|
|
20
|
+
end: match.index + match[0].length,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function integerToKanji(value) {
|
|
25
|
+
const digits = "〇一二三四五六七八九";
|
|
26
|
+
for (const [unit, label] of [
|
|
27
|
+
[1_0000_0000_0000, "兆"], [1_0000_0000, "億"], [1_0000, "万"],
|
|
28
|
+
[1000, "千"], [100, "百"], [10, "十"],
|
|
29
|
+
]) {
|
|
30
|
+
if (value < unit)
|
|
31
|
+
continue;
|
|
32
|
+
const count = Math.floor(value / unit);
|
|
33
|
+
const prefix = count === 1 && unit <= 1000 ? "" : integerToKanji(count);
|
|
34
|
+
const remainder = value % unit;
|
|
35
|
+
return prefix + label + (remainder ? integerToKanji(remainder) : "");
|
|
36
|
+
}
|
|
37
|
+
return digits[value];
|
|
38
|
+
}
|
|
39
|
+
function formatNumeral(value) {
|
|
40
|
+
const normalized = value.replace(/^第/, "").replace(/[0-9]/g, (digit) => String(digit.charCodeAt(0) - "0".charCodeAt(0)));
|
|
41
|
+
return /^\d+$/.test(normalized)
|
|
42
|
+
? integerToKanji(Number(normalized))
|
|
43
|
+
: normalized;
|
|
44
|
+
}
|
|
45
|
+
/** Render the kanji reference form used in notice titles, without the law name. */
|
|
46
|
+
export function formatArticleRef(ref) {
|
|
47
|
+
return `第${formatNumeral(ref.article)}条`
|
|
48
|
+
+ ref.branches.map((branch) => `の${formatNumeral(branch)}`).join("")
|
|
49
|
+
+ (ref.paragraph ? `第${formatNumeral(ref.paragraph)}項` : "")
|
|
50
|
+
+ (ref.item ? `第${formatNumeral(ref.item)}号` : "");
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=article-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article-ref.js","sourceRoot":"","sources":["../../src/lib/article-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,53 +7,19 @@ export declare const parsedArticleSchema: z.ZodObject<{
|
|
|
7
7
|
text: z.ZodString;
|
|
8
8
|
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
9
9
|
raw_text: z.ZodString;
|
|
10
|
-
ref_type: z.ZodEnum<
|
|
10
|
+
ref_type: z.ZodEnum<{
|
|
11
|
+
same_law: "same_law";
|
|
12
|
+
cross_law: "cross_law";
|
|
13
|
+
relative: "relative";
|
|
14
|
+
delegation: "delegation";
|
|
15
|
+
unknown: "unknown";
|
|
16
|
+
}>;
|
|
11
17
|
target_law: z.ZodOptional<z.ZodString>;
|
|
12
18
|
target_article: z.ZodOptional<z.ZodString>;
|
|
13
19
|
target_paragraph: z.ZodOptional<z.ZodString>;
|
|
14
20
|
target_item: z.ZodOptional<z.ZodString>;
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
18
|
-
target_law?: string | undefined;
|
|
19
|
-
target_article?: string | undefined;
|
|
20
|
-
target_paragraph?: string | undefined;
|
|
21
|
-
target_item?: string | undefined;
|
|
22
|
-
}, {
|
|
23
|
-
raw_text: string;
|
|
24
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
25
|
-
target_law?: string | undefined;
|
|
26
|
-
target_article?: string | undefined;
|
|
27
|
-
target_paragraph?: string | undefined;
|
|
28
|
-
target_item?: string | undefined;
|
|
29
|
-
}>, "many">>;
|
|
30
|
-
}, "strip", z.ZodTypeAny, {
|
|
31
|
-
text: string;
|
|
32
|
-
article_num: string;
|
|
33
|
-
article_caption: string;
|
|
34
|
-
article_title: string;
|
|
35
|
-
references?: {
|
|
36
|
-
raw_text: string;
|
|
37
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
38
|
-
target_law?: string | undefined;
|
|
39
|
-
target_article?: string | undefined;
|
|
40
|
-
target_paragraph?: string | undefined;
|
|
41
|
-
target_item?: string | undefined;
|
|
42
|
-
}[] | undefined;
|
|
43
|
-
}, {
|
|
44
|
-
text: string;
|
|
45
|
-
article_num: string;
|
|
46
|
-
article_caption: string;
|
|
47
|
-
article_title: string;
|
|
48
|
-
references?: {
|
|
49
|
-
raw_text: string;
|
|
50
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
51
|
-
target_law?: string | undefined;
|
|
52
|
-
target_article?: string | undefined;
|
|
53
|
-
target_paragraph?: string | undefined;
|
|
54
|
-
target_item?: string | undefined;
|
|
55
|
-
}[] | undefined;
|
|
56
|
-
}>;
|
|
21
|
+
}, z.core.$strip>>>;
|
|
22
|
+
}, z.core.$strip>;
|
|
57
23
|
export declare const structuredArticleSchema: z.ZodObject<{
|
|
58
24
|
article_num: z.ZodString;
|
|
59
25
|
article_caption: z.ZodString;
|
|
@@ -65,101 +31,21 @@ export declare const structuredArticleSchema: z.ZodObject<{
|
|
|
65
31
|
item_num: z.ZodString;
|
|
66
32
|
item_title: z.ZodString;
|
|
67
33
|
item_sentence: z.ZodString;
|
|
68
|
-
subitems: z.ZodArray<z.ZodType<StructuredSubitem, z.
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
item_num: string;
|
|
72
|
-
item_title: string;
|
|
73
|
-
item_sentence: string;
|
|
74
|
-
}, {
|
|
75
|
-
subitems: StructuredSubitem[];
|
|
76
|
-
item_num: string;
|
|
77
|
-
item_title: string;
|
|
78
|
-
item_sentence: string;
|
|
79
|
-
}>, "many">;
|
|
80
|
-
}, "strip", z.ZodTypeAny, {
|
|
81
|
-
paragraph_num: string;
|
|
82
|
-
paragraph_sentence: string;
|
|
83
|
-
items: {
|
|
84
|
-
subitems: StructuredSubitem[];
|
|
85
|
-
item_num: string;
|
|
86
|
-
item_title: string;
|
|
87
|
-
item_sentence: string;
|
|
88
|
-
}[];
|
|
89
|
-
}, {
|
|
90
|
-
paragraph_num: string;
|
|
91
|
-
paragraph_sentence: string;
|
|
92
|
-
items: {
|
|
93
|
-
subitems: StructuredSubitem[];
|
|
94
|
-
item_num: string;
|
|
95
|
-
item_title: string;
|
|
96
|
-
item_sentence: string;
|
|
97
|
-
}[];
|
|
98
|
-
}>, "many">;
|
|
34
|
+
subitems: z.ZodArray<z.ZodType<StructuredSubitem, unknown, z.core.$ZodTypeInternals<StructuredSubitem, unknown>>>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
}, z.core.$strip>>;
|
|
99
37
|
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
100
38
|
raw_text: z.ZodString;
|
|
101
|
-
ref_type: z.ZodEnum<
|
|
39
|
+
ref_type: z.ZodEnum<{
|
|
40
|
+
same_law: "same_law";
|
|
41
|
+
cross_law: "cross_law";
|
|
42
|
+
relative: "relative";
|
|
43
|
+
delegation: "delegation";
|
|
44
|
+
unknown: "unknown";
|
|
45
|
+
}>;
|
|
102
46
|
target_law: z.ZodOptional<z.ZodString>;
|
|
103
47
|
target_article: z.ZodOptional<z.ZodString>;
|
|
104
48
|
target_paragraph: z.ZodOptional<z.ZodString>;
|
|
105
49
|
target_item: z.ZodOptional<z.ZodString>;
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
109
|
-
target_law?: string | undefined;
|
|
110
|
-
target_article?: string | undefined;
|
|
111
|
-
target_paragraph?: string | undefined;
|
|
112
|
-
target_item?: string | undefined;
|
|
113
|
-
}, {
|
|
114
|
-
raw_text: string;
|
|
115
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
116
|
-
target_law?: string | undefined;
|
|
117
|
-
target_article?: string | undefined;
|
|
118
|
-
target_paragraph?: string | undefined;
|
|
119
|
-
target_item?: string | undefined;
|
|
120
|
-
}>, "many">>;
|
|
121
|
-
}, "strip", z.ZodTypeAny, {
|
|
122
|
-
article_num: string;
|
|
123
|
-
article_caption: string;
|
|
124
|
-
article_title: string;
|
|
125
|
-
paragraphs: {
|
|
126
|
-
paragraph_num: string;
|
|
127
|
-
paragraph_sentence: string;
|
|
128
|
-
items: {
|
|
129
|
-
subitems: StructuredSubitem[];
|
|
130
|
-
item_num: string;
|
|
131
|
-
item_title: string;
|
|
132
|
-
item_sentence: string;
|
|
133
|
-
}[];
|
|
134
|
-
}[];
|
|
135
|
-
references?: {
|
|
136
|
-
raw_text: string;
|
|
137
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
138
|
-
target_law?: string | undefined;
|
|
139
|
-
target_article?: string | undefined;
|
|
140
|
-
target_paragraph?: string | undefined;
|
|
141
|
-
target_item?: string | undefined;
|
|
142
|
-
}[] | undefined;
|
|
143
|
-
}, {
|
|
144
|
-
article_num: string;
|
|
145
|
-
article_caption: string;
|
|
146
|
-
article_title: string;
|
|
147
|
-
paragraphs: {
|
|
148
|
-
paragraph_num: string;
|
|
149
|
-
paragraph_sentence: string;
|
|
150
|
-
items: {
|
|
151
|
-
subitems: StructuredSubitem[];
|
|
152
|
-
item_num: string;
|
|
153
|
-
item_title: string;
|
|
154
|
-
item_sentence: string;
|
|
155
|
-
}[];
|
|
156
|
-
}[];
|
|
157
|
-
references?: {
|
|
158
|
-
raw_text: string;
|
|
159
|
-
ref_type: "same_law" | "cross_law" | "relative" | "delegation" | "unknown";
|
|
160
|
-
target_law?: string | undefined;
|
|
161
|
-
target_article?: string | undefined;
|
|
162
|
-
target_paragraph?: string | undefined;
|
|
163
|
-
target_item?: string | undefined;
|
|
164
|
-
}[] | undefined;
|
|
165
|
-
}>;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
51
|
+
}, z.core.$strip>;
|
package/dist/lib/egov-client.js
CHANGED
|
@@ -161,6 +161,7 @@ export async function searchKeyword(params) {
|
|
|
161
161
|
if (cached)
|
|
162
162
|
return cached;
|
|
163
163
|
const result = await fetchJson(`${BASE_URL}/keyword?${cacheKey}`);
|
|
164
|
+
result.next_offset = result.next_offset ?? null;
|
|
164
165
|
keywordCache.set(cacheKey, result);
|
|
165
166
|
return result;
|
|
166
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"egov-client.js","sourceRoot":"","sources":["../../src/lib/egov-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"egov-client.js","sourceRoot":"","sources":["../../src/lib/egov-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Extract the last amendment listed in the PDF header, preserving its numerals. */
|
|
2
|
+
export function extractLatestAmendment(pdfText) {
|
|
3
|
+
const beginning = pdfText.slice(0, 1500);
|
|
4
|
+
const amendmentStart = beginning.indexOf("改正");
|
|
5
|
+
if (amendmentStart === -1)
|
|
6
|
+
return null;
|
|
7
|
+
const remaining = beginning.slice(amendmentStart + "改正".length);
|
|
8
|
+
const bodyStart = remaining.search(/建築基準法施行令(|建築基準法(|の規定に基づき|(?<=号)[^\S\r\n]*[\r\n]/u);
|
|
9
|
+
const header = (bodyStart === -1 ? remaining : remaining.slice(0, bodyStart))
|
|
10
|
+
.replace(/\s/g, "");
|
|
11
|
+
const entries = header.matchAll(/(昭和|平成|令和|同)?([〇一二三四五六七八九十百千0-9]+)年([〇一二三四五六七八九十百千0-9]+)月([〇一二三四五六七八九十百千0-9]+)日(建設省告示|国土交通省告示|同)?第([〇一二三四五六七八九十百千0-9]+)号/g);
|
|
12
|
+
let era = null;
|
|
13
|
+
let ministry = null;
|
|
14
|
+
let latest = null;
|
|
15
|
+
for (const [, entryEra, year, month, day, entryMinistry, number] of entries) {
|
|
16
|
+
if (entryEra && entryEra !== "同")
|
|
17
|
+
era = entryEra;
|
|
18
|
+
if (entryMinistry && entryMinistry !== "同")
|
|
19
|
+
ministry = entryMinistry;
|
|
20
|
+
if (era && ministry) {
|
|
21
|
+
latest = `${era}${year}年${month}月${day}日${ministry}第${number}号`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return latest;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=kokuji-amendment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kokuji-amendment.js","sourceRoot":"","sources":["../../src/lib/kokuji-amendment.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,cAAc,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;SAC1E,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,2HAA2H,CAAC,CAAC;IAE7J,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,KAAK,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QAC5E,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG;YAAE,GAAG,GAAG,QAAQ,CAAC;QACjD,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG;YAAE,QAAQ,GAAG,aAAa,CAAC;QACrE,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ,IAAI,MAAM,GAAG,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -6,16 +6,16 @@ export interface MlitNoticeEntry {
|
|
|
6
6
|
organization: string;
|
|
7
7
|
pdf_url: string;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
9
|
+
export type KokujiMatchStage = "exact" | "partial" | "article" | "keyword";
|
|
10
|
+
export interface KokujiMatch {
|
|
11
|
+
entry: MlitNoticeEntry;
|
|
12
|
+
stage: KokujiMatchStage;
|
|
13
|
+
matched: string[];
|
|
14
|
+
score: number;
|
|
15
|
+
}
|
|
16
|
+
/** Return candidates from the first successful stage, preserving exact/partial ordering. */
|
|
17
|
+
export declare function findKokujiCandidates(title: string, limit?: number): Promise<KokujiMatch[]>;
|
|
18
|
+
/** Keep the existing URL API backed by the same candidate selection. */
|
|
19
19
|
export declare function findKokujiPdfUrl(title: string): Promise<string | null>;
|
|
20
20
|
/**
|
|
21
21
|
* Search MLIT notice entries by keyword.
|