@dtt_siye/atool 1.3.0 → 1.4.0
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.
- package/VERSION +1 -1
- package/hooks/doc-sync-reminder +4 -4
- package/hooks/hooks-cursor.json +20 -0
- package/hooks/hooks.json +21 -1
- package/hooks/pre-commit +191 -0
- package/hooks/prompt-guard +84 -35
- package/hooks/session-start +34 -12
- package/hooks/task-state-tracker +145 -0
- package/lib/common.sh +36 -23
- package/lib/compute-importance.sh +73 -0
- package/lib/install-cursor.sh +2 -2
- package/lib/install-hooks.sh +64 -0
- package/lib/install-skills.sh +19 -0
- package/lib/knowledge-graph.sh +483 -81
- package/lib/pre-scan.sh +81 -6
- package/package.json +1 -1
- package/skills/agent-audit/SKILL.md +180 -0
- package/skills/architecture-guard/SKILL.md +164 -0
- package/skills/architecture-guard/rules/violation-detection.md +90 -0
- package/skills/ci-feedback/SKILL.md +165 -0
- package/skills/project-analyze/SKILL.md +131 -23
- package/skills/project-analyze/phases/phase1-setup.md +15 -1
- package/skills/project-analyze/phases/phase2-understand.md +17 -2
- package/skills/project-analyze/phases/phase2.5-refine.md +293 -0
- package/skills/project-analyze/phases/phase3-graph.md +7 -1
- package/skills/project-analyze/phases/phase4-synthesize.md +117 -120
- package/skills/project-analyze/phases/phase5-export.md +117 -33
- package/skills/project-analyze/prompts/understand-agent.md +17 -0
- package/skills/project-analyze/rules/android.md +61 -260
- package/skills/project-analyze/rules/devops.md +61 -421
- package/skills/project-analyze/rules/generic.md +53 -221
- package/skills/project-analyze/rules/go.md +60 -275
- package/skills/project-analyze/rules/harmony.md +64 -237
- package/skills/project-analyze/rules/java.md +47 -485
- package/skills/project-analyze/rules/mobile-flutter.md +57 -292
- package/skills/project-analyze/rules/mobile-react-native.md +65 -262
- package/skills/project-analyze/rules/mobile-swift.md +58 -303
- package/skills/project-analyze/rules/python.md +50 -296
- package/skills/project-analyze/rules/rust-tauri.md +51 -217
- package/skills/project-analyze/rules/rust.md +50 -274
- package/skills/project-analyze/rules/web-nextjs.md +61 -335
- package/skills/project-analyze/rules/web-react.md +50 -272
- package/skills/project-analyze/rules/web-vue.md +58 -352
- package/skills/project-analyze/rules/web.md +55 -347
- package/skills/project-query/SKILL.md +681 -120
- package/skills/requirements-writer/SKILL.md +48 -1
- package/skills/software-architecture/SKILL.md +73 -3
|
@@ -1,52 +1,43 @@
|
|
|
1
1
|
# Web 项目分析规则
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `web-conventions` skill 作为规范约束。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 模块发现策略
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
按路由/视图目录识别模块边界:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
↓
|
|
16
|
-
Hooks/Composables (逻辑复用)
|
|
17
|
-
↓
|
|
18
|
-
状态管理 (Store/Context)
|
|
19
|
-
↓
|
|
20
|
-
服务/API (Services)
|
|
21
|
-
↓
|
|
22
|
-
工具/类型 (Utils/Types)
|
|
23
|
-
```
|
|
9
|
+
- **Next.js App Router**: `app/` 下每个一级路由目录(排除 `api/`、`layout.tsx`)为一个页面模块
|
|
10
|
+
- **Next.js Pages Router**: `pages/` 下每个文件/目录为一个路由模块
|
|
11
|
+
- **React SPA**: `src/pages/` 下每个文件为一个路由模块
|
|
12
|
+
- **Vue 项目**: `src/views/` 下每个子目录为一个页面模块
|
|
13
|
+
- **Feature-based 结构**: `src/features/{feature}/` 下的子目录
|
|
14
|
+
- **组件层**: `src/components/{name}/` 下有 3+ 文件的子目录
|
|
24
15
|
|
|
25
|
-
|
|
16
|
+
不视为独立模块:单文件入口(`main.ts`, `App.vue`, `index.ts`)、纯导出桶文件、`utils/`/`helpers/` 目录(合并为一个模块)。
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
## 入口识别
|
|
28
19
|
|
|
29
20
|
**信号文件检测:**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
21
|
+
|
|
22
|
+
| 框架 | 信号文件 |
|
|
23
|
+
|------|----------|
|
|
24
|
+
| Next.js App Router | `app/layout.tsx` 或 `app/layout.js` |
|
|
25
|
+
| Next.js Pages Router | `pages/_app.tsx` 或 `pages/_app.js` |
|
|
26
|
+
| React SPA | `src/App.tsx` + `react-router` 依赖 |
|
|
27
|
+
| Vue/Nuxt | `src/views/` + `vue-router` 依赖,或 Nuxt 的 `pages/` |
|
|
28
|
+
| SvelteKit | `src/routes/` + `svelte.config.js` |
|
|
29
|
+
| Vite 项目 | `vite.config.ts` / `vite.config.js` |
|
|
35
30
|
|
|
36
31
|
**微前端检测:**
|
|
37
|
-
- qiankun: `main.js`
|
|
38
|
-
- Module Federation: `webpack.config.js`
|
|
32
|
+
- qiankun: `main.js` 含 `registerMicroApps`
|
|
33
|
+
- Module Federation: `webpack.config.js` 含 `ModuleFederationPlugin`
|
|
39
34
|
- single-spa: `import-map.json` 或 `single-spa` 依赖
|
|
40
35
|
|
|
41
|
-
**Monorepo 检测:**
|
|
42
|
-
- `pnpm-workspace.yaml` → pnpm workspace
|
|
43
|
-
- `lerna.json` → Lerna monorepo
|
|
44
|
-
- `nx.json` → Nx monorepo
|
|
45
|
-
- `package.json` 中 `workspaces` 字段
|
|
36
|
+
**Monorepo 检测:** `pnpm-workspace.yaml` / `lerna.json` / `nx.json` / `package.json workspaces`
|
|
46
37
|
|
|
47
|
-
|
|
38
|
+
## 架构模式识别
|
|
48
39
|
|
|
49
|
-
从 `package.json`
|
|
40
|
+
从 `package.json` 提取依赖后判断架构:
|
|
50
41
|
|
|
51
42
|
| 类别 | 依赖示例 |
|
|
52
43
|
|------|----------|
|
|
@@ -54,337 +45,54 @@ Hooks/Composables (逻辑复用)
|
|
|
54
45
|
| UI 库 | element-plus, antd, vuetify, shadcn/ui, tailwindcss |
|
|
55
46
|
| 状态管理 | zustand, redux-toolkit, pinia, vuex, mobx |
|
|
56
47
|
| 路由 | react-router, vue-router, @tanstack/router |
|
|
57
|
-
| 请求库 | axios,
|
|
58
|
-
| 构建工具 | vite, webpack, turbopack
|
|
59
|
-
| CSS 方案 | tailwindcss, sass, styled-components, css-modules |
|
|
60
|
-
| 测试 | vitest, jest, cypress, playwright |
|
|
61
|
-
| 代码质量 | eslint, prettier, typescript, husky |
|
|
62
|
-
|
|
63
|
-
### 3. 按层扫描路径
|
|
48
|
+
| 请求库 | axios, swr, @tanstack/react-query |
|
|
49
|
+
| 构建工具 | vite, webpack, turbopack |
|
|
64
50
|
|
|
51
|
+
按层扫描路径:
|
|
65
52
|
- **页面层**: `src/pages/`, `app/`, `src/views/`, `src/routes/`
|
|
66
53
|
- **组件层**: `src/components/`, `src/ui/`, `src/shared/`
|
|
67
|
-
- **逻辑层**: `src/hooks/`, `src/composables
|
|
54
|
+
- **逻辑层**: `src/hooks/`, `src/composables/`
|
|
68
55
|
- **状态层**: `src/stores/`, `src/store/`, `src/context/`, `src/redux/`
|
|
69
|
-
- **服务层**: `src/services/`, `src/api/`, `src/request
|
|
70
|
-
- **工具层**: `src/utils/`, `src/lib/`, `src/helpers/`, `src/constants/`
|
|
71
|
-
- **类型层**: `src/types/`, `src/interfaces/`, `src/schemas/`
|
|
72
|
-
- **样式层**: `src/styles/`, `src/assets/css/`, `src/themes/`
|
|
73
|
-
- **国际化**: `src/locales/`, `src/i18n/`, `src/lang/`
|
|
56
|
+
- **服务层**: `src/services/`, `src/api/`, `src/request/`
|
|
74
57
|
- **权限**: `src/permission/`, `src/auth/`, `src/guards/`
|
|
58
|
+
- **国际化**: `src/locales/`, `src/i18n/`
|
|
75
59
|
|
|
76
|
-
|
|
60
|
+
## 数据流模式
|
|
77
61
|
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
- 组件目录按子目录分组(如 `components/ui/`, `components/business/`)
|
|
62
|
+
识别状态管理方案并记录跨 Store 依赖关系:
|
|
63
|
+
- **Redux Toolkit**: `src/store/slices/` — Slice → Selector → ExtraReducer (Thunk)
|
|
64
|
+
- **Zustand**: `src/stores/*.ts` — Store → persist middleware
|
|
65
|
+
- **Pinia**: `src/stores/modules/` — defineStore Options/Setup → 跨 Store 依赖
|
|
66
|
+
- **Context API**: `src/context/*.tsx` — Provider 嵌套层级
|
|
84
67
|
|
|
85
|
-
|
|
68
|
+
权限认证数据流:登录 → token 存储 → 请求拦截器注入 → 401 刷新链路
|
|
86
69
|
|
|
87
|
-
|
|
70
|
+
## 分析关注点
|
|
88
71
|
|
|
89
|
-
|
|
72
|
+
- **路由守卫**: `beforeEach` / `ProtectedRoute` 链路,权限模型(RBAC/ABAC)
|
|
73
|
+
- **版本检测**: React 18 vs 19(并发特性)、Vue 2 vs 3(Options vs Composition API)
|
|
74
|
+
- **构建工具**: Vite(`vite.config.ts`)vs Webpack vs Turbopack
|
|
75
|
+
- **国际化**: 支持的语言列表、i18n 框架(vue-i18n / react-i18next / next-intl)
|
|
76
|
+
- **微前端**: 主/子应用关系、共享状态方案、共享代码重复度
|
|
90
77
|
|
|
91
|
-
|
|
92
|
-
- 路由配置(路径 + 对应组件 + 路由 meta)
|
|
93
|
-
- 嵌套路由结构
|
|
94
|
-
- 路由守卫(权限检查、登录拦截)
|
|
95
|
-
- 布局组件层级
|
|
78
|
+
## 输出示例
|
|
96
79
|
|
|
97
|
-
**输出示例**:
|
|
98
80
|
```
|
|
99
81
|
### 路由结构
|
|
100
|
-
|
|
101
82
|
/ (Layout: DefaultLayout)
|
|
102
|
-
├── /login
|
|
103
|
-
├── /dashboard
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
│ └── /system/menu → MenuPage [admin]
|
|
108
|
-
└── /404 → NotFoundPage [公开]
|
|
83
|
+
├── /login → LoginPage [公开]
|
|
84
|
+
├── /dashboard → DashboardPage [需认证]
|
|
85
|
+
└── /system
|
|
86
|
+
├── /system/user → UserPage [admin]
|
|
87
|
+
└── /system/role → RolePage [admin]
|
|
109
88
|
|
|
110
89
|
### 路由守卫链路
|
|
111
90
|
router.beforeEach → 检查 token → 无 token → 跳转 /login
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### 层 2: 状态管理层
|
|
116
|
-
|
|
117
|
-
**扫描文件**: `src/stores/**/*.ts`, `src/store/**/*.ts`, `src/context/**/*.tsx`
|
|
118
|
-
|
|
119
|
-
**提取内容**:
|
|
120
|
-
- Store ID / 名称
|
|
121
|
-
- State 接口(所有字段的类型和初始值)
|
|
122
|
-
- Getters / 计算属性
|
|
123
|
-
- Actions(参数 + 调用的 API + 修改的 state)
|
|
124
|
-
- 跨 Store 依赖
|
|
125
|
-
- 持久化配置
|
|
91
|
+
→ 有 token → 检查权限 → 放行 / 403
|
|
126
92
|
|
|
127
|
-
**输出示例**:
|
|
128
|
-
```
|
|
129
93
|
### useUserStore
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
| token | string | '' | JWT token |
|
|
135
|
-
| userInfo | UserInfo \| null | null | 当前用户信息 |
|
|
136
|
-
| roles | string[] | [] | 角色列表 |
|
|
137
|
-
- **Getters**:
|
|
138
|
-
| 名称 | 返回类型 | 说明 |
|
|
139
|
-
|------|----------|------|
|
|
140
|
-
| isAdmin | boolean | 是否管理员 |
|
|
141
|
-
| avatar | string | 用户头像 URL |
|
|
142
|
-
- **Actions**:
|
|
143
|
-
| Action | 参数 | 调用的 API | 说明 |
|
|
144
|
-
|--------|------|-----------|------|
|
|
145
|
-
| login | (data: LoginForm) | authApi.login() | 登录并存储 token |
|
|
146
|
-
| getUserInfo | () | userApi.getInfo() | 获取用户信息 |
|
|
147
|
-
| logout | () | - | 清空状态并跳转 |
|
|
148
|
-
- **跨 Store 依赖**: usePermissionStore(登录后同步权限)
|
|
149
|
-
- **持久化**: localStorage, key: 'user-store'
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 层 3: 服务/API 层
|
|
153
|
-
|
|
154
|
-
**扫描文件**: `src/api/**/*.ts`, `src/services/**/*.ts`, `src/request/**/*.ts`
|
|
155
|
-
|
|
156
|
-
**提取内容**:
|
|
157
|
-
- API 基础配置(baseURL、超时、拦截器)
|
|
158
|
-
- API 函数列表(路径 + 方法 + 参数 + 返回类型)
|
|
159
|
-
- Token 注入方式
|
|
160
|
-
- 错误处理策略
|
|
161
|
-
- 请求/响应拦截器逻辑
|
|
162
|
-
|
|
163
|
-
**输出示例**:
|
|
164
|
-
```
|
|
165
|
-
### API 基础配置
|
|
166
|
-
- **实例文件**: `src/utils/request.ts`
|
|
167
|
-
- **baseURL**: `/api/v1`
|
|
168
|
-
- **超时**: 15000ms
|
|
169
|
-
- **Token 注入**: 请求拦截器从 localStorage 读取 token,添加 `Authorization: Bearer {token}` header
|
|
170
|
-
- **错误处理**: 401 → 跳转登录;403 → 提示无权限;500 → 提示服务器错误
|
|
171
|
-
|
|
172
|
-
### 用户模块 API
|
|
173
|
-
| 函数 | 方法 | 路径 | 参数 | 返回类型 |
|
|
174
|
-
|------|------|------|------|----------|
|
|
175
|
-
| getUserPage | GET | /system/user/list | { pageNum, pageSize, ...query } | PageResult<UserVO> |
|
|
176
|
-
| getUserDetail | GET | /system/user/:id | { id: string } | R<UserVO> |
|
|
177
|
-
| createUser | POST | /system/user | CreateUserDTO | R<void> |
|
|
178
|
-
| updateUser | PUT | /system/user | UpdateUserDTO | R<void> |
|
|
179
|
-
| deleteUser | DELETE | /system/user/:id | { id: string } | R<void> |
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### 层 4: 组件层
|
|
183
|
-
|
|
184
|
-
**扫描文件**: `src/components/**/*.vue`, `src/components/**/*.tsx`
|
|
185
|
-
|
|
186
|
-
**提取内容**:
|
|
187
|
-
- 组件名称 + 路径
|
|
188
|
-
- Props/参数定义(类型 + 是否必填 + 默认值)
|
|
189
|
-
- Events/Emits(事件名 + 载荷类型)
|
|
190
|
-
- Slots(插槽名 + 用途)
|
|
191
|
-
- 依赖的 Store / API / 其他组件
|
|
192
|
-
- 组件分类(基础组件 / 业务组件 / 页面组件)
|
|
193
|
-
|
|
194
|
-
**输出示例**:
|
|
195
|
-
```
|
|
196
|
-
### UserList(业务组件)
|
|
197
|
-
- **路径**: `src/views/system/user/index.vue`
|
|
198
|
-
- **Props**:
|
|
199
|
-
| Prop | Type | Required | Default | Description |
|
|
200
|
-
|------|------|----------|---------|-------------|
|
|
201
|
-
| loading | boolean | No | false | 加载状态 |
|
|
202
|
-
- **Emits**:
|
|
203
|
-
| Event | Payload | Description |
|
|
204
|
-
|-------|---------|-------------|
|
|
205
|
-
| refresh | () => void | 刷新列表 |
|
|
206
|
-
| edit | (row: UserVO) => void | 编辑用户 |
|
|
207
|
-
- **使用的 Store**: useUserStore
|
|
208
|
-
- **使用的 API**: getUserPage(), deleteUser()
|
|
209
|
-
- **依赖组件**: UserForm, DictTag, Pagination
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
### 层 5: Hooks/Composables 层
|
|
213
|
-
|
|
214
|
-
**扫描文件**: `src/hooks/**/*.ts`, `src/composables/**/*.ts`
|
|
215
|
-
|
|
216
|
-
**提取内容**:
|
|
217
|
-
- Hook 名称 + 路径
|
|
218
|
-
- 参数签名
|
|
219
|
-
- 返回值签名
|
|
220
|
-
- 内部使用的 API / Store
|
|
221
|
-
- 副作用说明
|
|
222
|
-
|
|
223
|
-
**输出示例**:
|
|
94
|
+
- State: token (string), userInfo (UserInfo|null), roles (string[])
|
|
95
|
+
- Actions: login() → authApi.login(), logout() → 清空状态
|
|
96
|
+
- 跨 Store 依赖: usePermissionStore(登录后同步权限)
|
|
97
|
+
- 持久化: localStorage, key: 'user-store'
|
|
224
98
|
```
|
|
225
|
-
### useTable
|
|
226
|
-
- **路径**: `src/hooks/useTable.ts`
|
|
227
|
-
- **签名**: `useTable<T>(fetchFn: (params) => Promise<PageResult<T>>, initialParams?)`
|
|
228
|
-
- **返回值**:
|
|
229
|
-
| 字段 | 类型 | 说明 |
|
|
230
|
-
|------|------|------|
|
|
231
|
-
| tableData | Ref<T[]> | 表格数据 |
|
|
232
|
-
| loading | Ref<boolean> | 加载状态 |
|
|
233
|
-
| pagination | Reactive<PageParams> | 分页参数 |
|
|
234
|
-
| search | (params?) => void | 搜索方法 |
|
|
235
|
-
| refresh | () => void | 刷新当前页 |
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 层 6: 权限/认证层
|
|
239
|
-
|
|
240
|
-
**扫描文件**: `src/permission/**/*.ts`, `src/auth/**/*.ts`, `src/directives/**/*.ts`
|
|
241
|
-
|
|
242
|
-
**提取内容**:
|
|
243
|
-
- 认证流程(登录 → token 存储 → token 刷新)
|
|
244
|
-
- 权限模型(RBAC / ABAC)
|
|
245
|
-
- 权限指令(如 `v-permission`)
|
|
246
|
-
- 路由守卫逻辑
|
|
247
|
-
|
|
248
|
-
**输出示例**:
|
|
249
|
-
```
|
|
250
|
-
### 认证流程
|
|
251
|
-
用户登录 → POST /auth/login → 获取 token + refreshToken
|
|
252
|
-
→ 存储 localStorage → 设置 Axios header
|
|
253
|
-
→ 请求 401 → 使用 refreshToken 刷新 → 刷新失败 → 跳转登录页
|
|
254
|
-
|
|
255
|
-
### 权限模型
|
|
256
|
-
RBAC(基于角色的访问控制)
|
|
257
|
-
- 用户 → 角色 → 菜单/按钮权限
|
|
258
|
-
- 权限存储在 usePermissionStore.permissions: string[](如 ['system:user:add'])
|
|
259
|
-
- 指令 v-permission="['system:user:add']" 控制按钮显示
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### 层 7: 国际化层
|
|
263
|
-
|
|
264
|
-
**扫描文件**: `src/locales/**/*.ts`, `src/i18n/**/*.json`
|
|
265
|
-
|
|
266
|
-
**提取内容**:
|
|
267
|
-
- 支持的语言列表
|
|
268
|
-
- i18n 框架(vue-i18n / react-i18next / next-intl)
|
|
269
|
-
- 语言切换机制
|
|
270
|
-
- 翻译文件结构
|
|
271
|
-
|
|
272
|
-
### 层 8: 样式/设计系统层
|
|
273
|
-
|
|
274
|
-
**扫描文件**: `src/styles/**`, `src/assets/css/**`, `tailwind.config.*`, `theme.ts`
|
|
275
|
-
|
|
276
|
-
**提取内容**:
|
|
277
|
-
- CSS 变量定义(`:root` / `.dark`)
|
|
278
|
-
- SCSS 变量(`$color-primary`)
|
|
279
|
-
- Tailwind 配置(`theme.extend`)
|
|
280
|
-
- UI 库主题定制
|
|
281
|
-
- 暗色模式实现方式
|
|
282
|
-
- 响应式断点
|
|
283
|
-
|
|
284
|
-
**输出示例**:
|
|
285
|
-
```
|
|
286
|
-
### 颜色系统(从 styles/variables.scss 提取)
|
|
287
|
-
| 变量名 | 值 | 用途 |
|
|
288
|
-
|--------|------|------|
|
|
289
|
-
| --el-color-primary | #00a3e0 | 主色调 |
|
|
290
|
-
| --el-color-primary-light-3 | #33b7e9 | 主色调浅色 |
|
|
291
|
-
| --el-color-success | #67c23a | 成功状态 |
|
|
292
|
-
| --el-color-warning | #e6a23c | 警告状态 |
|
|
293
|
-
| --el-color-danger | #f56c6c | 危险状态 |
|
|
294
|
-
|
|
295
|
-
### 暗色模式
|
|
296
|
-
通过 html.dark class 切换,CSS 变量在 `styles/dark.scss` 中覆盖
|
|
297
|
-
|
|
298
|
-
### 响应式断点
|
|
299
|
-
| 名称 | 宽度 | 用途 |
|
|
300
|
-
|------|------|------|
|
|
301
|
-
| sm | ≥640px | 手机横屏 |
|
|
302
|
-
| md | ≥768px | 平板 |
|
|
303
|
-
| lg | ≥1024px | 桌面 |
|
|
304
|
-
| xl | ≥1280px | 大屏 |
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
## 输出模板
|
|
308
|
-
|
|
309
|
-
### README.md 章节结构
|
|
310
|
-
|
|
311
|
-
```markdown
|
|
312
|
-
# {项目名}
|
|
313
|
-
|
|
314
|
-
## 项目概述
|
|
315
|
-
业务描述 + 项目目标
|
|
316
|
-
|
|
317
|
-
## 技术栈
|
|
318
|
-
| 技术 | 版本 | 用途 |
|
|
319
|
-
|------|------|------|
|
|
320
|
-
|
|
321
|
-
## 架构设计
|
|
322
|
-
### 架构图(ASCII)
|
|
323
|
-
### 数据流图
|
|
324
|
-
用户操作 → 事件处理 → Store → API → 响应 → UI 更新
|
|
325
|
-
|
|
326
|
-
## 目录结构
|
|
327
|
-
带注释的文件树
|
|
328
|
-
|
|
329
|
-
## 路由结构
|
|
330
|
-
路由树 + 权限标注
|
|
331
|
-
|
|
332
|
-
## 状态管理
|
|
333
|
-
Store 关系图 + 核心 Store 说明
|
|
334
|
-
|
|
335
|
-
## API 接口
|
|
336
|
-
按模块分组的 API 端点表
|
|
337
|
-
|
|
338
|
-
## 认证与权限
|
|
339
|
-
登录流程 + 权限模型
|
|
340
|
-
|
|
341
|
-
## 构建 & 部署
|
|
342
|
-
构建命令 + 环境变量 + 部署方式
|
|
343
|
-
|
|
344
|
-
## 开发指南
|
|
345
|
-
新增页面/组件/API 的步骤
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
### COMPONENT.md 章节结构
|
|
349
|
-
|
|
350
|
-
```markdown
|
|
351
|
-
# 组件文档
|
|
352
|
-
|
|
353
|
-
## 基础组件
|
|
354
|
-
项目内封装的通用组件(不含第三方 UI 库)
|
|
355
|
-
|
|
356
|
-
## 业务组件
|
|
357
|
-
按功能模块分组的业务组件
|
|
358
|
-
|
|
359
|
-
## Hooks / Composables
|
|
360
|
-
可复用的逻辑 Hook
|
|
361
|
-
|
|
362
|
-
## 跨模块依赖关系
|
|
363
|
-
模块间调用关系的 ASCII 图
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
## 模块边界识别
|
|
367
|
-
|
|
368
|
-
以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
|
|
369
|
-
|
|
370
|
-
| 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
|
|
371
|
-
|----|----------|-------------|---------------------|
|
|
372
|
-
| 页面/视图层 | `src/views/`, `src/pages/` | 每个子目录 | 目录名 kebab-case |
|
|
373
|
-
| API/服务层 | `src/api/`, `src/services/` | 每个子目录 | 目录名 kebab-case |
|
|
374
|
-
| 状态管理层 | `src/store/modules/`, `src/stores/` | 每个子目录 | 目录名 kebab-case |
|
|
375
|
-
| 组件层 | `src/components/{name}/` | 3+ 文件的子目录 | 目录名 kebab-case |
|
|
376
|
-
| Hooks 层 | `src/hooks/` | 每个文件 | 文件名去后缀 kebab-case |
|
|
377
|
-
|
|
378
|
-
**不视为独立模块的情况**:
|
|
379
|
-
- 单文件入口(如 `main.ts`, `App.vue`, `index.ts`)
|
|
380
|
-
- 纯导出桶文件(`index.ts` 仅有 re-export)
|
|
381
|
-
- 工具函数目录(`utils/`, `helpers/`)— 合并为一个模块
|
|
382
|
-
|
|
383
|
-
## Token 管理
|
|
384
|
-
|
|
385
|
-
- 大组件目录(>15 文件)拆分为子任务
|
|
386
|
-
- 每个子任务分析 ≤10 文件
|
|
387
|
-
- `package.json` 分析单独一个子任务
|
|
388
|
-
- 样式相关文件(CSS/Theme)单独一个子任务
|
|
389
|
-
- 微前端项目:每个子应用作为独立分析单元
|
|
390
|
-
- Monorepo 项目:每个 workspace 子包作为独立分析单元
|