6a-spec-install 1.0.1-dev.1 → 1.0.1-dev.11

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.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 6A-import-model-table workflow
3
+ alwaysApply: false
4
+ ---
5
+ 1. Immediate response upon activation: 6A-import-model-table workflow has been activated
6
+ 2. Read file: `.cursor/rules/6A/6A_import_model_table_sop.md`
7
+ 3. Strictly follow the "Import Model Table SOP" defined in that file
8
+ 4. Execute the python script to import entities
9
+
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Init Project Artifacts (Functional Map & Event List)
3
+ alwaysApply: false
4
+ ---
5
+ Immediate response upon activation: Project Artifacts Initialization workflow has been activated.
6
+
7
+ Phase 1: Functional Capability Map
8
+ 1. Read file: `.cursor/rules/6A/6A_init_map_sop.md`
9
+ 2. Strictly follow the "Init Functional Capability Map SOP" defined in that file.
10
+ 3. Execute the codebase scan and update the artifact at `.6A-spec/biz/functional-capability-Map.md`.
11
+
12
+ Phase 2: Event List
13
+ 1. Read file: `.cursor/rules/6A/6A_init_event_list_sop.md`
14
+ 2. Strictly follow the "Event List Generation SOP" defined in that file.
15
+ 3. Execute the codebase scan and update the artifact at `.6A-spec/biz/event-list.md`.
@@ -3,6 +3,10 @@ description: 6A-model workflow
3
3
  alwaysApply: false
4
4
  ---
5
5
  1. Immediate response upon activation: 6A-model workflow has been activated
6
- 2. Read file: `.cursor/rules/6A/6A_model_sop.md`
7
- 3. Strictly follow the "Domain modeling and database design Architecture SOP" defined in that file
8
- 4. Output the Domain model and table design
6
+ 2. **Context Restriction**:
7
+ - Do NOT perform `codebase_search`.
8
+ - Do NOT read any files unless they are explicitly provided by the user (via '@') or explicitly listed in the SOP steps.
9
+ - Stop and ask the user if you think you need more information.
10
+ 3. Read file: `.cursor/rules/6A/6A_model_sop.md`
11
+ 4. Strictly follow the "Domain modeling and database design Architecture SOP" defined in that file
12
+ 5. Output the Domain model and table design
@@ -0,0 +1,96 @@
1
+ ---
2
+ description: 模型导入标准操作流程 (Import Model Table SOP)
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # 6A-import-model-table: 模型导入标准操作流程 (Import Model Table SOP)
7
+
8
+ ## 角色
9
+ 你现在的角色是【DevOps 工程师 + 系统集成专家】,负责将设计好的 Markdown 数据模型导入到系统中。你需要精确地处理参数依赖,确保数据的一致性。
10
+
11
+ ## 目标
12
+ - 解析用户提供的 Markdown 模型文件
13
+ - 自动获取或请求必要的元数据参数 (FunctionGUID)
14
+ - 调用 `create_entities_from_markdown.py` 脚本完成导入
15
+ - 智能分析执行结果并给出行动建议
16
+
17
+ ## 规则
18
+ 1. **参数完整性**:必须集齐 `Markdown文件路径`、`functionCode`、`application`、`functionGUID` 四个参数才能执行脚本。
19
+ 2. **GUID 严谨性**:`functionGUID` 必须优先通过查找 XML 文件获取。**绝对禁止** 臆造或生成 GUID。如果找不到,必须暂停并询问用户。
20
+ 3. **Application 解析**:`application` 必须取 `functionCode` 的前 4 位。
21
+ 4. **路径准确性**:脚本位于 `.cursor/script/create_entities_from_markdown.py`。
22
+
23
+ ## 操作流程 (Workflow)
24
+
25
+ ### 第一阶段:参数获取与验证 (Parameter Validation)
26
+ 1. **获取 Markdown 文件路径**
27
+ - 如果用户未提供,请求用户提供。
28
+ 2. **获取 FunctionCode**
29
+ - 如果用户未提供,请求用户提供 (例如:890601)。
30
+ 3. **解析 Application**
31
+ - 截取 `functionCode` 的前 4 位作为 `application` (例如:8906)。
32
+
33
+ ### 第二阶段:元数据查找 (Metadata Lookup)
34
+ 1. **定位 XML 目录**
35
+ - 目标目录:`data/metadata/_metadata/MyApplication`
36
+ 2. **执行查找**
37
+ - **遍历文件**:遍历该目录下的所有 XML 格式文件(通常后缀为 `.config` 或 `.xml`)。
38
+ - **解析结构**:读取文件内容,解析 XML 结构。
39
+ - 根节点:`<myApplication>`
40
+ - 子节点:`<myFunctions>` -> `<function>`列表
41
+ - **匹配逻辑**:
42
+ - 在 `<myFunctions>` 下的 `<function>` 节点列表中查找。
43
+ - 匹配条件:`functionCode` 属性等于用户提供的 FunctionCode。
44
+ - 获取目标:匹配节点的 `functionGuid` 属性。
45
+ - *XML 示例*:
46
+ ```xml
47
+ <myApplication ...>
48
+ <myFunctions>
49
+ <function functionGuid="Found-GUID-Here" functionCode="TargetCode" ... />
50
+ </myFunctions>
51
+ </myApplication>
52
+ ```
53
+ 3. **处理查找结果**
54
+ - **Case A: 找到 GUID** -> 停止搜索,使用找到的 GUID 继续下一步。
55
+ - **Case B: 未找到 GUID** -> 继续搜索下一个文件。
56
+ - **Case C: 所有文件均未找到** -> **停止流程**。明确告知用户:“在 `data/metadata/_metadata/MyApplication` 目录下未找到包含 FunctionCode `{functionCode}` 的定义。请提供正确的 FunctionGUID。” -> 等待用户输入 GUID。
57
+
58
+ ### 第三阶段:执行脚本 (Execution)
59
+ 构建并执行以下命令:
60
+ ```bash
61
+ python .cursor/script/create_entities_from_markdown.py {markdown_file_path} -a {application} -g {functionGUID}
62
+ ```
63
+ *(注意:确保使用脚本的绝对路径或相对于项目根目录的正确路径)*
64
+
65
+ ### 第四阶段:结果分析与处理 (Result Analysis)
66
+ 执行命令后,分析标准输出 (stdout) 和标准错误 (stderr):
67
+
68
+ 1. **Case: Cookie 未配置**
69
+ - **特征**:输出中包含 "cookie" 相关错误,或 "环境变量没有配置"。
70
+ - **行动**:提示用户:“检测到未配置 Cookie,请在环境变量或脚本配置中设置 Cookie。”
71
+
72
+ 2. **Case: 会话过期**
73
+ - **特征**:输出中包含 "会话已过期"、"session expired" 或 "login required"。
74
+ - **行动**:提示用户:“当前会话已过期,请重新获取并配置 Cookie。”
75
+
76
+ 3. **Case: 表已存在**
77
+ - **特征**:输出中包含 "表已存在"、"already exists"。
78
+ - **行动**:告知用户导入完成,忽略该提示(这是正常现象)。
79
+
80
+ 4. **Case: 其他异常**
81
+ - **特征**:Python 报错、文件未找到等。
82
+ - **行动**:
83
+ - 如果是参数错误,自动修正参数并重试(如果可能)。
84
+ - 如果是脚本错误,输出完整错误栈,并尝试分析原因。
85
+
86
+ ## 示例对话
87
+
88
+ **User:** `6A-import-model-table docs/MODEL_Test.md 890601`
89
+
90
+ **Assistant:**
91
+ 1. 解析 Application: `8906`
92
+ 2. 搜索 GUID: 在 `data/metadata/_metadata/8906/` 中搜索 `890601`...
93
+ 3. 找到 GUID: `12345678-1234-1234-1234-1234567890ab`
94
+ 4. 执行命令: `python .cursor/script/create_entities_from_markdown.py docs/MODEL_Test.md -a 8906 -g 12345678-1234-1234-1234-1234567890ab`
95
+ 5. 反馈结果。
96
+
@@ -0,0 +1,62 @@
1
+ ---
2
+ description: 事件清单生成标准操作流程 (Event List Generation SOP)
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # 6A-event-list: 事件清单生成标准操作流程 (Event List Generation SOP)
7
+
8
+ ## 1. 目标
9
+ 扫描全项目中带有 `com.mysoft.framework.event.annotation.Event` 注解的 Java 类,生成一份详细的事件清单文档 `.6A-spec/biz/event-list.md`。
10
+
11
+ ## 2. 扫描与识别 (Scan & Identify)
12
+ 1. **搜索范围**: 在整个 Workspace 中搜索引用了 `com.mysoft.framework.event.annotation.Event` 的 Java 文件。
13
+ 2. **过滤条件**:
14
+ - 必须是类定义(Class definition)。
15
+ - 类必须被 `@Event` 注解标记。
16
+ - 忽略测试代码(`src/test` 目录下的文件)。
17
+ 3. **模块归类**: 根据文件路径识别所属模块(例如 `yymh-ticket`, `yymh-portal` 等)。
18
+
19
+ ## 3. 元数据提取 (Metadata Extraction)
20
+ 对每个识别出的事件类,提取以下核心信息:
21
+ 1. **基本信息**: 类名、包名、文件绝对路径。
22
+ 2. **事件名称与描述**:
23
+ - 优先提取 `@Event` 注解中的 `name` 或 `description` 属性。
24
+ - 其次提取类的 JavaDoc 注释(第一行作为名称,后续作为描述)。
25
+ - 若均无,使用类名作为名称。
26
+ 3. **继承关系**: 识别父类(如 `BaseEvent`, `BaseRentalEvent` 等)。
27
+ 4. **字段分析**:
28
+ - 提取所有字段的名称和类型。
29
+ - **字段来源分析**: 区分字段是定义在当前类中,还是继承自父类。
30
+ - *注意*: 如果无法精确分析父类字段,将来源标记为父类类名。
31
+
32
+ ## 4. 格式化与输出 (Format & Output)
33
+ 1. **目录检查**: 确保输出目录 `.6A-spec/biz` 存在,不存在则创建。
34
+ 2. **文档结构**:
35
+ - **Header**: 包含“项目事件清单”标题和统计信息(总事件数、模块数、扫描范围)。
36
+ - **TOC**: 按模块名生成的目录索引。
37
+ - **Content**: 按模块分组,详细列出每个事件的卡片。
38
+ 3. **事件卡片模板**:
39
+
40
+ ```markdown
41
+ ### {ClassName}
42
+
43
+ **事件名称**: {EventName}
44
+
45
+ **事件描述**: {Description}
46
+
47
+ **包名**: `{PackageName}`
48
+
49
+ **继承关系**: 继承自 `{ParentClassName}`
50
+
51
+ **事件体字段**:
52
+
53
+ | 字段名 | 字段类型 | 字段来源 |
54
+ |--------|----------|----------|
55
+ | {fieldName} | {fieldType} | {sourceClass} |
56
+ ...
57
+
58
+ **文件路径**: `{FilePath}`
59
+
60
+ ---
61
+ ```
62
+
@@ -0,0 +1,79 @@
1
+ ---
2
+ description: 生成或更新项目功能能力地图 (Functional Capability Map) 的 6A SOP
3
+ alwaysApply: false
4
+ ---
5
+ # 生成或更新项目功能能力地图 (Functional Capability Map) 的 6A SOP
6
+
7
+ ## Aim (目标)
8
+ 生成一份精简、准确的面向 AI 设计者的《项目功能能力地图》,明确系统核心能力、数据资产与复用规则,辅助后续设计与开发。
9
+
10
+ ## Actor (执行者)
11
+ - **角色**: 资深架构师 & 领域建模专家
12
+ - **工具**: Cursor AI, codebase_search, read_file
13
+
14
+ ## Action (动作)
15
+ 执行以下步骤扫描源码并生成文档:
16
+
17
+ 1. **识别 Facade 层 (Identify Facades)**:
18
+ - 扫描 `*-interfaces` 模块或 Controller 层。
19
+ - 提取所有以 `Facade` 结尾的接口或核心 `Controller`。
20
+ - 分析其核心方法 (Method)、入参 (Input) 及业务意图 (Intent)。
21
+
22
+ 2. **映射数据模型 (Map Schema)**:
23
+ - 扫描 `*-service` 或 `*-model` 模块中的 `Entity` (DO) 或 `Repository`。
24
+ - 识别核心数据库表名(如 `@TableName` 注解)。
25
+ - 关联表与业务对象(如 `es_order` -> 订单聚合根)。
26
+
27
+ 3. **沉淀复用逻辑 (Extract Logic)**:
28
+ - 基于代码引用关系,总结“在什么场景下必须调用此模块”。
29
+ - 提取模块间的依赖关系。
30
+
31
+ 4. **定义架构红线 (Define Guardrails)**:
32
+ - 根据模块职责,明确“禁止做什么”和“必须做什么”。
33
+
34
+ 5. **生成文档 (Generate Artifact)**:
35
+ - 输出到 `.6A-spec/biz/functional-capability-Map.md`。
36
+ - **格式要求**: 必须精简,移除通用废话,只保留核心干货。
37
+
38
+ ## Artifact (产物)
39
+ **输出文件**: `.6A-spec/biz/functional-capability-Map.md`
40
+ **内容模板**:
41
+
42
+ ```markdown
43
+ # 项目功能能力地图 (Functional Capability Map)
44
+ > **版本**: [Version] | **更新时间**: [Date]
45
+
46
+ ## 📋 架构总览
47
+ [简述核心模块划分]
48
+
49
+ ## 🧩 模块一:[模块名]
50
+ ### 核心能力 (Capabilities)
51
+ - `[Facade/Controller名]`
52
+ - `[方法名]`: [解决的具体业务问题]
53
+
54
+ ### 数据资产 (Schema Mapping)
55
+ | 表名 | 业务对象 | 说明 |
56
+ |-----|---------|------|
57
+ | [table_name] | [Entity] | [Description] |
58
+
59
+ ### 复用场景指引 (Integration Guide)
60
+ - 场景:[描述] -> 请使用 `[接口名]`
61
+
62
+ ### 架构红线 (Guardrails)
63
+ 1. ❌ [禁止事项]
64
+ 2. ✅ [强制事项]
65
+
66
+ [其他模块依此类推...]
67
+
68
+ ## 📊 模块间依赖关系
69
+ [依赖树或描述]
70
+ ```
71
+
72
+ ## Authority (权限)
73
+ - **读权限**: 全项目源码读取。
74
+ - **写权限**: 仅限更新 `.6A-spec/biz/functional-capability-Map.md`,禁止修改业务代码。
75
+
76
+ ## Audit (审计)
77
+ - **完整性检查**: 确保核心业务模块(src目录下的所有模块)均已覆盖。
78
+ - **精简性检查**: 确保无冗余的通用描述(如“使用建议”、“附录”等)。
79
+ - **准确性检查**: 确保接口名和表名与源码一致。
@@ -13,7 +13,7 @@ alwaysApply: false
13
13
  - 本阶段不允许设计接口、流程、事件、定时任务
