@tcos/broker-parser 0.1.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.
Files changed (55) hide show
  1. package/.claude/skills/parse-statement/SKILL.md +134 -0
  2. package/.claude/skills/parse-statement/examples.md +257 -0
  3. package/.claude/skills/parse-statement/trigger-tests/cases.yaml +133 -0
  4. package/README.md +153 -0
  5. package/dist/cli/index.d.ts +17 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +150 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/core/cleaning.d.ts +78 -0
  10. package/dist/core/cleaning.d.ts.map +1 -0
  11. package/dist/core/cleaning.js +217 -0
  12. package/dist/core/cleaning.js.map +1 -0
  13. package/dist/core/pipeline.d.ts +49 -0
  14. package/dist/core/pipeline.d.ts.map +1 -0
  15. package/dist/core/pipeline.js +66 -0
  16. package/dist/core/pipeline.js.map +1 -0
  17. package/dist/core/registry.d.ts +24 -0
  18. package/dist/core/registry.d.ts.map +1 -0
  19. package/dist/core/registry.js +53 -0
  20. package/dist/core/registry.js.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +29 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/parsers/phillip/extract.py +90 -0
  26. package/dist/parsers/phillip/extractor.d.ts +215 -0
  27. package/dist/parsers/phillip/extractor.d.ts.map +1 -0
  28. package/dist/parsers/phillip/extractor.js +1012 -0
  29. package/dist/parsers/phillip/extractor.js.map +1 -0
  30. package/dist/parsers/phillip/formatter.d.ts +113 -0
  31. package/dist/parsers/phillip/formatter.d.ts.map +1 -0
  32. package/dist/parsers/phillip/formatter.js +760 -0
  33. package/dist/parsers/phillip/formatter.js.map +1 -0
  34. package/dist/parsers/phillip/index.d.ts +25 -0
  35. package/dist/parsers/phillip/index.d.ts.map +1 -0
  36. package/dist/parsers/phillip/index.js +59 -0
  37. package/dist/parsers/phillip/index.js.map +1 -0
  38. package/dist/types/formatter.d.ts +47 -0
  39. package/dist/types/formatter.d.ts.map +1 -0
  40. package/dist/types/formatter.js +9 -0
  41. package/dist/types/formatter.js.map +1 -0
  42. package/dist/types/plugin.d.ts +14 -0
  43. package/dist/types/plugin.d.ts.map +1 -0
  44. package/dist/types/plugin.js +5 -0
  45. package/dist/types/plugin.js.map +1 -0
  46. package/dist/types/raw.d.ts +136 -0
  47. package/dist/types/raw.d.ts.map +1 -0
  48. package/dist/types/raw.js +11 -0
  49. package/dist/types/raw.js.map +1 -0
  50. package/dist/types/statement.d.ts +55 -0
  51. package/dist/types/statement.d.ts.map +1 -0
  52. package/dist/types/statement.js +12 -0
  53. package/dist/types/statement.js.map +1 -0
  54. package/package.json +64 -0
  55. package/src/parsers/phillip/extract.py +90 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/parsers/phillip/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * PhillipPlugin — 辉立证券 PDF 解析插件
3
+ *
4
+ * 封装 Stage1 提取器和 Stage2 格式化器,实现 IBrokerPlugin 接口。
5
+ * detect() 通过 pdfplumber 快速读取首页文本判断是否为辉立结单。
6
+ */
7
+ import { IStage2Formatter } from '../../types/formatter';
8
+ import { IBrokerPlugin } from '../../types/plugin';
9
+ import { IStage1Extractor } from '../../types/raw';
10
+ export declare class PhillipPlugin implements IBrokerPlugin {
11
+ readonly name = "phillip";
12
+ readonly displayName = "Phillip Securities";
13
+ readonly supportedFileTypes: string[];
14
+ /**
15
+ * 检测 PDF 是否为辉立证券结单
16
+ * 使用 pdfplumber 快速提取首页文本,搜索辉立特征关键词
17
+ * @returns 0.9 = 匹配,0 = 不匹配
18
+ */
19
+ detect(filePath: string): Promise<number>;
20
+ /** 创建 Stage1 pdfplumber 提取器 */
21
+ createExtractor(): IStage1Extractor;
22
+ /** 创建 Stage2 规则格式化器 */
23
+ createFormatter(config?: Record<string, unknown>): IStage2Formatter;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parsers/phillip/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKnD,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,kBAAkB,WAAW;IAEtC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BzC,+BAA+B;IAC/B,eAAe,IAAI,gBAAgB;IAInC,uBAAuB;IACvB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;CAGpE"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * PhillipPlugin — 辉立证券 PDF 解析插件
4
+ *
5
+ * 封装 Stage1 提取器和 Stage2 格式化器,实现 IBrokerPlugin 接口。
6
+ * detect() 通过 pdfplumber 快速读取首页文本判断是否为辉立结单。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PhillipPlugin = void 0;
10
+ const child_process_1 = require("child_process");
11
+ const extractor_1 = require("./extractor");
12
+ const formatter_1 = require("./formatter");
13
+ class PhillipPlugin {
14
+ constructor() {
15
+ this.name = 'phillip';
16
+ this.displayName = 'Phillip Securities';
17
+ this.supportedFileTypes = ['pdf'];
18
+ }
19
+ /**
20
+ * 检测 PDF 是否为辉立证券结单
21
+ * 使用 pdfplumber 快速提取首页文本,搜索辉立特征关键词
22
+ * @returns 0.9 = 匹配,0 = 不匹配
23
+ */
24
+ detect(filePath) {
25
+ return new Promise((resolve) => {
26
+ // 内联 Python 脚本:提取首页文本
27
+ const script = [
28
+ 'import pdfplumber,sys',
29
+ 'try:',
30
+ ' with pdfplumber.open(sys.argv[1]) as pdf:',
31
+ " print(pdf.pages[0].extract_text() or '')",
32
+ 'except:',
33
+ " print('')",
34
+ ].join('\n');
35
+ const proc = (0, child_process_1.spawn)('python3', ['-c', script, filePath]);
36
+ let output = '';
37
+ proc.stdout.on('data', (chunk) => {
38
+ output += chunk.toString();
39
+ });
40
+ proc.on('close', () => {
41
+ const text = output.toUpperCase();
42
+ // 同时检查英文、简体中文(辉立)和繁体中文(輝立)
43
+ const found = text.includes('PHILLIP SECURITIES') || text.includes('辉立') || text.includes('輝立');
44
+ resolve(found ? 0.9 : 0);
45
+ });
46
+ proc.on('error', () => resolve(0));
47
+ });
48
+ }
49
+ /** 创建 Stage1 pdfplumber 提取器 */
50
+ createExtractor() {
51
+ return new extractor_1.PhillipPdfplumberExtractor();
52
+ }
53
+ /** 创建 Stage2 规则格式化器 */
54
+ createFormatter(config) {
55
+ return new formatter_1.PhillipRuleFormatter(config);
56
+ }
57
+ }
58
+ exports.PhillipPlugin = PhillipPlugin;
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/phillip/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iDAAsC;AAMtC,2CAAyD;AACzD,2CAAmD;AAEnD,MAAa,aAAa;IAA1B;QACW,SAAI,GAAG,SAAS,CAAC;QACjB,gBAAW,GAAG,oBAAoB,CAAC;QACnC,uBAAkB,GAAG,CAAC,KAAK,CAAC,CAAC;IA+CxC,CAAC;IA7CC;;;;OAIG;IACH,MAAM,CAAC,QAAgB;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,sBAAsB;YACtB,MAAM,MAAM,GAAG;gBACb,uBAAuB;gBACvB,MAAM;gBACN,6CAA6C;gBAC7C,8CAA8C;gBAC9C,SAAS;gBACT,aAAa;aACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxD,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACvC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAClC,2BAA2B;gBAC3B,MAAM,KAAK,GACT,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,eAAe;QACb,OAAO,IAAI,sCAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,uBAAuB;IACvB,eAAe,CAAC,MAAgC;QAC9C,OAAO,IAAI,gCAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF;AAlDD,sCAkDC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Stage 2 统一接口定义
3
+ *
4
+ * Stage 2 负责将 RawTableData 转换为 StatementData。
5
+ * 可以使用 LLM 方案或规则引擎方案。
6
+ */
7
+ import { StatementData } from './statement';
8
+ import { RawTableData } from './raw';
9
+ /**
10
+ * Stage 2 格式化器配置基类
11
+ */
12
+ export interface Stage2FormatterConfig {
13
+ /** 格式化器类型 */
14
+ type: 'llm' | 'rule';
15
+ }
16
+ /**
17
+ * LLM 格式化器配置
18
+ */
19
+ export interface LlmFormatterConfig extends Stage2FormatterConfig {
20
+ type: 'llm';
21
+ /** DeepSeek Prompt */
22
+ deepseekPrompt: string;
23
+ /** 模型名称 */
24
+ model?: string;
25
+ }
26
+ /**
27
+ * 规则格式化器配置
28
+ */
29
+ export interface RuleFormatterConfig extends Stage2FormatterConfig {
30
+ type: 'rule';
31
+ /** 是否启用跨行合并 */
32
+ enableMerge?: boolean;
33
+ }
34
+ /**
35
+ * Stage 2 格式化器接口
36
+ *
37
+ * 所有 Stage 2 实现都需要实现这个接口
38
+ */
39
+ export interface IStage2Formatter {
40
+ /**
41
+ * 将原始表格数据格式化为结构化数据
42
+ * @param rawData Stage 1 输出的原始数据
43
+ * @returns 结构化的 StatementData
44
+ */
45
+ format(rawData: RawTableData): Promise<StatementData>;
46
+ }
47
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/types/formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMrC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,EAAE,KAAK,CAAC;IACZ,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvD"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Stage 2 统一接口定义
4
+ *
5
+ * Stage 2 负责将 RawTableData 转换为 StatementData。
6
+ * 可以使用 LLM 方案或规则引擎方案。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/types/formatter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,14 @@
1
+ import { IStage1Extractor } from './raw';
2
+ import { IStage2Formatter } from './formatter';
3
+ export interface IBrokerPlugin {
4
+ readonly name: string;
5
+ readonly displayName: string;
6
+ readonly supportedFileTypes: string[];
7
+ /** 检测 PDF 是否属于该券商,返回 0~1 置信度 */
8
+ detect(filePath: string): Promise<number>;
9
+ /** 创建 Stage1 提取器实例 */
10
+ createExtractor(): IStage1Extractor;
11
+ /** 创建 Stage2 格式化器实例 */
12
+ createFormatter(config?: Record<string, unknown>): IStage2Formatter;
13
+ }
14
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IACtC,gCAAgC;IAChC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,sBAAsB;IACtB,eAAe,IAAI,gBAAgB,CAAC;IACpC,uBAAuB;IACvB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;CACrE"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // IBrokerPlugin 接口定义 — 多券商 plugin 框架入口
3
+ // IStage1Extractor / IStage2Formatter 分别在 raw.ts / formatter.ts 中定义
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,oEAAoE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Stage 1 统一输出接口定义
3
+ *
4
+ * 无论使用 OCR 方案还是 pdfplumber 规则方案,
5
+ * Stage 1 的输出都应该符合这个接口。
6
+ *
7
+ * Stage 2 的输入也基于这个接口。
8
+ */
9
+ /**
10
+ * 原始交易行数据
11
+ * 保持表格原始值,不做业务逻辑处理
12
+ */
13
+ export interface RawTransactionRow {
14
+ /** 交易日期 (原始格式,如 DD/MM/YY 或 YYYY-MM-DD) */
15
+ tradeDate: string;
16
+ /** 交收日期 (原始格式) */
17
+ settleDate?: string;
18
+ /** 产品代码 (如 UT、ST 等) */
19
+ product?: string;
20
+ /** 参考号 */
21
+ refNo: string;
22
+ /** 交易类型 (原始值,如 Payment、Receipt 等) */
23
+ transType?: string;
24
+ /** 摘要/备注 (原始文本) */
25
+ particulars: string;
26
+ /** 借方金额 (原始值) */
27
+ debit?: number;
28
+ /** 贷方金额 (原始值) */
29
+ credit?: number;
30
+ /** 来源行号 (用于调试,可选) */
31
+ sourceLines?: number[];
32
+ }
33
+ /**
34
+ * 原始持仓行数据
35
+ */
36
+ export interface RawHoldingRow {
37
+ /** 股票/基金代码 */
38
+ symbol: string;
39
+ /** 名称 */
40
+ name?: string;
41
+ /** 资产类型 (原始值,如 Stock、Fund、Cash 等) */
42
+ assetType?: string;
43
+ /** 数量 */
44
+ quantity?: number;
45
+ /** 市场价格 */
46
+ marketPrice?: number;
47
+ /** 市值 */
48
+ marketValue?: number;
49
+ /** 货币 */
50
+ currency?: string;
51
+ /** 其他原始字段 */
52
+ extras?: Record<string, unknown>;
53
+ }
54
+ /**
55
+ * 原始账户信息
56
+ */
57
+ export interface RawAccountInfo {
58
+ /** 客户编号 */
59
+ accountCode?: string;
60
+ /** 客户名称 */
61
+ clientName?: string;
62
+ /** 账单日期 (原始格式) */
63
+ statementDate?: string;
64
+ /** 其他头部信息 */
65
+ extras?: Record<string, unknown>;
66
+ }
67
+ /**
68
+ * Stage 1 输出的原始表格数据
69
+ *
70
+ * 这是 OCR 和规则引擎共用的输出格式。
71
+ * Stage 2 的输入也基于这个格式。
72
+ */
73
+ export interface RawTableData {
74
+ /** 账户信息 */
75
+ accountInfo: RawAccountInfo;
76
+ /** 原始交易记录 */
77
+ transactions: RawTransactionRow[];
78
+ /** 原始持仓数据 */
79
+ holdings: RawHoldingRow[];
80
+ /** 解析元数据 */
81
+ metadata?: {
82
+ /** 总页数 */
83
+ totalPages?: number;
84
+ /** 解析耗时 (ms) */
85
+ parseTimeMs?: number;
86
+ /** 解析方案 */
87
+ extractor: 'ocr' | 'pdfplumber';
88
+ /** 警告信息 */
89
+ warnings?: string[];
90
+ };
91
+ }
92
+ /**
93
+ * Stage 1 提取器配置基类
94
+ */
95
+ export interface Stage1ExtractorConfig {
96
+ /** 提取器类型 */
97
+ type: 'ocr' | 'pdfplumber';
98
+ }
99
+ /**
100
+ * OCR 提取器配置
101
+ */
102
+ export interface OcrExtractorConfig extends Stage1ExtractorConfig {
103
+ type: 'ocr';
104
+ /** 图片 DPI */
105
+ density: number;
106
+ /** 图片格式 */
107
+ format: 'jpeg' | 'png';
108
+ /** JPEG 质量 */
109
+ quality: number;
110
+ /** Vision Prompt */
111
+ visionPrompt: string;
112
+ /** Vision 模型 */
113
+ visionModel?: string;
114
+ }
115
+ /**
116
+ * pdfplumber 提取器配置
117
+ */
118
+ export interface PdfplumberExtractorConfig extends Stage1ExtractorConfig {
119
+ type: 'pdfplumber';
120
+ /** 列间隔阈值 (字符间隔超过此值视为不同列) */
121
+ gapThreshold?: number;
122
+ }
123
+ /**
124
+ * Stage 1 提取器接口
125
+ *
126
+ * 所有 Stage 1 实现都需要实现这个接口
127
+ */
128
+ export interface IStage1Extractor {
129
+ /**
130
+ * 从 PDF 提取原始表格数据
131
+ * @param pdfPath PDF 文件路径
132
+ * @returns 原始表格数据
133
+ */
134
+ extract(pdfPath: string): Promise<RawTableData>;
135
+ }
136
+ //# sourceMappingURL=raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Stage 1 统一输出接口定义
4
+ *
5
+ * 无论使用 OCR 方案还是 pdfplumber 规则方案,
6
+ * Stage 1 的输出都应该符合这个接口。
7
+ *
8
+ * Stage 2 的输入也基于这个接口。
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ //# sourceMappingURL=raw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.js","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * broker-parser 核心类型定义
3
+ *
4
+ * 定义结单解析输出的结构化数据类型,包括:
5
+ * - TradeData: 交易记录
6
+ * - IPOData: 新股申购记录
7
+ * - SnapshotData: 持仓快照
8
+ * - StatementData: 完整结单数据
9
+ */
10
+ export interface TradeData {
11
+ transactionDate: string;
12
+ settlementDate?: string;
13
+ refNo?: string;
14
+ stockCode: string;
15
+ stockName: string;
16
+ transactionType: 'BUY' | 'SELL' | 'IPO_INTEREST' | 'FEE' | 'DIVIDEND' | 'OTHER' | 'DEPOSIT' | 'WITHDRAWAL' | 'IPO_FEE';
17
+ quantity?: number;
18
+ price?: number;
19
+ amount: number;
20
+ fee?: number;
21
+ currency: string;
22
+ description?: string;
23
+ }
24
+ export interface IPOData {
25
+ transactionDate: string;
26
+ settlementDate?: string;
27
+ stockCode: string;
28
+ stockName: string;
29
+ quantity?: number;
30
+ price?: number;
31
+ amount: number;
32
+ fee?: number;
33
+ currency: string;
34
+ description?: string;
35
+ type: 'apply' | 'allot';
36
+ }
37
+ export interface SnapshotData {
38
+ symbol: string;
39
+ assetCategory: 'Cash' | 'Stock' | 'Fund' | 'Bond' | 'Other';
40
+ quantity: number;
41
+ marketPrice?: number;
42
+ marketValue?: number;
43
+ currency: string;
44
+ description?: string;
45
+ }
46
+ export interface StatementData {
47
+ accountCode: string;
48
+ clientName: string;
49
+ period?: string;
50
+ statementDate?: string;
51
+ transactions: TradeData[];
52
+ ipo: IPOData[];
53
+ snapshots: SnapshotData[];
54
+ }
55
+ //# sourceMappingURL=statement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../src/types/statement.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EACX,KAAK,GACL,MAAM,GACN,cAAc,GACd,KAAK,GACL,UAAU,GACV,OAAO,GACP,SAAS,GACT,YAAY,GACZ,SAAS,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * broker-parser 核心类型定义
4
+ *
5
+ * 定义结单解析输出的结构化数据类型,包括:
6
+ * - TradeData: 交易记录
7
+ * - IPOData: 新股申购记录
8
+ * - SnapshotData: 持仓快照
9
+ * - StatementData: 完整结单数据
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=statement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../src/types/statement.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@tcos/broker-parser",
3
+ "version": "0.1.0",
4
+ "description": "Parse brokerage PDF statements into structured JSON",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "tcos-parse": "./dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist/",
12
+ "src/parsers/phillip/extract.py",
13
+ ".claude/"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc && mkdir -p dist/parsers/phillip && cp src/parsers/phillip/extract.py dist/parsers/phillip/extract.py",
17
+ "dev": "tsc --watch",
18
+ "lint": "ESLINT_USE_FLAT_CONFIG=false eslint src --ext .ts",
19
+ "lint:fix": "ESLINT_USE_FLAT_CONFIG=false eslint src --ext .ts --fix",
20
+ "format": "prettier --write .",
21
+ "format:check": "prettier --check .",
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "jest --testPathPattern='tests/(stage2|cli)\\.test\\.ts'",
24
+ "test:local": "jest",
25
+ "test:ci": "jest --testPathPattern='tests/(stage2|cli)\\.test\\.ts'"
26
+ },
27
+ "keywords": [
28
+ "brokerage",
29
+ "statement",
30
+ "parser",
31
+ "pdf",
32
+ "cli"
33
+ ],
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "commander": "^11.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/jest": "^29.0.0",
40
+ "@types/node": "^20.0.0",
41
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
42
+ "@typescript-eslint/parser": "^6.0.0",
43
+ "eslint": "^8.0.0",
44
+ "eslint-plugin-import": "^2.0.0",
45
+ "jest": "^29.0.0",
46
+ "lint-staged": "^15.0.0",
47
+ "prettier": "^3.0.0",
48
+ "ts-jest": "^29.0.0",
49
+ "typescript": "^5.0.0"
50
+ },
51
+ "lint-staged": {
52
+ "*.ts": [
53
+ "eslint --fix",
54
+ "prettier --write"
55
+ ],
56
+ "*.{js,json,md,yml,yaml}": [
57
+ "prettier --write"
58
+ ]
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/biggersun/broker-parser"
63
+ }
64
+ }
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ pdfplumber 字符提取脚本
4
+
5
+ 供 TypeScript 规则引擎调用,输出 JSON 格式的字符数据。
6
+
7
+ 使用方法:
8
+ python3 scripts/poc/pdfplumber_extract.py <pdf_path> --json
9
+ """
10
+
11
+ import pdfplumber
12
+ import json
13
+ import sys
14
+ import os
15
+ from typing import List, Dict, Any
16
+
17
+
18
+ def extract_chars_from_pdf(pdf_path: str) -> Dict[str, Any]:
19
+ """
20
+ 从 PDF 提取所有页面的字符及其坐标
21
+
22
+ 返回结构:
23
+ {
24
+ "file": "文件名",
25
+ "totalPages": 页数,
26
+ "pages": [
27
+ {
28
+ "pageNum": 1,
29
+ "chars": [
30
+ {"text": "A", "x0": 10.0, "x1": 15.0, "top": 20.0, "bottom": 30.0},
31
+ ...
32
+ ],
33
+ "text": "完整文本"
34
+ }
35
+ ]
36
+ }
37
+ """
38
+ result = {
39
+ "file": os.path.basename(pdf_path),
40
+ "totalPages": 0,
41
+ "pages": []
42
+ }
43
+
44
+ with pdfplumber.open(pdf_path) as pdf:
45
+ result["totalPages"] = len(pdf.pages)
46
+
47
+ for i, page in enumerate(pdf.pages):
48
+ page_data = {
49
+ "pageNum": i + 1,
50
+ "chars": [],
51
+ "text": ""
52
+ }
53
+
54
+ # 提取字符及坐标
55
+ for char in page.chars:
56
+ page_data["chars"].append({
57
+ "text": char["text"],
58
+ "x0": round(char["x0"], 2),
59
+ "x1": round(char["x1"], 2),
60
+ "top": round(char["top"], 2),
61
+ "bottom": round(char["bottom"], 2)
62
+ })
63
+
64
+ # 提取完整文本
65
+ page_data["text"] = page.extract_text() or ""
66
+
67
+ result["pages"].append(page_data)
68
+
69
+ return result
70
+
71
+
72
+ def main():
73
+ if len(sys.argv) < 2:
74
+ print("Usage: python3 pdfplumber_extract.py <pdf_path> [--json]", file=sys.stderr)
75
+ sys.exit(1)
76
+
77
+ pdf_path = sys.argv[1]
78
+
79
+ if not os.path.exists(pdf_path):
80
+ print(f"Error: File not found: {pdf_path}", file=sys.stderr)
81
+ sys.exit(1)
82
+
83
+ result = extract_chars_from_pdf(pdf_path)
84
+
85
+ # 始终输出 JSON (供 TypeScript 调用)
86
+ print(json.dumps(result, ensure_ascii=False))
87
+
88
+
89
+ if __name__ == "__main__":
90
+ main()