refactor: ManagementPanel 组件拆分重构

- 创建 management/ 子目录,模块化管理
- 拆分为 5 个 TypeScript 文件:types.ts、ManagementPanel.tsx、CategorySection.tsx、ManagementCard.tsx、index.ts
- 添加 useMemo 缓存分类计算结果
- 使用 React.memo 优化 ManagementCard 和 CategorySection
- 添加完整的 TypeScript 类型定义,消除 any
- 更新 STRUCTURE.md 同步目录结构

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-10 19:28:05 +08:00
parent c32091e83e
commit 6d5594556b
8 changed files with 352 additions and 182 deletions

View File

@@ -30,7 +30,12 @@ src/views/Company/
│ │ │ ├── index.ts # 组件统一导出
│ │ │ ├── LoadingState.tsx # 加载状态组件(黑金主题 Spinner
│ │ │ ├── ShareholderPanel.tsx # 股权结构面板(实控人、十大股东、股权集中度)
│ │ │ ├── ManagementPanel.tsx # 管理团队面板(高管列表表格
│ │ │ ├── management/ # 管理团队模块(拆分重构
│ │ │ │ ├── index.ts # 模块导出
│ │ │ │ ├── types.ts # 类型定义ManagementPerson 等)
│ │ │ │ ├── ManagementPanel.tsx # 主组件useMemo 优化)
│ │ │ │ ├── CategorySection.tsx # 分类区块memo 优化)
│ │ │ │ └── ManagementCard.tsx # 人员卡片memo 优化)
│ │ │ ├── AnnouncementsPanel.tsx # 公告信息面板(公告列表 + 披露日程)
│ │ │ ├── BranchesPanel.tsx # 分支机构面板(分支列表表格)
│ │ │ └── BusinessInfoPanel.tsx # 工商信息面板(注册资本、成立日期等)
@@ -468,4 +473,37 @@ MarketDataView/
- **TypeScript 类型安全**:所有数据结构有完整类型定义
- **服务层分离**API 调用统一在 `marketService.ts` 中管理
- **图表配置抽离**:复杂的 ECharts 配置集中在 `chartOptions.ts`
- **组件复用**通用组件ThemedCard、MarkdownRenderer可在其他模块使用
- **组件复用**通用组件ThemedCard、MarkdownRenderer可在其他模块使用
### 2025-12-10 ManagementPanel 拆分重构
**改动概述**
- `ManagementPanel.tsx` 从 **180 行** 拆分为 **5 个 TypeScript 文件**
- 创建 `management/` 子目录,模块化管理
- 添加性能优化(`useMemo`、`React.memo`
**拆分后文件结构**
```
components/management/
├── index.ts # 模块导出
├── types.ts # 类型定义(~35 行)
├── ManagementPanel.tsx # 主组件(~105 行useMemo 优化)
├── CategorySection.tsx # 分类区块组件(~65 行memo
└── ManagementCard.tsx # 人员卡片组件(~100 行memo
```
**类型定义**`types.ts`
- `ManagementPerson` - 管理人员信息
- `ManagementCategory` - 分类类型(高管/董事/监事/其他)
- `CategorizedManagement` - 分类后的数据结构
- `CategoryConfig` - 分类配置(图标、颜色)
**性能优化**
- `useMemo` - 缓存 `categorizeManagement()` 分类计算结果
- `React.memo` - `ManagementCard` 和 `CategorySection` 使用 memo 包装
- 常量提取 - `CATEGORY_CONFIG` 和 `CATEGORY_ORDER` 提取到组件外部
**设计原则**
- **职责分离**:卡片渲染、分类区块、数据处理各自独立
- **类型安全**:消除 `any` 类型,完整的 TypeScript 类型定义
- **可复用性**`ManagementCard` 可独立使用