@deepstorm/cli 0.10.2 → 0.11.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.
Files changed (124) hide show
  1. package/README.md +8 -8
  2. package/dist/build-registry.js +11 -5
  3. package/dist/cli.js +1256 -634
  4. package/dist/mcp/code-hosting/github.json +14 -1
  5. package/dist/mcp/docs-reference/context7.json +1 -10
  6. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-read/SKILL.md +8 -5
  7. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-write/SKILL.md +10 -8
  8. package/dist/mcp-skills/deepstorm-mcp-figma-read/SKILL.md +21 -20
  9. package/dist/mcp-skills/deepstorm-mcp-github-read/SKILL.md +17 -17
  10. package/dist/mcp-skills/deepstorm-mcp-github-write/SKILL.md +20 -20
  11. package/dist/mcp-skills/deepstorm-mcp-jira-read/SKILL.md +8 -8
  12. package/dist/mcp-skills/deepstorm-mcp-jira-write/SKILL.md +13 -12
  13. package/dist/mcp-skills/deepstorm-mcp-playwright-read/SKILL.md +10 -10
  14. package/dist/registry.json +10 -0
  15. package/dist/skills/atoll-ops/SKILL.md +4 -0
  16. package/dist/skills/reef-commit/SKILL.md +9 -5
  17. package/dist/skills/reef-commit/scripts/branch-check.mjs +5 -11
  18. package/dist/skills/reef-commit/scripts/check-openspec-status.mjs +6 -12
  19. package/dist/skills/reef-commit/scripts/collect-git-context.mjs +13 -11
  20. package/dist/skills/reef-gen-backend/variants/java/steps.md +7 -7
  21. package/dist/skills/reef-gen-backend/variants/nodejs/steps.md +7 -7
  22. package/dist/skills/reef-gen-backend/variants/python/steps.md +7 -7
  23. package/dist/skills/reef-gen-frontend/variants/angular/steps.md +5 -5
  24. package/dist/skills/reef-gen-frontend/variants/react/steps.md +6 -6
  25. package/dist/skills/reef-gen-frontend/variants/vue/steps.md +6 -6
  26. package/dist/skills/reef-harden/EXAMPLES.md +12 -10
  27. package/dist/skills/reef-harden/SKILL.md +6 -0
  28. package/dist/skills/reef-harden/scripts/find-change-dir.mjs +13 -13
  29. package/dist/skills/reef-pr/SKILL.md +7 -0
  30. package/dist/skills/reef-pr/scripts/create-pr.mjs +31 -29
  31. package/dist/skills/reef-scope/SKILL.md +6 -6
  32. package/dist/skills/reef-start/references/jira-start-subagent.md +7 -7
  33. package/dist/skills/reef-start/references/risk-routing-card.md +28 -25
  34. package/dist/skills/reef-start/references/stage-4-implementation.md +33 -21
  35. package/dist/skills/reef-start/references/superpowers-gate.md +9 -9
  36. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/structured-output.md +2 -2
  37. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/quick-reference.md +11 -0
  38. package/dist/skills/reef-style-backend/fragments/java/api-spec/jackson-polymorphism.md +36 -40
  39. package/dist/skills/reef-style-backend/fragments/java/api-spec/quick-reference.md +11 -10
  40. package/dist/skills/reef-style-backend/fragments/java/db-migration/liquibase/examples/database-migration.md +7 -7
  41. package/dist/skills/reef-style-backend/fragments/java/dependency-management/quick-reference.md +24 -21
  42. package/dist/skills/reef-style-backend/fragments/java/exception-handling/examples/error-code-enum.md +7 -7
  43. package/dist/skills/reef-style-backend/fragments/java/exception-handling/quick-reference.md +10 -8
  44. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/dto-mapper.md +2 -2
  45. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/service-entity.md +5 -5
  46. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/testing.md +1 -0
  47. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/quick-reference.md +12 -12
  48. package/dist/skills/reef-style-backend/fragments/java/orm/hibernate/quick-reference.md +13 -12
  49. package/dist/skills/reef-style-backend/fragments/java/security-redlines/quick-reference.md +11 -9
  50. package/dist/skills/reef-style-backend/fragments/java/test/data-jpa-test/quick-reference.md +7 -7
  51. package/dist/skills/reef-style-backend/fragments/java/test/junit5/quick-reference.md +6 -6
  52. package/dist/skills/reef-style-backend/fragments/java/test/spring-mvc-test/quick-reference.md +8 -8
  53. package/dist/skills/reef-style-backend/fragments/java/test/spring-service-test/quick-reference.md +8 -7
  54. package/dist/skills/reef-style-backend/fragments/nodejs/eslint-config.json +1 -4
  55. package/dist/skills/reef-style-backend/fragments/nodejs/nestjs-structure.md +9 -9
  56. package/dist/skills/reef-style-backend/fragments/python/alembic-migration/quick-reference.md +2 -1
  57. package/dist/skills/reef-style-backend/fragments/python/api-spec/quick-reference.md +10 -10
  58. package/dist/skills/reef-style-backend/fragments/python/dependency-management/quick-reference.md +24 -22
  59. package/dist/skills/reef-style-backend/fragments/python/exception-handling/quick-reference.md +10 -9
  60. package/dist/skills/reef-style-backend/fragments/python/fastapi-quick-reference/quick-reference.md +3 -0
  61. package/dist/skills/reef-style-backend/fragments/python/langchain/quick-reference.md +10 -7
  62. package/dist/skills/reef-style-backend/fragments/python/pytest-testing/quick-reference.md +2 -0
  63. package/dist/skills/reef-style-backend/fragments/python/ruff-mypy-toolchain/quick-reference.md +2 -0
  64. package/dist/skills/reef-style-backend/fragments/python/security-redlines/quick-reference.md +11 -9
  65. package/dist/skills/reef-style-backend/fragments/python/sqlalchemy-orm/quick-reference.md +3 -0
  66. package/dist/skills/reef-style-backend/variants/java/examples/code-wrapping.md +3 -4
  67. package/dist/skills/reef-style-backend/variants/java/quick-reference.md +31 -29
  68. package/dist/skills/reef-style-backend/variants/nodejs/examples/module-example.md +2 -8
  69. package/dist/skills/reef-style-backend/variants/nodejs/quick-reference.md +35 -36
  70. package/dist/skills/reef-style-backend/variants/python/quick-reference.md +32 -31
  71. package/dist/skills/reef-style-frontend/fragments/css/tailwind/quick-reference.md +9 -7
  72. package/dist/skills/reef-style-frontend/fragments/test/vitest/examples/testing.md +9 -4
  73. package/dist/skills/reef-style-frontend/fragments/test/vitest/quick-reference.md +4 -4
  74. package/dist/skills/reef-style-frontend/fragments/test/vitest-react/examples/testing.md +135 -140
  75. package/dist/skills/reef-style-frontend/fragments/test/vitest-react/quick-reference.md +32 -32
  76. package/dist/skills/reef-style-frontend/fragments/test/vitest-vue/examples/testing.md +161 -162
  77. package/dist/skills/reef-style-frontend/fragments/test/vitest-vue/quick-reference.md +42 -42
  78. package/dist/skills/reef-style-frontend/fragments/ts-config/strict/quick-reference.md +16 -10
  79. package/dist/skills/reef-style-frontend/fragments/ui-lib/antd/examples/ui-components.md +72 -87
  80. package/dist/skills/reef-style-frontend/fragments/ui-lib/antd/quick-reference.md +14 -10
  81. package/dist/skills/reef-style-frontend/fragments/ui-lib/antd-vue/examples/ui-components.md +93 -111
  82. package/dist/skills/reef-style-frontend/fragments/ui-lib/antd-vue/quick-reference.md +29 -33
  83. package/dist/skills/reef-style-frontend/fragments/ui-lib/primeng/examples/ui-components.md +14 -23
  84. package/dist/skills/reef-style-frontend/variants/angular/examples/code-wrapping.md +15 -17
  85. package/dist/skills/reef-style-frontend/variants/angular/examples/component-types-pipes.md +22 -5
  86. package/dist/skills/reef-style-frontend/variants/angular/examples/entity-types.md +52 -22
  87. package/dist/skills/reef-style-frontend/variants/angular/examples/forms-layer.md +17 -20
  88. package/dist/skills/reef-style-frontend/variants/angular/examples/service-routing.md +8 -11
  89. package/dist/skills/reef-style-frontend/variants/angular/quick-reference.md +27 -27
  90. package/dist/skills/reef-style-frontend/variants/react/examples/code-wrapping.md +14 -27
  91. package/dist/skills/reef-style-frontend/variants/react/examples/component-types-pipes.md +45 -52
  92. package/dist/skills/reef-style-frontend/variants/react/examples/entity-types.md +44 -44
  93. package/dist/skills/reef-style-frontend/variants/react/examples/forms-layer.md +56 -85
  94. package/dist/skills/reef-style-frontend/variants/react/examples/service-routing.md +114 -88
  95. package/dist/skills/reef-style-frontend/variants/react/quick-reference.md +48 -42
  96. package/dist/skills/reef-style-frontend/variants/vue/examples/code-wrapping.md +24 -43
  97. package/dist/skills/reef-style-frontend/variants/vue/examples/component-types-pipes.md +48 -49
  98. package/dist/skills/reef-style-frontend/variants/vue/examples/entity-types.md +45 -45
  99. package/dist/skills/reef-style-frontend/variants/vue/examples/forms-layer.md +64 -68
  100. package/dist/skills/reef-style-frontend/variants/vue/examples/service-routing.md +85 -84
  101. package/dist/skills/reef-style-frontend/variants/vue/quick-reference.md +46 -51
  102. package/dist/skills/reef-testcase/SKILL.md +19 -19
  103. package/dist/skills/reef-testcase/references/coverage-dimensions.md +8 -0
  104. package/dist/skills/reef-testcase/references/test-case-template.md +16 -16
  105. package/dist/skills/sweep-explore/SKILL.md +824 -0
  106. package/dist/skills/sweep-explore/references/explore-flow-template.md +61 -0
  107. package/dist/skills/sweep-init/SKILL.md +4 -0
  108. package/dist/skills/sweep-init/scripts/flow-selector.mjs +6 -11
  109. package/dist/skills/sweep-init/scripts/init-project.mjs +68 -51
  110. package/dist/skills/sweep-plan/references/test-flow-template.md +12 -6
  111. package/dist/skills/sweep-record/SKILL.md +358 -0
  112. package/dist/skills/sweep-run/SKILL.md +59 -50
  113. package/dist/skills/sweep-run/scripts/env-manager.mjs +4 -5
  114. package/dist/skills/sweep-run/scripts/flow-parser.mjs +7 -6
  115. package/dist/skills/sweep-run/scripts/flow-selector.mjs +4 -15
  116. package/dist/skills/sweep-run/scripts/generate-report.mjs +1 -2
  117. package/dist/skills/sweep-run/scripts/mcp-manager.mjs +107 -14
  118. package/dist/skills/sweep-run/scripts/spec-compiler.mjs +19 -9
  119. package/dist/skills/tide-discuss/references/checklists.md +32 -32
  120. package/dist/skills/tide-discuss/references/data-format.md +85 -77
  121. package/dist/skills/tide-discuss/references/prd-template.md +21 -19
  122. package/dist/skills/tide-discuss/references/publish-flow.md +30 -11
  123. package/dist/skills/tide-discuss/references/role-prompts.md +5 -5
  124. package/package.json +5 -3
