@kc-one/smart-fill-sdk 0.0.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 +204 -0
- package/dist/examples/vanilla/main.d.ts +2 -0
- package/dist/examples/vanilla/main.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +1492 -0
- package/dist/index.umd.cjs +92 -0
- package/dist/src/adapters/native.d.ts +3 -0
- package/dist/src/adapters/native.d.ts.map +1 -0
- package/dist/src/client/gateway-client.d.ts +52 -0
- package/dist/src/client/gateway-client.d.ts.map +1 -0
- package/dist/src/config/defaults.d.ts +7 -0
- package/dist/src/config/defaults.d.ts.map +1 -0
- package/dist/src/core/errors.d.ts +13 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/core/instance-manager.d.ts +24 -0
- package/dist/src/core/instance-manager.d.ts.map +1 -0
- package/dist/src/core/smart-fill-instance.d.ts +105 -0
- package/dist/src/core/smart-fill-instance.d.ts.map +1 -0
- package/dist/src/core/smart-fill.d.ts +39 -0
- package/dist/src/core/smart-fill.d.ts.map +1 -0
- package/dist/src/events/event-bus.d.ts +12 -0
- package/dist/src/events/event-bus.d.ts.map +1 -0
- package/dist/src/filler/dom-filler.d.ts +32 -0
- package/dist/src/filler/dom-filler.d.ts.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/rules/local-rules.d.ts +9 -0
- package/dist/src/rules/local-rules.d.ts.map +1 -0
- package/dist/src/scanner/dom-scanner.d.ts +34 -0
- package/dist/src/scanner/dom-scanner.d.ts.map +1 -0
- package/dist/src/scanner/fingerprint.d.ts +22 -0
- package/dist/src/scanner/fingerprint.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +255 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/ui/panel.d.ts +78 -0
- package/dist/src/ui/panel.d.ts.map +1 -0
- package/dist/style.css +1 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Smart Fill SDK
|
|
2
|
+
|
|
3
|
+
页面内智能录入 SDK,用于在业务页面嵌入「文本 / 图片识别 → 自动表单回填 → 结果反馈」能力。
|
|
4
|
+
|
|
5
|
+
## 快速开始
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install
|
|
9
|
+
npm run dev
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
打开 Vite 示例页后,点击右上角「智能录入」悬浮按钮。
|
|
13
|
+
|
|
14
|
+
## 接入示例
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { SmartFill } from '@kc-si/smart-fill-sdk'
|
|
18
|
+
import '@kc-si/smart-fill-sdk/style.css'
|
|
19
|
+
|
|
20
|
+
await SmartFill.setup({ apiKey: 'seKey_xxxxxxxxxxxxx' })
|
|
21
|
+
// 网关地址在 src/config/defaults.ts 的 DEFAULT_BASE_URL 中配置
|
|
22
|
+
|
|
23
|
+
const smartFill = SmartFill.create({
|
|
24
|
+
formCode: 'apply-form',
|
|
25
|
+
strictFormConfig: true
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
smartFill.registerFields([
|
|
29
|
+
{
|
|
30
|
+
fieldId: 'customerName',
|
|
31
|
+
label: '客户姓名',
|
|
32
|
+
type: 'text',
|
|
33
|
+
element: '[data-smart-fill-key="customerName"]'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
fieldId: 'legalBankMobile',
|
|
37
|
+
label: '法人手机号',
|
|
38
|
+
type: 'text',
|
|
39
|
+
localRuleMode: 'off', // 该字段不走本地规则,仅走后端识别
|
|
40
|
+
element: '[data-smart-fill-key="legalBankMobile"]'
|
|
41
|
+
}
|
|
42
|
+
])
|
|
43
|
+
|
|
44
|
+
smartFill.mountFloatingButton()
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 核心流程
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
SmartFill.setup({ apiKey })
|
|
51
|
+
→ 校验 apiKey / 创建会话 / 获取 accessToken
|
|
52
|
+
SmartFill.create({ formCode })
|
|
53
|
+
→ 创建页面实例,绑定网关客户端
|
|
54
|
+
smartFill.registerFields([...]) // 可选:L3 高精度字段注册
|
|
55
|
+
smartFill.mountFloatingButton() // 挂载悬浮入口 + 弹框 UI
|
|
56
|
+
smartFill.open()
|
|
57
|
+
→ rescan() 扫描字段,生成 scanToken
|
|
58
|
+
用户输入文本 / 上传图片,点击「智能识别回填」
|
|
59
|
+
→ 本地规则预识别(可开关)
|
|
60
|
+
→ 后端识别网关补全
|
|
61
|
+
→ 合并结果,自动回填高置信字段
|
|
62
|
+
→ 返回 applied / skipped / warnings / traceId
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 当前实现范围
|
|
66
|
+
|
|
67
|
+
| 模块 | 能力 |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `SmartFill.setup` | apiKey 校验、会话初始化(网关地址见 `config/defaults.ts`) |
|
|
70
|
+
| `SmartFill.create` | 实例生命周期、单活 UI 管理、SSR mock 实例 |
|
|
71
|
+
| `registerFields / rescan` | 优先注册字段,兜底 DOM 扫描 |
|
|
72
|
+
| `LocalRuleEngine` | 手机号、身份证、邮箱、银行卡、金额、日期、角色化键值对识别 |
|
|
73
|
+
| `FieldSchema.localRuleMode` | 字段级本地规则策略:`inherit / off / only` |
|
|
74
|
+
| `SmartFillPanel` | Shadow DOM 面板、本地优先识别总开关、自动回填进度和结果反馈 |
|
|
75
|
+
| `DomFiller` | 原生控件回填、scanToken / fingerprint 校验、浅蓝高亮反馈 |
|
|
76
|
+
| `GatewayClient` | `/sdk/session`、`/sdk/forms/:code`、`/sdk/recognize` 网关调用 |
|
|
77
|
+
|
|
78
|
+
## 目录结构
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
smart-fill-sdk/
|
|
82
|
+
├─ package.json # 包配置,exports 指向 dist/
|
|
83
|
+
├─ vite.config.ts # Vite 库模式构建 + d.ts 生成
|
|
84
|
+
├─ tsconfig.json # TypeScript 编译配置
|
|
85
|
+
├─ README.md # 本文件
|
|
86
|
+
│
|
|
87
|
+
├─ examples/ # 接入示例
|
|
88
|
+
│ └─ vanilla/
|
|
89
|
+
│ ├─ index.html # 原生表单 demo 页面
|
|
90
|
+
│ └─ main.ts # setup → create → registerFields → mountFloatingButton
|
|
91
|
+
│
|
|
92
|
+
└─ src/ # SDK 源码
|
|
93
|
+
├─ index.ts # 包入口,统一导出对外 API 与类型
|
|
94
|
+
├─ style.css # 回填成功高亮样式(浅蓝背景)
|
|
95
|
+
├─ vite-env.d.ts # CSS 模块类型声明
|
|
96
|
+
│
|
|
97
|
+
├─ core/ # 生命周期与实例编排
|
|
98
|
+
│ ├─ smart-fill.ts # 全局 setup / create 入口,管理会话状态
|
|
99
|
+
│ ├─ smart-fill-instance.ts # 页面实例:扫描、识别、自动回填、事件分发
|
|
100
|
+
│ ├─ instance-manager.ts # 多实例 UI 互斥,同一时刻仅一个面板激活
|
|
101
|
+
│ └─ errors.ts # 统一错误对象、traceId 生成
|
|
102
|
+
│
|
|
103
|
+
├─ scanner/ # 字段扫描与稳定标识
|
|
104
|
+
│ ├─ dom-scanner.ts # DOM 字段扫描、弹窗容器定位、scanToken 生成
|
|
105
|
+
│ └─ fingerprint.ts # 字段 fingerprint 生成,过滤动态 ID
|
|
106
|
+
│
|
|
107
|
+
├─ rules/ # 浏览器端本地规则
|
|
108
|
+
│ └─ local-rules.ts # 正则 + 键值对 + 角色语义识别引擎
|
|
109
|
+
│
|
|
110
|
+
├─ config/ # SDK 内置配置
|
|
111
|
+
│ └─ defaults.ts # DEFAULT_BASE_URL 网关根地址(前期写死)
|
|
112
|
+
│
|
|
113
|
+
├─ client/ # 后端网关客户端
|
|
114
|
+
│ └─ gateway-client.ts # session / formConfig / recognize 请求封装
|
|
115
|
+
│
|
|
116
|
+
├─ filler/ # 表单回填
|
|
117
|
+
│ └─ dom-filler.ts # DOM 写入、适配器分发、scanToken 校验、高亮
|
|
118
|
+
│
|
|
119
|
+
├─ ui/ # 页面内 UI
|
|
120
|
+
│ └─ panel.ts # Shadow DOM 弹框:输入、开关、识别、结果展示
|
|
121
|
+
│
|
|
122
|
+
├─ events/ # 事件系统
|
|
123
|
+
│ └─ event-bus.ts # 轻量 pub/sub,驱动 ready / recognized / applied 等事件
|
|
124
|
+
│
|
|
125
|
+
├─ adapters/ # 组件库回填适配器
|
|
126
|
+
│ └─ native.ts # 原生 input / textarea / select 适配器
|
|
127
|
+
│
|
|
128
|
+
└─ types/ # 对外 TypeScript 类型
|
|
129
|
+
└─ index.ts # FieldSchema、RecognizeResult、SmartFillEventMap 等
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 模块职责说明
|
|
133
|
+
|
|
134
|
+
#### `core/` — 生命周期
|
|
135
|
+
|
|
136
|
+
- **`smart-fill.ts`**:SDK 全局单例入口。`setup()` 负责 apiKey 校验和会话初始化;`create()` 在 ready 后创建页面实例。
|
|
137
|
+
- **`config/defaults.ts`**:前期写死的网关 `DEFAULT_BASE_URL`,切换环境时改此文件即可。
|
|
138
|
+
- **`smart-fill-instance.ts`**:单页面实例的核心编排器。串联扫描 → 本地规则 → 网关识别 → 自动回填,并通过 EventBus 向外派发事件。
|
|
139
|
+
- **`instance-manager.ts`**:保证同一时刻只有一个实例的 UI 面板处于打开状态,避免多实例互相遮挡。
|
|
140
|
+
- **`errors.ts`**:统一错误码封装(`SmartFillException`)和 `traceId` 生成,供审计和排障使用。
|
|
141
|
+
|
|
142
|
+
#### `scanner/` — 字段扫描
|
|
143
|
+
|
|
144
|
+
- **`dom-scanner.ts`**:扫描页面可见输入控件,支持注册字段优先、平台容器、最上层弹窗/抽屉定位。每次扫描生成唯一 `scanToken`。
|
|
145
|
+
- **`fingerprint.ts`**:为每个字段生成稳定指纹,过滤 React/AntD 等框架的动态 ID,用于回填前校验字段是否变化。
|
|
146
|
+
|
|
147
|
+
#### `rules/` — 本地规则
|
|
148
|
+
|
|
149
|
+
- **`local-rules.ts`**:浏览器端优先识别引擎。支持正则提取(手机号、身份证等)、键值对解析(`姓名:张三`)、角色语义(法人/紧急联系人/配偶)。匹配时优先角色字段,再退化到通用字段。
|
|
150
|
+
|
|
151
|
+
#### `client/` — 网关
|
|
152
|
+
|
|
153
|
+
- **`gateway-client.ts`**:封装后端 `/sdk/session`、`/sdk/forms/:code`、`/sdk/recognize` 三个接口,统一请求 `DEFAULT_BASE_URL`。
|
|
154
|
+
|
|
155
|
+
#### `filler/` — 回填
|
|
156
|
+
|
|
157
|
+
- **`dom-filler.ts`**:执行字段写入。校验 `scanToken` 和 `fingerprint` 防止误填;支持注册字段 `setValue`、适配器模式和原生 DOM 事件兜底;回填成功后添加浅蓝背景高亮,用户交互后自动消失。
|
|
158
|
+
|
|
159
|
+
#### `ui/` — 界面
|
|
160
|
+
|
|
161
|
+
- **`panel.ts`**:Shadow DOM 隔离的页面内弹框。包含文本输入、图片上传、本地优先识别开关、清空/识别按钮、识别结果列表和状态反馈。支持右上角悬浮 + 拖拽。
|
|
162
|
+
|
|
163
|
+
#### `events/` — 事件
|
|
164
|
+
|
|
165
|
+
- **`event-bus.ts`**:实例级和全局级事件总线,事件包括 `ready`、`scanCompleted`、`recognizing`、`recognized`、`applying`、`applied`、`error`。
|
|
166
|
+
|
|
167
|
+
#### `adapters/` — 适配器
|
|
168
|
+
|
|
169
|
+
- **`native.ts`**:原生 HTML 表单控件(input / textarea / select)的回填适配器,通过 dispatch `input/change` 事件触发框架响应。
|
|
170
|
+
|
|
171
|
+
#### `types/` — 类型
|
|
172
|
+
|
|
173
|
+
- **`index.ts`**:全部对外 TypeScript 类型定义,包括字段模型、识别结果、回填结果、事件映射、适配器接口等。
|
|
174
|
+
|
|
175
|
+
## 本地规则开关
|
|
176
|
+
|
|
177
|
+
| 层级 | 配置 | 说明 |
|
|
178
|
+
| --- | --- | --- |
|
|
179
|
+
| 弹框总开关 | UI「启用本地优先识别」 | 一键开启/关闭本地规则,默认开启 |
|
|
180
|
+
| 字段级 | `FieldSchema.localRuleMode` | `inherit` 跟随总开关;`off` 跳过本地规则;`only` 仅本地规则、不走后端 |
|
|
181
|
+
|
|
182
|
+
## 发布到 npm 公共仓库
|
|
183
|
+
|
|
184
|
+
包归属 [@kc-si](https://www.npmjs.com/settings/kc-si/packages) 组织,包名为 `@kc-si/smart-fill-sdk`。
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm login # 使用已加入 kc-si 组织且开启 2FA 的账号
|
|
188
|
+
npm run build
|
|
189
|
+
npm publish --access public # publishConfig 已配置 public + registry.npmjs.org
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
安装:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
npm install @kc-si/smart-fill-sdk
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## 构建
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm run typecheck # 类型检查
|
|
202
|
+
npm run build # 构建 dist/(ESM + UMD + d.ts)
|
|
203
|
+
npm run preview # 预览构建产物
|
|
204
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../examples/vanilla/main.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED