feat: 添加项目详情/素材管理的MaterialSegment聚合视图功能

- 新增MaterialSegment聚合视图,支持按AI分类和模特聚合展示
- 实现后端MaterialSegmentViewService和相关API命令
- 创建前端React组件:MaterialSegmentView、MaterialSegmentGroup、MaterialSegmentCard等
- 添加MaterialSegment详细信息模态框和批量操作对话框
- 实现搜索、筛选、排序、分页功能
- 集成虚拟滚动和性能优化
- 在ProjectDetails页面添加片段管理选项卡
- 遵循promptx开发规范和UI/UX设计标准
This commit is contained in:
imeepos
2025-07-15 16:49:08 +08:00
parent bab1dfc5fd
commit 590e254fe1
24 changed files with 4340 additions and 3 deletions

35
pnpm-lock.yaml generated
View File

@@ -7,6 +7,13 @@ settings:
importers:
.:
dependencies:
'@types/react-window':
specifier: ^1.8.8
version: 1.8.8
react-window:
specifier: ^1.8.11
version: 1.8.11(react-dom@18.3.1)(react@18.3.1)
devDependencies:
'@types/node':
specifier: ^24.0.13
@@ -65,6 +72,9 @@ importers:
react-router-dom:
specifier: ^6.20.1
version: 6.30.1(react-dom@18.3.1)(react@18.3.1)
react-window:
specifier: ^1.8.11
version: 1.8.11(react-dom@18.3.1)(react@18.3.1)
zustand:
specifier: ^4.4.7
version: 4.5.7(@types/react@18.3.23)(react@18.3.1)
@@ -87,6 +97,9 @@ importers:
'@types/react-dom':
specifier: ^18.3.1
version: 18.3.7(@types/react@18.3.23)
'@types/react-window':
specifier: ^1.8.8
version: 1.8.8
'@vitejs/plugin-react':
specifier: ^4.3.4
version: 4.6.0(vite@6.3.5)
@@ -1382,6 +1395,11 @@ packages:
'@types/react': 18.3.23
dev: true
/@types/react-window@1.8.8:
resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==}
dependencies:
'@types/react': 18.3.23
/@types/react@18.3.23:
resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==}
dependencies:
@@ -2953,6 +2971,10 @@ packages:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
dev: true
/memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
dev: false
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true
@@ -3431,6 +3453,19 @@ packages:
react: 18.3.1
dev: false
/react-window@1.8.11(react-dom@18.3.1)(react@18.3.1):
resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==}
engines: {node: '>8.0.0'}
peerDependencies:
react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
dependencies:
'@babel/runtime': 7.27.6
memoize-one: 5.2.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
dev: false
/react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}