@@ -5,22 +5,22 @@
5
5
  ```tsx
6
6
  // shared/types/entity.ts
7
7
  export interface ImmutableEntity {
8
- readonly id: string
9
- readonly createdAt: string
10
- readonly updatedAt: string
8
+ readonly id: string;
9
+ readonly createdAt: string;
10
+ readonly updatedAt: string;
11
11
  }
12
12
 
13
13
  export interface Entity extends ImmutableEntity {
14
- version: number
14
+ version: number;
15
15
  }
16
16
 
17
17
  export interface Auditable<T> extends Entity {
18
- createdBy: T
19
- updatedBy: T
18
+ createdBy: T;
19
+ updatedBy: T;
20
20
  }
21
21
 
22
22
  export interface ImmutableAuditable<T> extends ImmutableEntity {
23
- createdBy: T
23
+ createdBy: T;
24
24
  }
25
25
  ```
26
26
 
@@ -29,19 +29,19 @@ export interface ImmutableAuditable<T> extends ImmutableEntity {
29
29
  ```tsx
30
30
  // shared/types/api.ts
31
31
  export interface PageResponse<T> {
32
- content: T[]
33
- totalElements: number
34
- totalPages: number
35
- number: number
36
- size: number
37
- first: boolean
38
- last: boolean
32
+ content: T[];
33
+ totalElements: number;
34
+ totalPages: number;
35
+ number: number;
36
+ size: number;
37
+ first: boolean;
38
+ last: boolean;
39
39
  }
40
40
 
41
41
  export interface ApiError {
42
- code: string
43
- message: string
44
- details?: Record<string, string[]>
42
+ code: string;
43
+ message: string;
44
+ details?: Record<string, string[]>;
45
45
  }
46
46
  ```
47
47
 
@@ -50,12 +50,12 @@ export interface ApiError {
50
50
  ```tsx
51
51
  // shared/types/user.ts
52
52
  export interface User extends Auditable<string> {
53
- username: string
54
- email: string
55
- displayName: string
56
- avatar?: string
57
- role: UserRole
58
- active: boolean
53
+ username: string;
54
+ email: string;
55
+ displayName: string;
56
+ avatar?: string;
57
+ role: UserRole;
58
+ active: boolean;
59
59
  }
60
60
 
61
61
  export enum UserRole {
@@ -65,16 +65,16 @@ export enum UserRole {
65
65
  }
66
66
 
67
67
  export interface CreateUserRequest {
68
- username: string
69
- email: string
70
- displayName: string
71
- role: UserRole
68
+ username: string;
69
+ email: string;
70
+ displayName: string;
71
+ role: UserRole;
72
72
  }
73
73
 
74
74
  export interface UpdateUserRequest {
75
- email?: string
76
- displayName?: string
77
- role?: UserRole
75
+ email?: string;
76
+ displayName?: string;
77
+ role?: UserRole;
78
78
  }
79
79
  ```
80
80
 
@@ -83,9 +83,9 @@ export interface UpdateUserRequest {
83
83
  ```tsx
84
84
  // 通用组件:具名导出 + interface Props
85
85
  export interface UserAvatarProps {
86
- user: Pick<User, 'username' | 'avatar'>
87
- size?: 'sm' | 'md' | 'lg'
88
- onClick?: () => void
86
+ user: Pick<User, 'username' | 'avatar'>;
87
+ size?: 'sm' | 'md' | 'lg';
88
+ onClick?: () => void;
89
89
  }
90
90
 
91
91
  export const UserAvatar: React.FC<UserAvatarProps> = ({ user, size = 'md', onClick }) => {
@@ -97,8 +97,8 @@ export const UserAvatar: React.FC<UserAvatarProps> = ({ user, size = 'md', onCli
97
97
  onClick={onClick}
98
98
  style={{ cursor: onClick ? 'pointer' : 'default' }}
99
99
  />
100
- )
101
- }
100
+ );
101
+ };
102
102
 
103
103
  // 页面组件:默认导出 + Props 从路由参数推断
104
104
  export interface UserListPageProps {
@@ -106,22 +106,22 @@ export interface UserListPageProps {
106
106
  }
107
107
 
108
108
  const UserListPage: React.FC<UserListPageProps> = () => {
109
- const { users, loading } = useUsers()
110
- return <UserTable users={users} loading={loading} />
111
- }
112
- export default UserListPage
109
+ const { users, loading } = useUsers();
110
+ return <UserTable users={users} loading={loading} />;
111
+ };
112
+ export default UserListPage;
113
113
  ```
114
114
 
115
115
  ## Discriminated Union 类型
116
116
 
117
117
  ```tsx
118
118
  // 用于多状态组件
119
- export type NotificationType = 'success' | 'error' | 'warning' | 'info'
119
+ export type NotificationType = 'success' | 'error' | 'warning' | 'info';
120
120
 
121
121
  export interface NotificationConfig {
122
- type: NotificationType
123
- title: string
124
- message: string
125
- duration?: number
122
+ type: NotificationType;
123
+ title: string;
124
+ message: string;
125
+ duration?: number;
126
126
  }
127
127
  ```
@@ -4,37 +4,32 @@
4
4
 
5
5
  ```tsx
6
6
  interface CreateUserFormValues {
7
- username: string
8
- email: string
9
- displayName: string
10
- role: UserRole
7
+ username: string;
8
+ email: string;
9
+ displayName: string;
10
+ role: UserRole;
11
11
  }
12
12
 
13
13
  const CreateUserForm: React.FC = () => {
14
- const [form] = Form.useForm<CreateUserFormValues>()
15
- const [loading, setLoading] = useState(false)
14
+ const [form] = Form.useForm<CreateUserFormValues>();
15
+ const [loading, setLoading] = useState(false);
16
16
 
17
17
  const handleSubmit = async (values: CreateUserFormValues) => {
18
- setLoading(true)
18
+ setLoading(true);
19
19
  try {
20
- await createUser(values)
21
- message.success('用户创建成功')
22
- form.resetFields()
20
+ await createUser(values);
21
+ message.success('用户创建成功');
22
+ form.resetFields();
23
23
  } catch (err) {
24
24
  // Ant Design Form 会自动捕获校验错误
25
- message.error('创建失败,请重试')
25
+ message.error('创建失败,请重试');
26
26
  } finally {
27
- setLoading(false)
27
+ setLoading(false);
28
28
  }
29
- }
29
+ };
30
30
 
31
31
  return (
32
- <Form
33
- form={form}
34
- layout="vertical"
35
- onFinish={handleSubmit}
36
- autoComplete="off"
37
- >
32
+ <Form form={form} layout="vertical" onFinish={handleSubmit} autoComplete="off">
38
33
  <Form.Item
39
34
  name="username"
40
35
  label="用户名"
@@ -57,19 +52,11 @@ const CreateUserForm: React.FC = () => {
57
52
  <Input placeholder="请输入邮箱" />
58
53
  </Form.Item>
59
54
 
60
- <Form.Item
61
- name="displayName"
62
- label="显示名称"
63
- rules={[{ required: true, message: '请输入显示名称' }]}
64
- >
55
+ <Form.Item name="displayName" label="显示名称" rules={[{ required: true, message: '请输入显示名称' }]}>
65
56
  <Input placeholder="请输入显示名称" />
66
57
  </Form.Item>
67
58
 
68
- <Form.Item
69
- name="role"
70
- label="角色"
71
- rules={[{ required: true, message: '请选择角色' }]}
72
- >
59
+ <Form.Item name="role" label="角色" rules={[{ required: true, message: '请选择角色' }]}>
73
60
  <Select placeholder="请选择角色">
74
61
  <Select.Option value="ADMIN">管理员</Select.Option>
75
62
  <Select.Option value="EDITOR">编辑</Select.Option>
@@ -83,21 +70,21 @@ const CreateUserForm: React.FC = () => {
83
70
  </Button>
84
71
  </Form.Item>
85
72
  </Form>
86
- )
87
- }
73
+ );
74
+ };
88
75
  ```
89
76
 
90
77
  ## 编辑表单(初始值)
91
78
 
92
79
  ```tsx
93
80
  interface EditUserFormProps {
94
- user: User
95
- onSuccess: () => void
81
+ user: User;
82
+ onSuccess: () => void;
96
83
  }
97
84
 
98
85
  const EditUserForm: React.FC<EditUserFormProps> = ({ user, onSuccess }) => {
99
- const [form] = Form.useForm()
100
- const [loading, setLoading] = useState(false)
86
+ const [form] = Form.useForm();
87
+ const [loading, setLoading] = useState(false);
101
88
 
102
89
  // 初始值填充
103
90
  useEffect(() => {
@@ -105,52 +92,38 @@ const EditUserForm: React.FC<EditUserFormProps> = ({ user, onSuccess }) => {
105
92
  displayName: user.displayName,
106
93
  email: user.email,
107
94
  role: user.role,
108
- })
109
- }, [user, form])
95
+ });
96
+ }, [user, form]);
110
97
 
111
98
  const handleSubmit = async (values: Partial<CreateUserRequest>) => {
112
- setLoading(true)
99
+ setLoading(true);
113
100
  try {
114
- await updateUser(user.id, values)
115
- message.success('用户信息已更新')
116
- onSuccess()
101
+ await updateUser(user.id, values);
102
+ message.success('用户信息已更新');
103
+ onSuccess();
117
104
  } catch {
118
- message.error('更新失败')
105
+ message.error('更新失败');
119
106
  } finally {
120
- setLoading(false)
107
+ setLoading(false);
121
108
  }
122
- }
109
+ };
123
110
 
124
111
  return (
125
- <Form
126
- form={form}
127
- layout="vertical"
128
- onFinish={handleSubmit}
129
- >
112
+ <Form form={form} layout="vertical" onFinish={handleSubmit}>
130
113
  {/* 用户名只读展示 */}
131
114
  <Form.Item label="用户名">
132
115
  <Input value={user.username} disabled />
133
116
  </Form.Item>
134
117
 
135
- <Form.Item
136
- name="email"
137
- label="邮箱"
138
- rules={[{ type: 'email' }]}
139
- >
118
+ <Form.Item name="email" label="邮箱" rules={[{ type: 'email' }]}>
140
119
  <Input />
141
120
  </Form.Item>
142
121
 
143
- <Form.Item
144
- name="displayName"
145
- label="显示名称"
146
- >
122
+ <Form.Item name="displayName" label="显示名称">
147
123
  <Input />
148
124
  </Form.Item>
149
125
 
150
- <Form.Item
151
- name="role"
152
- label="角色"
153
- >
126
+ <Form.Item name="role" label="角色">
154
127
  <Select>
155
128
  <Select.Option value="ADMIN">管理员</Select.Option>
156
129
  <Select.Option value="EDITOR">编辑</Select.Option>
@@ -164,37 +137,31 @@ const EditUserForm: React.FC<EditUserFormProps> = ({ user, onSuccess }) => {
164
137
  </Button>
165
138
  </Form.Item>
166
139
  </Form>
167
- )
168
- }
140
+ );
141
+ };
169
142
  ```
170
143
 
171
144
  ## 搜索表单(非受控 + 联动 Table)
172
145
 
173
146
  ```tsx
174
147
  const UserListPage: React.FC = () => {
175
- const [searchForm] = Form.useForm()
176
- const [query, setQuery] = useState<Record<string, string>>({})
148
+ const [searchForm] = Form.useForm();
149
+ const [query, setQuery] = useState<Record<string, string>>({});
177
150
 
178
151
  const handleSearch = (values: Record<string, string>) => {
179
152
  // 过滤空值
180
- const filtered = Object.fromEntries(
181
- Object.entries(values).filter(([, v]) => v !== undefined && v !== '')
182
- )
183
- setQuery(filtered)
184
- }
153
+ const filtered = Object.fromEntries(Object.entries(values).filter(([, v]) => v !== undefined && v !== ''));
154
+ setQuery(filtered);
155
+ };
185
156
 
186
157
  const handleReset = () => {
187
- searchForm.resetFields()
188
- setQuery({})
189
- }
158
+ searchForm.resetFields();
159
+ setQuery({});
160
+ };
190
161
 
191
162
  return (
192
163
  <div>
193
- <Form
194
- form={searchForm}
195
- layout="inline"
196
- onFinish={handleSearch}
197
- >
164
+ <Form form={searchForm} layout="inline" onFinish={handleSearch}>
198
165
  <Form.Item name="keyword">
199
166
  <Input.Search placeholder="搜索用户名/邮箱" onSearch={() => searchForm.submit()} />
200
167
  </Form.Item>
@@ -211,22 +178,26 @@ const UserListPage: React.FC = () => {
211
178
  </Select>
212
179
  </Form.Item>
213
180
  <Form.Item>
214
- <Button type="primary" htmlType="submit">查询</Button>
215
- <Button onClick={handleReset} style={{ marginLeft: 8 }}>重置</Button>
181
+ <Button type="primary" htmlType="submit">
182
+ 查询
183
+ </Button>
184
+ <Button onClick={handleReset} style={{ marginLeft: 8 }}>
185
+ 重置
186
+ </Button>
216
187
  </Form.Item>
217
188
  </Form>
218
189
 
219
190
  <UserTable query={query} />
220
191
  </div>
221
- )
222
- }
192
+ );
193
+ };
223
194
  ```
224
195
 
225
196
  ## 全局校验信息配置
226
197
 
227
198
  ```tsx
228
199
  // 在应用入口统一配置校验信息
229
- import { ConfigProvider } from 'antd'
200
+ import { ConfigProvider } from 'antd';
230
201
 
231
202
  const App: React.FC = () => (
232
203
  <ConfigProvider
@@ -247,5 +218,5 @@ const App: React.FC = () => (
247
218
  >
248
219
  {/* Router 和页面内容 */}
249
220
  </ConfigProvider>
250
- )
221
+ );
251
222
  ```