14
14
 
15
15
  ## 规则:
16
- 1. 复用至上:必须严格检索 `./.cursor/rules/biz/functional-capability-Map.md`,任何能够利用现有表结构或现有模块(如基础数据、收缴、合同)承载的数据,严禁新设独立表
16
+ 1. 复用至上:必须严格检索 `./.6A-spec/biz/functional-capability-Map.md`,任何能够利用现有表结构或现有模块(如基础数据、收缴、合同)承载的数据,严禁新设独立表
17
17
  2. **领域驱动**:先有领域对象(Domain Object)及其关系,再有物理数据库表(Physical Table)
18
18
  3. 若发现以下任一情况,必须中断并提问:
19
19
  - 字段语义不清
@@ -23,13 +23,13 @@ alwaysApply: false
23
23
  - **必需输入**:PRD(产品需求文档)或功能需求描述
24
24
  - **可选输入**:已确认的领域边界与核心实体语义(可以是markdown文档)
25
25
  - **系统自带知识库**:
26
- - 现有能力地图:`./.cursor/rules/biz/functional-capability-Map.md`
26
+ - 现有能力地图:`./.6A-spec/biz/functional-capability-Map.md`
27
27
 
28
28
 
29
29
  ## 第一阶段:资产审计与策略定义 (Asset Audit)
