From 75c8d2c51f967c029b146ba0e4cff082efe71753 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Thu, 02 Apr 2026 16:11:59 +0800
Subject: [PATCH] docs: 更新项目文档,添加 STRUCTURE.md 结构说明
---
openspec/changes/archive/2026-04-02-update-project-docs-structure/.openspec.yaml | 2
openspec/changes/archive/2026-04-02-update-project-docs-structure/specs/docs-update/spec.md | 8 +
openspec/changes/archive/2026-04-02-update-project-docs-structure/proposal.md | 22 +++
openspec/changes/archive/2026-04-02-update-project-docs-structure/design.md | 58 +++++++++
openspec/changes/archive/2026-04-02-update-project-docs-structure/tasks.md | 16 ++
STRUCTURE.md | 164 +++++++++++++++++++++++++++
README.md | 45 ++++++-
7 files changed, 309 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 44d8676..b435336 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,13 @@
# admin2-components
-基于 React + TypeScript + Vite 的组件库项目
+PC 端管理系统公共组件库,基于 React + TypeScript + Ant Design 构建。
+
+## 项目定位
+
+本项目是一套 PC 端管理系统的公共组件库,提供:
+- **框架组件** - 管理系统页面主结构(侧边栏、顶部栏、多页签等)
+- **表单组件** - 处理用户输入(日期选择、级联选择、文件上传等)
+- **高级组件** - 复杂功能(表格、图表、弹窗、编辑器等)
## 技术栈
@@ -10,11 +17,35 @@
- Ant Design 6.3.5
- ESLint 9 (Flat Config)
-## 项目类型
+## 引用方式
-- **UI 框架**: Ant Design
-- **包管理器**: pnpm
-- **代码规范**: ESLint (类型检查 + React X + React DOM)
+作为 git 子模块挂载到业务项目根目录:
+
+```bash
+# 添加子模块到项目根目录
+git submodule add <repository-url> components
+
+# 更新子模块
+git submodule update --init --recursive
+```
+
+业务项目需配置别名 `@components` 指向 `components/src` 目录。组件引用示例:
+
+```tsx
+import { CSideMenu } from '@components/framework/sideMenu/CSideMenu';
+```
+
+## 组件分类
+
+| 分类 | 说明 |
+|------|------|
+| `framework` | 框架组件 - 页面主结构 |
+| `forms` | 表单组件 - 用户输入 |
+| `fragments` | 页面片段 - 布局元素 |
+| `plugins` | 高级组件 - 复杂功能 |
+| `bases` | 业务组件 - 领域特定 |
+
+详细目录结构说明见 [STRUCTURE.md](./STRUCTURE.md)
## 可用脚本
@@ -29,4 +60,6 @@
- 使用 TypeScript 严格模式
- ESLint 配置了类型检查规则,提交前需通过 lint
-- 组件开发遵循函数式组件 + Hooks 模式
\ No newline at end of file
+- 组件开发遵循函数式组件 + Hooks 模式
+- 组件文件以 `C` 开头(如 `CButton.tsx`)
+- 样式文件与组件同目录,使用 `c` 开头(如 `cButton.scss`)
\ No newline at end of file
diff --git a/STRUCTURE.md b/STRUCTURE.md
new file mode 100644
index 0000000..b6967f3
--- /dev/null
+++ b/STRUCTURE.md
@@ -0,0 +1,164 @@
+# 项目结构
+
+本文档详细描述 `admin2-components` 项目的目录结构和组件分类规范。
+
+## 整体结构
+
+```
+admin2-components/
+├── src/ # 源代码
+│ ├── framework/ # 框架组件 - 页面主结构
+│ ├── forms/ # 表单组件 - 用户输入
+│ ├── fragments/ # 页面片段 - 布局元素
+│ ├── plugins/ # 高级组件 - 复杂功能
+│ ├── bases/ # 业务组件 - 领域特定
+│ └── assets/ # 静态资源
+├── test/ # 测试案例(待补充)
+├── public/ # 公共资源
+├── openspec/ # 变更管理
+├── README.md # 项目概述
+├── CLAUDE.md # Claude 工作指导
+└── STRUCTURE.md # 本文档
+```
+
+## src/ 目录
+
+### framework/ - 框架组件
+
+页面主结构相关的组件,管理系统的整体布局。
+
+```
+framework/
+├── headerBar/ # 顶部导航栏
+├── sideMenu/ # 侧边菜单
+├── pageViews/ # 多页签视图
+├── screenGrid/ # 屏幕网格布局
+└── scrollablePanes/ # 可滚动面板
+```
+
+**典型组件**: `CHeaderBar`, `CSideMenu`, `CPageViews`, `CScreenGrid`
+
+### forms/ 表单组件
+
+处理用户输入的各类表单组件。
+
+```
+forms/
+├── datePicker/ # 日期选择
+├── cascader/ # 级联选择
+├── select/ # 下拉选择
+├── input/ # 文本输入
+├── upload/ # 文件上传
+├── colorPicker/ # 颜色选择
+├── chinaAddress/ # 中国地址级联
+└── ...
+```
+
+**典型组件**: `CDatePicker`, `CChinaCascader`, `CImageUploader`, `CFileUploader`
+
+### fragments/ - 页面片段
+
+页面中的小型布局元素和UI片段。
+
+```
+fragments/
+├── contentBox/ # 内容盒子
+├── gridBox/ # 网格盒子
+├── flatForm/ # 扁平表单
+├── helper/ # 辅助工具
+├── notice/ # 通知提示
+├── text/ # 文本组件
+├── icons/ # 图标组件
+└── ...
+```
+
+**典型组件**: `CContentBox`, `CGridBox`, `CFlatForm`, `CHelper`, `CNotice`
+
+### plugins/ - 高级组件
+
+复杂功能组件,通常包含较多业务逻辑。
+
+```
+plugins/
+├── richTable/ # 高级表格
+├── tableForm/ # 表格表单
+├── editableTable/ # 可编辑表格
+├── echarts/ # 图表组件
+├── draggableModal/ # 可拖拽弹窗
+├── detailTabsModel/ # 详情页签弹窗
+├── imageViewer/ # 图片查看器
+├── itemEditor/ # 条目编辑器
+├── richEditor/ # 富文本编辑器
+└── ...
+```
+
+**典型组件**: `CRichTable`, `CEditableTable`, `CEchartsPie`, `CDraggableModal`
+
+### bases/ - 业务组件
+
+领域特定的业务组件,与具体业务场景强相关。
+
+```
+bases/
+├── Director/ # 总监相关
+├── DirectorHome/ # 总监首页
+├── DirectorOperationListing/ # 运营列表
+└── ...
+```
+
+**典型组件**: `Director`, `DirectorHome`, `DirectorOperationListing`
+
+### assets/ - 静态资源
+
+静态资源文件,如图片、数据文件等。
+
+```
+assets/
+├── images/ # 图片资源
+├── datas/ # 数据文件(如地区数据)
+└── ...
+```
+
+## test/ - 测试案例
+
+测试目录,待测试框架确定后补充结构。
+
+初步规划:
+```
+test/
+├── unit/ # 单元测试
+├── integration/ # 集成测试
+└── e2e/ # 端到端测试
+```
+
+## 文件命名规范
+
+### 组件文件
+
+- **组件文件**: 以 `C` 开头,如 `CButton.tsx`
+- **样式文件**: 以 `c` 开头,如 `cButton.scss`
+- **类型文件**: 以 `types` 结尾,如 `buttonTypes.ts`
+
+### 目录命名
+
+- 组件目录: 使用 CamelCase,如 `datePicker`、`richTable`
+- 目录内的组件文件放在对应名称的子目录中
+
+### 示例
+
+```
+forms/
+└── datePicker/
+ ├── CDatePicker.tsx # 主组件
+ ├── cDatePicker.scss # 样式
+ ├── useDatePicker.ts # Hook(可选)
+ └── datePickerTypes.ts # 类型定义(可选)
+```
+
+## 组件开发规范
+
+1. **函数组件**: 使用函数式组件 + Hooks
+2. **TypeScript**: 严格模式,提供完整的类型定义
+3. **样式隔离**: 使用 CSS Modules 或 SCSS 避免样式污染
+4. **单一职责**: 每个组件专注于单一功能
+5. **可复用性**: 提取通用逻辑为自定义 Hook
\ No newline at end of file
diff --git a/openspec/changes/archive/2026-04-02-update-project-docs-structure/.openspec.yaml b/openspec/changes/archive/2026-04-02-update-project-docs-structure/.openspec.yaml
new file mode 100644
index 0000000..6a5db8c
--- /dev/null
+++ b/openspec/changes/archive/2026-04-02-update-project-docs-structure/.openspec.yaml
@@ -0,0 +1,2 @@
+schema: spec-driven
+created: 2026-04-02
diff --git a/openspec/changes/archive/2026-04-02-update-project-docs-structure/design.md b/openspec/changes/archive/2026-04-02-update-project-docs-structure/design.md
new file mode 100644
index 0000000..75e9647
--- /dev/null
+++ b/openspec/changes/archive/2026-04-02-update-project-docs-structure/design.md
@@ -0,0 +1,58 @@
+## Context
+
+项目为 PC 端管理系统的公共组件库,技术栈为 React 19 + TypeScript + Ant Design 6.x。组件来源参考 `D:\AiSim\AdminManager\src\components`,采用 git 子模块方式挂载到业务项目,不走 npm 发布。
+
+当前文档状态:
+- README.md: 仅包含基础技术栈说明,缺少项目定位
+- CLAUDE.md: 已包含终端命令规范
+- STRUCTURE.md: 不存在
+
+## Goals / Non-Goals
+
+**Goals:**
+- 清晰描述项目定位(公共组件库、git 子模块引用)
+- 建立规范的组件目录分类体系
+- 明确各文档职责分工
+
+**Non-Goals:**
+- 不涉及组件实现细节
+- 不制定测试框架规范(后续讨论)
+- 不规划组件导出方式(保持现有直接 import)
+
+## Decisions
+
+### 1. 文档分工
+
+| 文件 | 内容定位 |
+|------|----------|
+| README.md | 项目概述、技术栈、快速开始、组件分类概述 |
+| CLAUDE.md | Claude Code 工作指导(终端命令规范) |
+| STRUCTURE.md | 详细目录结构说明、组件分类规范 |
+
+**理由**: 遵循社区惯例,README 作为入口文档,CLAUDE.md 专门给 Claude Code 使用,结构文档独立更清晰。
+
+### 2. 文件名选择: STRUCTURE.md vs project_structure.md
+
+采用 `STRUCTURE.md`(全大写),理由:
+- 与 `README`、`CHANGELOG` 风格一致
+- 简洁醒目,约定俗成
+
+### 3. 组件目录分类
+
+沿用参考项目的分类方式:
+
+```
+src/
+├── framework/ # 框架组件 - 页面主结构
+├── forms/ # 表单组件 - 用户输入
+├── fragments/ # 页面片段 - 布局元素
+├── plugins/ # 高级组件 - 复杂功能
+├── bases/ # 业务组件 - 领域特定
+├── assets/ # 静态资源
+test/ # 测试案例(待定测试框架)
+```
+
+## Risks / Trade-offs
+
+- [风险] 组件分类可能随项目演进需要调整 → 文档保持简洁,后续迭代更新
+- [风险] 测试框架待定,test 目录结构暂不明确 → STRUCTURE.md 中预留位置,待后续补充
\ No newline at end of file
diff --git a/openspec/changes/archive/2026-04-02-update-project-docs-structure/proposal.md b/openspec/changes/archive/2026-04-02-update-project-docs-structure/proposal.md
new file mode 100644
index 0000000..c307e9f
--- /dev/null
+++ b/openspec/changes/archive/2026-04-02-update-project-docs-structure/proposal.md
@@ -0,0 +1,22 @@
+## Why
+
+项目是 PC 端管理系统的公共组件库,需要更新文档以清晰描述项目定位、组件分类结构和开发规范。当前 README 内容过于简单,缺少项目结构说明和组件目录规范。
+
+## What Changes
+
+- **更新 README.md**: 补充项目定位(公共组件库、git 子模块引用)、组件分类概述
+- **更新 CLAUDE.md**: 保持现有指引(可微调)
+- **新建 STRUCTURE.md**: 详细描述 src 目录结构、组件分类规范、测试目录规划
+
+## Capabilities
+
+### New Capabilities
+<!-- 文档更新任务,不涉及新的功能规格 -->
+
+### Modified Capabilities
+<!-- 无现有 specs 可修改 -->
+
+## Impact
+
+- 文档文件: README.md, CLAUDE.md, STRUCTURE.md
+- 开发规范: 组件目录组织方式
\ No newline at end of file
diff --git a/openspec/changes/archive/2026-04-02-update-project-docs-structure/specs/docs-update/spec.md b/openspec/changes/archive/2026-04-02-update-project-docs-structure/specs/docs-update/spec.md
new file mode 100644
index 0000000..634cd4b
--- /dev/null
+++ b/openspec/changes/archive/2026-04-02-update-project-docs-structure/specs/docs-update/spec.md
@@ -0,0 +1,8 @@
+## ADDED Requirements
+
+### Requirement: 文档结构规范化
+本项目为文档更新任务,不涉及新功能规格。文档更新包括 README.md、CLAUDE.md、STRUCTURE.md 的内容调整。
+
+#### Scenario: 文档更新完成
+- **WHEN** 项目文档结构完成更新
+- **THEN** README 包含项目定位和组件分类概述,CLAUDE 保留终端命令规范,STRUCTURE 包含详细目录结构
\ No newline at end of file
diff --git a/openspec/changes/archive/2026-04-02-update-project-docs-structure/tasks.md b/openspec/changes/archive/2026-04-02-update-project-docs-structure/tasks.md
new file mode 100644
index 0000000..b824a26
--- /dev/null
+++ b/openspec/changes/archive/2026-04-02-update-project-docs-structure/tasks.md
@@ -0,0 +1,16 @@
+## 1. 更新 README.md
+
+- [x] 1.1 补充项目定位(公共组件库、git 子模块引用方式)
+- [x] 1.2 添加组件分类概述
+- [x] 1.3 补充项目结构简要说明
+
+## 2. 更新 CLAUDE.md
+
+- [x] 2.1 检查并微调现有终端命令规范(如有需要)
+
+## 3. 新建 STRUCTURE.md
+
+- [x] 3.1 描述 src 目录结构和各子目录职责
+- [x] 3.2 定义组件分类规范(framework/forms/fragments/plugins/bases/assets)
+- [x] 3.3 规划 test 测试目录结构(预留位置,待测试框架确定后补充)
+- [x] 3.4 添加文件命名规范说明(如组件文件以 C 开头)
\ No newline at end of file
--
Gitblit v1.9.1