6a-spec-install 1.0.1-dev.2 → 1.0.1-dev.4
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/.cursor/commands/6A-init.md +8 -0
- package/.cursor/rules/6A/6A_init_map_sop.md +76 -0
- package/.cursor/rules/6A/6A_model_sop.md +2 -2
- package/.cursor/rules/6A/6A_new_feature_sop.md +1 -1
- package/lib/installer.js +22 -2
- package/package.json +1 -1
- package/.cursor/rules/biz/functional-capability-Map.md +0 -12
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Init Functional Capability Map workflow
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
1. Immediate response upon activation: Init Functional Capability Map workflow has been activated.
|
|
6
|
+
2. Read file: `.cursor/rules/6A/6A_init_map_sop.md`
|
|
7
|
+
3. Strictly follow the "Init Functional Capability Map SOP" defined in that file.
|
|
8
|
+
4. Execute the codebase scan and update the artifact at `.6A-spec/biz/functional-capability-Map.md`.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Command: init
|
|
2
|
+
# Description: 生成或更新项目功能能力地图 (Functional Capability Map) 的 6A SOP
|
|
3
|
+
|
|
4
|
+
## Aim (目标)
|
|
5
|
+
生成一份精简、准确的面向 AI 设计者的《项目功能能力地图》,明确系统核心能力、数据资产与复用规则,辅助后续设计与开发。
|
|
6
|
+
|
|
7
|
+
## Actor (执行者)
|
|
8
|
+
- **角色**: 资深架构师 & 领域建模专家
|
|
9
|
+
- **工具**: Cursor AI, codebase_search, read_file
|
|
10
|
+
|
|
11
|
+
## Action (动作)
|
|
12
|
+
执行以下步骤扫描源码并生成文档:
|
|
13
|
+
|
|
14
|
+
1. **识别 Facade 层 (Identify Facades)**:
|
|
15
|
+
- 扫描 `*-interfaces` 模块或 Controller 层。
|
|
16
|
+
- 提取所有以 `Facade` 结尾的接口或核心 `Controller`。
|
|
17
|
+
- 分析其核心方法 (Method)、入参 (Input) 及业务意图 (Intent)。
|
|
18
|
+
|
|
19
|
+
2. **映射数据模型 (Map Schema)**:
|
|
20
|
+
- 扫描 `*-service` 或 `*-model` 模块中的 `Entity` (DO) 或 `Repository`。
|
|
21
|
+
- 识别核心数据库表名(如 `@TableName` 注解)。
|
|
22
|
+
- 关联表与业务对象(如 `es_order` -> 订单聚合根)。
|
|
23
|
+
|
|
24
|
+
3. **沉淀复用逻辑 (Extract Logic)**:
|
|
25
|
+
- 基于代码引用关系,总结“在什么场景下必须调用此模块”。
|
|
26
|
+
- 提取模块间的依赖关系。
|
|
27
|
+
|
|
28
|
+
4. **定义架构红线 (Define Guardrails)**:
|
|
29
|
+
- 根据模块职责,明确“禁止做什么”和“必须做什么”。
|
|
30
|
+
|
|
31
|
+
5. **生成文档 (Generate Artifact)**:
|
|
32
|
+
- 输出到 `.6A-spec/biz/functional-capability-Map.md`。
|
|
33
|
+
- **格式要求**: 必须精简,移除通用废话,只保留核心干货。
|
|
34
|
+
|
|
35
|
+
## Artifact (产物)
|
|
36
|
+
**输出文件**: `.6A-spec/biz/functional-capability-Map.md`
|
|
37
|
+
**内容模板**:
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
# 项目功能能力地图 (Functional Capability Map)
|
|
41
|
+
> **版本**: [Version] | **更新时间**: [Date]
|
|
42
|
+
|
|
43
|
+
## 📋 架构总览
|
|
44
|
+
[简述核心模块划分]
|
|
45
|
+
|
|
46
|
+
## 🧩 模块一:[模块名]
|
|
47
|
+
### 核心能力 (Capabilities)
|
|
48
|
+
- `[Facade/Controller名]`
|
|
49
|
+
- `[方法名]`: [解决的具体业务问题]
|
|
50
|
+
|
|
51
|
+
### 数据资产 (Schema Mapping)
|
|
52
|
+
| 表名 | 业务对象 | 说明 |
|
|
53
|
+
|-----|---------|------|
|
|
54
|
+
| [table_name] | [Entity] | [Description] |
|
|
55
|
+
|
|
56
|
+
### 复用场景指引 (Integration Guide)
|
|
57
|
+
- 场景:[描述] -> 请使用 `[接口名]`
|
|
58
|
+
|
|
59
|
+
### 架构红线 (Guardrails)
|
|
60
|
+
1. ❌ [禁止事项]
|
|
61
|
+
2. ✅ [强制事项]
|
|
62
|
+
|
|
63
|
+
[其他模块依此类推...]
|
|
64
|
+
|
|
65
|
+
## 📊 模块间依赖关系
|
|
66
|
+
[依赖树或描述]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Authority (权限)
|
|
70
|
+
- **读权限**: 全项目源码读取。
|
|
71
|
+
- **写权限**: 仅限更新 `.6A-spec/biz/functional-capability-Map.md`,禁止修改业务代码。
|
|
72
|
+
|
|
73
|
+
## Audit (审计)
|
|
74
|
+
- **完整性检查**: 确保核心业务模块(src目录下的所有模块)均已覆盖。
|
|
75
|
+
- **精简性检查**: 确保无冗余的通用描述(如“使用建议”、“附录”等)。
|
|
76
|
+
- **准确性检查**: 确保接口名和表名与源码一致。
|
|
@@ -13,7 +13,7 @@ alwaysApply: false
|
|
|
13
13
|
- 本阶段不允许设计接口、流程、事件、定时任务
|
|
14
14
|
|
|
15
15
|
## 规则:
|
|
16
|
-
1. 复用至上:必须严格检索 `./.
|
|
16
|
+
1. 复用至上:必须严格检索 `./.6A-spec/biz/functional-capability-Map.md`,任何能够利用现有表结构或现有模块(如基础数据、收缴、合同)承载的数据,严禁新设独立表
|
|
17
17
|
2. **领域驱动**:先有领域对象(Domain Object)及其关系,再有物理数据库表(Physical Table)
|
|
18
18
|
3. 若发现以下任一情况,必须中断并提问:
|
|
19
19
|
- 字段语义不清
|
|
@@ -23,7 +23,7 @@ alwaysApply: false
|
|
|
23
23
|
- **必需输入**:PRD(产品需求文档)或功能需求描述
|
|
24
24
|
- **可选输入**:已确认的领域边界与核心实体语义(可以是markdown文档)
|
|
25
25
|
- **系统自带知识库**:
|
|
26
|
-
- 现有能力地图:`./.
|
|
26
|
+
- 现有能力地图:`./.6A-spec/biz/functional-capability-Map.md`
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
## 第一阶段:资产审计与策略定义 (Asset Audit)
|
|
@@ -33,7 +33,7 @@ alwaysApply: false
|
|
|
33
33
|
你需要用户提供:
|
|
34
34
|
- **必需输入 1**:PRD 文档或功能需求描述
|
|
35
35
|
- **必需输入 2**:数据模型设计文档:`./.docs/{功能名称}/MODEL_{功能名称}.md`
|
|
36
|
-
- **参考文档**:`./.
|
|
36
|
+
- **参考文档**:`./.6A-spec/biz/functional-capability-Map.md`(能力地图)
|
|
37
37
|
|
|
38
38
|
## 第一阶段:需求完备性检查(Gatekeeping,必须先做)
|
|
39
39
|
请逐项核对并输出结论(Y/N):
|
package/lib/installer.js
CHANGED
|
@@ -51,11 +51,31 @@ class Installer {
|
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
// 递归删除目录
|
|
55
|
+
removeDir(dirPath) {
|
|
56
|
+
if (fs.existsSync(dirPath)) {
|
|
57
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
58
|
+
for (const entry of entries) {
|
|
59
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
60
|
+
if (entry.isDirectory()) {
|
|
61
|
+
this.removeDir(fullPath);
|
|
62
|
+
} else {
|
|
63
|
+
fs.unlinkSync(fullPath);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
fs.rmdirSync(dirPath);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
54
70
|
// 递归复制目录(完全覆盖模式)
|
|
55
71
|
copyDir(src, dest) {
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
// 如果目标目录存在,先完全删除(确保完全覆盖)
|
|
73
|
+
if (fs.existsSync(dest)) {
|
|
74
|
+
this.removeDir(dest);
|
|
58
75
|
}
|
|
76
|
+
|
|
77
|
+
// 重新创建目录并复制
|
|
78
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
59
79
|
|
|
60
80
|
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
61
81
|
|
package/package.json
CHANGED