30
30
  在进行具体建模前,请执行以下审计动作:
31
31
  - [ ] **资产对齐**:在《能力地图》中查找是否有相关联的业务领域。
32
- - [ ] **逻辑依赖**:识别新模型需要引用的外部主键(如 `contract_id`, `customer_id`)
32
+ - [ ] **逻辑依赖**:识别新模型需要引用的外部主键(如 `contractId`, `customerId`)
33
33
 
34
34
  ## 第二阶段:模型设计流程 (Design Process)
35
35
 
@@ -50,20 +50,40 @@ alwaysApply: false
50
50
  ### 第三步:数据库物理设计 (Physical Schema)
51
51
  根据领域模型,进行表设计,必须遵循以下格式规范:
52
52
  1. **命名与类型约束**:
53
- - 表的命名规则:前缀{业务系统名}_{表名}
54
- - 字段类型:主键,单行文本,多行文本,日期时间,整数,长整数,金额,面积,比率,汇率,附件,图片,唯一标识(关联外键的字段使用设个类型)
55
- - 字段命名规则:
56
- - 主键的命名:`{表名}+GUID`,主键的字段类型必须为:主键
57
- - 字段名称必须是驼峰命名风格
58
- - 如果字段类型是整型,并且表示状态,则必须说明状态值含义,并且字段的中文名称也加上说明,如:`状态:0-禁用,1-启用)`
59
- - 禁止项:创建时间,更新时间,创建人,修改人,版本号这些字段
53
+ - **表命名规则**:前缀`{业务系统名}_{表名}`,表名必须是驼峰命名,例如:`yymh_visitorInvitation`
54
+ - **字段命名规则**:
55
+ - 必须使用 **驼峰命名风格 (camelCase)**
56
+ - **主键命名**:必须遵循 `{表名}GUID` 格式。类型必须是:主键,例如:表名 `User` -> `userGUID`
57
+ - **外键命名**:字段名称必须以 `Id` 结尾,例如 `contractId`
58
+ - **状态字段**:若为整数类型且表示状态,必须在说明列中标注枚举值(如:`0-禁用, 1-启用`),字段中文名称也必须体现,如邀约状态: 0-未开始, 1-进行中, 2-已结束
59
+ - **项目ID字段**:项目ID字段,必须使用 `ProjGUID` 命名,类型必须是:唯一标识
60
+ - **字段类型严格约束**(必须从下表选择,**严禁**使用 `varchar`, `int`, `datetime` 等数据库物理类型):
61
+
62
+ | 类型名称 | 默认长度 | 约束说明 |
63
+ | :--- | :--- |:------------------------------------------|
64
+ | **主键** | -1 | **每表必有且仅有一个**,命名严格遵循 `{表名}GUID` |
65
+ | **唯一标识** | -1 | **外键字段必须选此类型**。也用于CompanyId、customerId等场景 |
66
+ | **单行文本** | 128 | 可选长度:16, 32, 64, 128, 512, 1024。适用于名称、编码等 |
67
+ | **多行文本** | -1 | 适用于备注、描述等大文本量字段 |
68
+ | **富文本** | -1 | 适用于公告、合同条款等带格式文本 |
69
+ | **日期与时间** | -1 | 日期或时间类型 |
70
+ | **整数** | -1 | 计数、状态值等 |
71
+ | **金额** | 18 | 货币相关,支持设置精度 |
72
+ | **面积** | 12 | 空间大小,支持设置精度 |
73
+ | **比率** | 29 | 百分比、税率、达成率等 |
74
+ | **汇率** | 18 | 货币兑换比率 |
75
+ | **附件** | -1 | 文件上传场景 |
76
+ | **图片** | -1 | 图片上传展示场景 |
77
+ | *长整数* | -1 | *不建议使用* |
78
+
79
+ - **禁止项**:模型设计阶段 **不要** 包含 `CreatedTime`, `ModifiedTime`, `CreatedBy`, `ModifiedBy`, `VersionNumber` 等系统自动维护字段
60
80
  2. 输出模板 (必须严格执行)
61
- A、标题:{序号}. {中文表名}({表英文名})
62
- B、表格展示:使用表格展示表的结构,表格的格式说明如下
63
- - 第一行,第一列:固定值:表中文名称,第二列:表中文名称
64
- - 第二行,第一列:固定值:表英文名称,第二列:表英文名称
65
- - 第三行,第一列:固定值:说明,第二列:说明
66
- - 第四行开始,第一列:字段中文名称,第二列:字段英文名称,第三列:字段类型,第四列:长度,第五列:是否必填(是、否),第六列:字段说明
81
+ A、标题:{序号}. {中文表名}({表英文名})
82
+ B、表格展示:使用表格展示表的结构,表格的格式说明如下
83
+ - 第一行,第一列:固定值:表中文名称,第二列:表中文名称
84
+ - 第二行,第一列:固定值:表英文名称,第二列:表英文名称
85
+ - 第三行,第一列:固定值:说明,第二列:说明
86
+ - 第四行开始,第一列:字段中文名称,第二列:字段英文名称,第三列:字段类型,第四列:长度,第五列:是否必填(是、否),第六列:字段说明
67
87
 
68
88
  ## 表设计表格展示示例
69
89
  ```
@@ -33,7 +33,7 @@ alwaysApply: false
33
33
  你需要用户提供:
34
34
  - **必需输入 1**:PRD 文档或功能需求描述
35
35
  - **必需输入 2**:数据模型设计文档:`./.docs/{功能名称}/MODEL_{功能名称}.md`
36
- - **参考文档**:`./.cursor/rules/biz/functional-capability-Map.md`(能力地图)
36
+ - **参考文档**:`./.6A-spec/biz/functional-capability-Map.md`(能力地图)
37
37
 
38
38
  ## 第一阶段:需求完备性检查(Gatekeeping,必须先做)
39
39
  请逐项核对并输出结论(Y/N):
@@ -71,7 +71,7 @@ alwaysApply: false
71
71
  - 扫表量级与分页/分片方案(如有)
72
72
 
73
73
  #### 事件订阅(Event Subscribers)
74
- - 订阅事件必须来自系统已有事件清单:`./.cursor/rules/biz/event-list.md`
74
+ - 订阅事件必须来自系统已有事件清单:`./.6A-spec/biz/event-list.md`
75
75
  - 必须同时写 **事件中文名 + 英文名**(如:自动出账提醒事件(AutoBillingRemindEvent))
76
76
 
77
77
  #### 后台任务(Async Background Job)
@@ -127,7 +127,7 @@ alwaysApply: false
127
127
  #### 3.3 事件订阅(Event Subscribers)
128
128
  你必须输出“事件订阅清单表格”,包含以下列:
129
129
  - **订阅者名称**
130
- - **订阅事件(中文名 / 英文名)**(事件必须来自:`./.cursor/rules/biz/event-list.md`)
130
+ - **订阅事件(中文名 / 英文名)**(事件必须来自:`./.6A-spec/biz/event-list.md`)
131
131
  - **执行逻辑**
132
132
  - **幂等设计**
133
133
  - **并发控制(如需要)**
@@ -30,8 +30,8 @@ alwaysApply: false
30
30
  ### 可选输入(用于补齐 TDD 未显式写清的信息)
31
31
  - 数据模型文档:`.docs/{功能名称}/MODEL_{功能名称}.md`
32
32
  - PRD:`.prd/{功能名称}-prd.md`
33
- - 事件清单:`./.cursor/rules/biz/event-list.md`(当涉及事件订阅/发布时)
34
- - 能力地图:`./.cursor/rules/biz/functional-capability-Map.md`(当涉及跨模块 Facade 依赖时)
33
+ - 事件清单:`./.6A-spec/biz/event-list.md`(当涉及事件订阅/发布时)
34
+ - 能力地图:`./.6A-spec/biz/functional-capability-Map.md`(当涉及跨模块 Facade 依赖时)
35
35
 
36
36
  ## 中断机制(必须执行)
37
37
  如果出现以下任一情况,必须停止画图并输出“提问清单”,等待人类补充: