Commit 5d84edd7 authored by David Yang's avatar David Yang

update: config

parent 50af1962
{
"0 debug pnpm:scope": {
"selected": 1
},
"1 debug pnpm:package-manifest": {
"initial": {
"private": true,
"scripts": {
"build": "max build",
"dev": "max dev",
"postinstall": "max setup",
"setup": "max setup",
"start": "npm run dev"
},
"dependencies": {
"@ant-design/icons": "^6.3.2",
"@headlessui/react": "^2.2.10",
"@heroicons/react": "^2.2.0",
"@heroui-pro/react": "file:../s-report/node_modules/@heroui-pro/react",
"@heroui/react": "^3.2.3",
"@heroui/styles": "^3.2.3",
"@tailwindcss/postcss": "^4.2.0",
"@umijs/max": "^4.5.3",
"clsx": "^2.1.1",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.20",
"echarts": "^6.1.0",
"echarts-for-react": "^3.0.6",
"motion": "^12.43.0",
"react": "^19.2.8",
"react-aria-components": "^1.20.0",
"react-dom": "^19.2.8",
"tailwind-merge": "^3.6.0",
"tailwind-variants": "^3.3.1",
"tailwindcss": "^4.2.0",
"umi-request": "^1.4.0",
"umi-request-progress": "^1.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"typescript": "^5.0.3"
}
},
"prefix": "/Users/yangkang/Desktop/xy/risk_case_library"
},
"2 debug pnpm:context": {
"currentLockfileExists": false,
"storeDir": "/Users/yangkang/Library/pnpm/store/v3",
"virtualStoreDir": "/Users/yangkang/Desktop/xy/risk_case_library/node_modules/.pnpm"
},
"3 debug pnpm:stage": {
"prefix": "/Users/yangkang/Desktop/xy/risk_case_library",
"stage": "resolution_started"
},
"4 error pnpm": {
"code": "ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND",
"pkgsStack": [],
"err": {
"name": "pnpm",
"message": "Could not install from \"/Users/yangkang/Desktop/xy/s-report/node_modules/@heroui-pro/react\" as it does not exist.",
"code": "ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND",
"stack": "pnpm: Could not install from \"/Users/yangkang/Desktop/xy/s-report/node_modules/@heroui-pro/react\" as it does not exist.\n at resolveLocal (/snapshot/dist/pnpm.cjs)\n at async Object.resolve (/snapshot/dist/pnpm.cjs)\n at async run (/snapshot/dist/pnpm.cjs)"
}
}
}
\ No newline at end of file
...@@ -21,12 +21,13 @@ ...@@ -21,12 +21,13 @@
- **常量**:使用全大写下划线 (SNAKE_CASE)。 - **常量**:使用全大写下划线 (SNAKE_CASE)。
- **技术栈偏好**: - **技术栈偏好**:
- 优先使用 React Hooks 和函数组件。 - 优先使用 React Hooks 和函数组件。
- 样式处理:**优先使用 Tailwind Plus / Catalyst UI Kit(见 `src/catalyst-ui-kit`)+ Tailwind CSS**。 - 样式处理:**统一使用 Hero UI / Hero UI Pro + Tailwind CSS**。
- 交互组件:**优先使用 Headless UI**(已在 Catalyst 组件内封装,除非缺组件才直接用 `@headlessui/react`)。 - 交互组件:**优先使用 Hero UI 内置交互组件**,不得新增旧组件库或 `@headlessui/react` 实现。
- 组件选择优先级(从高到低): - 组件选择优先级(从高到低):
1. `src/catalyst-ui-kit/javascript/*`(Button/Input/Dialog/Table/Combobox/SidebarLayout/...) 1. `@heroui/react`(Button/Input/Textarea/Checkbox/Select/ListBox/Popover/Modal/Table/Dropdown/Tabs/Tooltip/...)
2. 基于 Catalyst 样式规范的自定义组件(仅在 Kit 无现成组件时) 2. `@heroui-pro/react`(Navbar/Sidebar/DataGrid/ActionBar/EmptyState/DropZone/...)
3. 原生 HTML + 自写样式(尽量避免) 3. 基于 Hero UI 设计体系的自定义组件(仅在 Hero UI / Hero UI Pro 无现成组件时)
4. 原生 HTML + 自写样式(尽量避免)
## 4. 接口请求规范 ## 4. 接口请求规范
...@@ -39,12 +40,12 @@ ...@@ -39,12 +40,12 @@
- 如果 `record-api.md` 或 `subjectsDefinition.md` 中的定义不清晰,请务必询问我,不要随意猜测字段名。 - 如果 `record-api.md` 或 `subjectsDefinition.md` 中的定义不清晰,请务必询问我,不要随意猜测字段名。
- 每次生成代码后,简要说明你引用了哪个 API 和哪些数据对象。 - 每次生成代码后,简要说明你引用了哪个 API 和哪些数据对象。
## 6. UI 规范(Tailwind Plus / Headless UI 强制约束) ## 6. UI 规范(Hero UI 强制约束)
- **全项目 UI 统一**:默认使用 `src/catalyst-ui-kit` 中的 Catalyst 组件与样式体系,避免引入其它 UI 框架。 - **全项目 UI 统一**:默认使用 Hero UI / Hero UI Pro 的组件与样式体系,避免引入其它 UI 框架。
- **Headless UI 优先**:弹窗/下拉/选择器等交互优先用 Headless UI(直接或通过 Catalyst 组件)。 - **禁止新增旧组件库依赖**:新增或重构代码不得从 `src/catalyst-ui-kit` 或 `@headlessui/react` 引入组件;旧代码迁移时应替换为 Hero UI 对应组件。
- **一致性**:表单控件优先用 Catalyst 的 `Input/Select/Checkbox/Textarea/Fieldset`,表格用 `Table`,对话框用 `Dialog`。 - **一致性**:表单控件优先用 Hero UI 的 `Input/Select/Checkbox/Textarea/DatePicker/Fieldset`,表格优先用 `Table` 或 Hero UI Pro `DataGrid`,对话框用 `Modal`,菜单/浮层用 `Dropdown`、`Popover`。
- **可访问性**:移动端侧栏/弹层必须使用 Headless UI 的 Dialog 等可访问性组件(focus trap / esc 关闭等)。 - **可访问性**:移动端侧栏/弹层/下拉等交互必须优先使用 Hero UI / Hero UI Pro 的可访问性组件能力(focus trap / esc 关闭 / aria 属性等)。
# AI 开发执行规范 # AI 开发执行规范
...@@ -54,12 +55,12 @@ ...@@ -54,12 +55,12 @@
| 字段类型 (Type) | UI 组件 (Component) | 交互逻辑 / 备注 | | 字段类型 (Type) | UI 组件 (Component) | 交互逻辑 / 备注 |
| :-- | :-- | :-- | | :-- | :-- | :-- |
| **文本 (String)** | Catalyst `Input` | 标准文本输入 | | **文本 (String)** | Hero UI `Input` | 标准文本输入 |
| **引用 (Reference)** | `ReferenceSearchSelect`(Headless UI Combobox) | 必须通过 API 获取列表,选中后仅存储 `_id` | | **引用 (Reference)** | `ReferenceSearchSelect`(基于 Hero UI `Popover` + `ListBox` / `Autocomplete`) | 必须通过 API 获取列表,选中后仅存储 `_id` |
| **数字 (Number)** | Catalyst `Input`(`type="number"`) | 仅允许输入数字 | | **数字 (Number)** | Hero UI `Input`(`type="number"`) | 仅允许输入数字 |
| **日期 (Date)** | Catalyst `Input`(`type="date"` / `datetime-local`) | 提交时格式化为 `ISO 8601` 字符串 | | **日期 (Date)** | Hero UI `DatePicker` / `DateField` / `Input`(`type="date"` / `datetime-local`) | 提交时格式化为 `ISO 8601` 字符串 |
| **布尔 (Boolean)** | Catalyst `Checkbox` | 映射为 true/false | | **布尔 (Boolean)** | Hero UI `Checkbox` | 映射为 true/false |
| **JSON** | Catalyst `Textarea` | 需要包含 JSON 校验逻辑 | | **JSON** | Hero UI `Textarea` | 需要包含 JSON 校验逻辑 |
| **子对象 (Subject)** | **动态表单递归** | **核心逻辑:** 必须先调用 `loadSubject(subjectName)` 接口读取该子对象的字段定义,然后递归应用本映射表生成子表单。 | | **子对象 (Subject)** | **动态表单递归** | **核心逻辑:** 必须先调用 `loadSubject(subjectName)` 接口读取该子对象的字段定义,然后递归应用本映射表生成子表单。 |
--- ---
...@@ -81,7 +82,7 @@ AI 在编写 API 调用或数据转换逻辑时,必须遵守: ...@@ -81,7 +82,7 @@ AI 在编写 API 调用或数据转换逻辑时,必须遵守:
1. **Step 1**: 查找 `subjectsDefinition.md` 获取该 Subject 的基础字段。 1. **Step 1**: 查找 `subjectsDefinition.md` 获取该 Subject 的基础字段。
2. **Step 2**: 检查字段类型。如果遇到 `Subject` 类型,**自动生成**一段调用 `loadSubject` 的代码以获取深层结构。 2. **Step 2**: 检查字段类型。如果遇到 `Subject` 类型,**自动生成**一段调用 `loadSubject` 的代码以获取深层结构。
3. **Step 3**: 参照上表(第 1 节)选择 tailwind (或你指定的 UI 库) 的组件。 3. **Step 3**: 参照上表(第 1 节)选择 Hero UI / Hero UI Pro 组件。
4. **Step 4**: 自动生成 `onChange` 处理函数,确保数据实时同步到 `metadata` 对象的对应路径下。 4. **Step 4**: 自动生成 `onChange` 处理函数,确保数据实时同步到 `metadata` 对象的对应路径下。
--- ---
......
...@@ -11,20 +11,45 @@ ...@@ -11,20 +11,45 @@
"@ant-design/icons": "^6.3.2", "@ant-design/icons": "^6.3.2",
"@headlessui/react": "^2.2.10", "@headlessui/react": "^2.2.10",
"@heroicons/react": "^2.2.0", "@heroicons/react": "^2.2.0",
"@heroui-pro/react": "file:../s-report/node_modules/@heroui-pro/react", "@heroui-pro/react": "^1.0.0-beta.7",
"@heroui/react": "^3.2.3", "@heroui/react": "^3.2.3",
"@heroui/styles": "^3.2.3", "@heroui/styles": "^3.2.3",
"@internationalized/date": "^3.12.3",
"@number-flow/react": ">=0.5.0",
"@react-aria/i18n": "^3.13.1",
"@react-aria/ssr": "^3.10.1",
"@react-aria/utils": "^3.34.1",
"@tailwindcss/postcss": "^4.2.0", "@tailwindcss/postcss": "^4.2.0",
"@tiptap/core": ">=3.23.6",
"@tiptap/extension-link": ">=3.23.6",
"@tiptap/extension-underline": ">=3.23.6",
"@tiptap/extensions": ">=3.23.6",
"@tiptap/pm": ">=3.23.6",
"@tiptap/react": ">=3.23.6",
"@tiptap/starter-kit": ">=3.23.6",
"@tiptap/suggestion": ">=3.23.6",
"@umijs/max": "^4.5.3", "@umijs/max": "^4.5.3",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"dayjs": "^1.11.20", "dayjs": "^1.11.20",
"echarts": "^6.1.0", "echarts": "^6.1.0",
"echarts-for-react": "^3.0.6", "echarts-for-react": "^3.0.6",
"embla-carousel": ">=8.6.0",
"embla-carousel-react": ">=8.6.0",
"maplibre-gl": ">=6.0.0",
"marked": ">=18.0.0",
"motion": "^12.43.0", "motion": "^12.43.0",
"react": "^19.2.8", "react": "^19.2.8",
"react-aria": "^3.51.0",
"react-aria-components": "^1.20.0", "react-aria-components": "^1.20.0",
"react-dom": "^19.2.8", "react-dom": "^19.2.8",
"react-markdown": ">=10.1.0",
"react-resizable-panels": ">=4.10.0",
"recharts": ">=2.0.0",
"remark-breaks": ">=4.0.0",
"remark-gfm": ">=4.0.0",
"shiki": ">=4.0.0",
"streamdown": ">=2.5.0",
"tailwind-merge": "^3.6.0", "tailwind-merge": "^3.6.0",
"tailwind-variants": "^3.3.1", "tailwind-variants": "^3.3.1",
"tailwindcss": "^4.2.0", "tailwindcss": "^4.2.0",
...@@ -36,5 +61,11 @@ ...@@ -36,5 +61,11 @@
"@types/react": "^19.2.18", "@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4", "@types/react-dom": "^19.2.4",
"typescript": "^5.0.3" "typescript": "^5.0.3"
},
"pnpm": {
"onlyBuiltDependencies": [
"@heroui-pro/react",
"@zowe/secrets-for-zowe-sdk"
]
} }
} }
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment