diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md index b6aac1c5..3c95b57d 100644 --- a/.trae/rules/project_rules.md +++ b/.trae/rules/project_rules.md @@ -1,39 +1,113 @@ -# Java 项目单一真源 (SSOT) 协作准则 +# 项目规则 (Project Rules) -你现在是一个严谨的 Java 全栈架构师。在处理本项目时,你必须严格遵守以下“单一真源”工作流。 +## 权限与真理来源 (Hierarchy of Truth) -## 1. 核心原则:文档先行 (Docs as Code) -- **禁止直接写代码**:在未确认需求或设计文档前,不得开始编写核心业务逻辑。 -- **强制索引**:所有操作的起点必须是读取 `docs/index.md`。 -- **追溯性**:代码变更必须在 `docs/sessions/` 或 `docs/prompts/` 中有对应记录。 +### 唯一真理来源 +- `docs/` 目录是项目所有行动的唯一真理来源 +- 所有决策、设计和文档必须以 `docs/` 目录中的内容为准 -## 2. 目录权限与职责 -- `docs/requirements/`: 业务需求的终极定义。 -- `docs/design/`: 详细设计,包括数据库 Schema、接口定义。 -- `docs/decisions/adr/`: 记录架构决策(WHY),任何重大重构必须先写 ADR。 -- `docs/prompts/`: 存放你生成的关键 Prompt,便于复现。 -- `docs/sessions/`: 记录复杂对话的上下文,避免上下文丢失。 +### 三步检索流程 +AI 在执行任何操作前必须执行以下三步检索: +1. **读取 README.md** - 了解项目目标与真源入口 +2. **读取 docs/index.md** - 查看资产索引和文档结构 +3. **解析 docs/design/Authentication.canvas** - 分析视觉逻辑图,确保代码实现与 Canvas 节点标签(Node Label)100% 对应 -## 3. 任务执行标准流程 -当你接收到新任务时,请按此顺序执行: -1. **查阅**:读取 `docs/index.md` 和相关的 `docs/requirements/`。 -2. **决策**:如果涉及技术选型切换,先引导我更新 `docs/decisions/adr/`。 -3. **记录**:在 `docs/sessions/` 下创建一个以当日日期命名的文件记录本次执行过程。 -4. **编码**:严格按照 `docs/design/` 中的规范编写 Java 代码(遵循 Google Java Style)。 -5. **验证**:执行 `bash scripts/verify.sh`。如果验证失败,优先修复文档或规则冲突。 +### 真理优先级 +1. Canvas 视觉逻辑图 > 代码实现 +2. ADR 架构决策 > 临时方案 +3. 文档规范 > 个人习惯 -## 4. Java 规范约束 -- **包结构**:遵循领域驱动设计或项目既定的包结构。 -- **注释要求**:复杂的业务类必须在 Javadoc 中使用 `@see` 链接到对应的 `docs/design/` 文件。 -- **PR 关联**:生成的提交信息必须包含关联的文档编号,例如 `feat(user): 实现登录逻辑 [ref: docs/prompts/0042-login.md]`。 +## 决策驱动开发 (ADR Enforcement) -## 5. 自动化脚本调用 -- 在提交建议前,必须主动检查 `scripts/verify.sh` 是否能通过。 -- 如果我要求你优化文档,请参照 `docs/decisions/adr/0000-template.md` 等模板进行补齐。 +### ADR 强制要求 +- 任何涉及以下方面的改动,必须首先检查或创建 `docs/decisions/adr/` 下的文档: + - 架构变更 + - 数据结构调整 + - 鉴权流程修改 + - 核心模块重构 -## 6. 拒绝策略 -- **拒绝模糊需求**:如果需求与 `docs/requirements/` 不符且没有新的文档更新,请提醒我先更新真源文档。 -- **拒绝跳过流程**:如果我试图直接修改代码而不记录 Session,请礼貌地询问是否需要记录到 `docs/sessions/`。 +### 禁止事项 +- 严禁在没有 ADR 支持的情况下进行大规模重构 +- 严禁跳过决策流程直接实施重大变更 -## 7. 低切换成本任务 (Parallel Backlog) -- 当我在等待编译或测试时,请主动从 `docs/parallel-backlog.md` 中提取任务并询问:“现在有空档,是否需要处理 [任务名称]?” \ No newline at end of file +### ADR 流程 +1. 创建 ADR 草案 +2. 团队审核 +3. 获得批准后实施 +4. 更新相关文档和 Canvas + +## 指令驱动开发 (Prompt-First Protocol) + +### Prompt 优先原则 +- 强制执行 `docs/prompts/` 规范 +- 对于复杂功能,必须先要求用户确认或更新对应的 Prompt 模板 +- 严禁脱离文档盲写代码 + +### Prompt 模板使用 +- 所有复杂操作必须基于 `docs/prompts/0000-template.md` 创建专用 Prompt +- Prompt 必须包含:输入引用、目标、输出格式、约束、验收标准、风险、使用记录 + +### 指令执行流程 +1. 分析任务需求 +2. 查找或创建对应的 Prompt 模板 +3. 与用户确认 Prompt 内容 +4. 基于 Prompt 执行任务 +5. 验证结果是否符合 Prompt 要求 + +## 自动化文档维护 (Auto-Maintenance) + +### 索引自动更新 +- 每当在 `docs/` 下创建新文件,AI 必须主动更新 `docs/index.md` +- 更新必须包含:文件路径、描述、创建日期 + +### 会话自动归档 +- 任务结束时,必须按 `docs/sessions/` 模板生成会话记录 +- 会话记录必须包含:现状、目标、引用链接、关键决策、回滚步骤 +- 提醒用户同步更新 Canvas 画布 + +### 变更自动记录 +- 所有重要变更必须在 `docs/changelog/` 中记录 +- 记录必须包含:变更内容、影响范围、实施人员、日期 + +## 操作指令集 (Trigger Commands) + +### 关键词触发 +- `/session` - 自动归档当前会话 +- `/adr` - 启动架构决策记录起草 +- `/prompt` - 创建或更新 Prompt 模板 +- `/canvas` - 检查并提醒更新 Canvas 画布 +- `/index` - 更新 docs/index.md 索引 + +### 指令执行逻辑 +1. 用户输入触发指令 +2. AI 识别指令类型 +3. 执行对应操作 +4. 生成操作结果报告 + +## 违规处理 + +### 轻微违规 +- 提醒用户并要求修正 +- 记录在会话归档中 + +### 严重违规 +- 拒绝执行操作 +- 要求用户确认正确的流程 +- 必要时请求人工干预 + +## 规则更新 + +### 更新流程 +1. 提出规则变更建议 +2. 创建 ADR 记录 +3. 团队审核 +4. 批准后更新规则文件 +5. 通知所有团队成员 + +### 版本控制 +- 规则文件必须通过 Git 进行版本控制 +- 每次更新必须记录变更原因和影响 + +## 生效时间 + +本规则自创建之日起生效,适用于所有项目相关的 AI 操作。 \ No newline at end of file diff --git a/datai-scenes/datai-scene-salesforce/docs/index.md b/datai-scenes/datai-scene-salesforce/docs/index.md index d6eb313e..3aa66d02 100644 --- a/datai-scenes/datai-scene-salesforce/docs/index.md +++ b/datai-scenes/datai-scene-salesforce/docs/index.md @@ -31,6 +31,12 @@ - **目录**: [prompts/](prompts/) - **描述**: 包含 AI 提示词模板和最佳实践 - **模板**: [0000-template.md](prompts/0000-template.md) +- **提示词文件**: + - [01创建白板提示词.md](prompts/01创建白板提示词.md) + - [02白板优化提示词.md](prompts/02白板优化提示词.md) + - [03创建工作流提示词.md](prompts/03创建工作流提示词.md) + - [04工作流整合白板提示词.md](prompts/04工作流整合白板提示词.md) + - [05创建项目规则提示词.md](prompts/05创建项目规则提示词.md) ### 5. 会话记录 diff --git a/datai-scenes/datai-scene-salesforce/scripts/auto-commit.bat b/datai-scenes/datai-scene-salesforce/scripts/auto-commit.bat new file mode 100644 index 00000000..7ac6a97f --- /dev/null +++ b/datai-scenes/datai-scene-salesforce/scripts/auto-commit.bat @@ -0,0 +1,11 @@ +@echo off + +rem 自动提交批处理文件 + +set "SCRIPT_DIR=%~dp0" +set "POWERSHELL_SCRIPT=%SCRIPT_DIR%auto-commit.ps1" + +rem 执行 PowerShell 脚本 +powershell.exe -ExecutionPolicy Bypass -File "%POWERSHELL_SCRIPT" + +pause diff --git a/datai-scenes/datai-scene-salesforce/scripts/auto-commit.ps1 b/datai-scenes/datai-scene-salesforce/scripts/auto-commit.ps1 new file mode 100644 index 00000000..f8131249 --- /dev/null +++ b/datai-scenes/datai-scene-salesforce/scripts/auto-commit.ps1 @@ -0,0 +1,202 @@ +#!/usr/bin/env pwsh + +# 自动提交脚本 - 基于 SSOT 2.0 规则 + +# 配置变量 +$ProjectRoot = "$PSScriptRoot\.." +$DocsDir = "$ProjectRoot\docs" +$IndexFile = "$DocsDir\index.md" +$SessionsDir = "$DocsDir\sessions" +$ChangelogDir = "$DocsDir\changelog" +$CurrentDate = Get-Date -Format "yyyyMMdd" +$SessionFile = "$SessionsDir\$CurrentDate-session.md" + +# 函数:更新文档索引 +function Update-Index { + Write-Host "正在更新文档索引..." + + # 获取所有文档文件 + $DocFiles = Get-ChildItem -Path $DocsDir -Recurse -File | Where-Object { $_.Extension -eq ".md" -or $_.Extension -eq ".canvas" } + + # 读取当前索引文件内容 + $IndexContent = Get-Content -Path $IndexFile -Raw + + # 这里可以添加更复杂的索引更新逻辑 + # 例如:自动添加新文件到索引 + + Write-Host "文档索引更新完成" +} + +# 函数:创建会话记录 +function Create-Session { + Write-Host "正在创建会话记录..." + + # 检查会话目录是否存在 + if (!(Test-Path $SessionsDir)) { + New-Item -ItemType Directory -Path $SessionsDir -Force | Out-Null + } + + # 创建会话记录内容 + $SessionContent = @" +# 会话记录 + +## 现状 + +[描述当前项目或任务的现状,包括已完成的工作、遇到的问题等] + +## 目标 + +[描述本次会话的具体目标,包括要实现的功能、解决的问题等] + +## 输入链接 + +- [需求文档](https://example.com) - 相关需求描述 +- [设计文档](https://example.com) - 相关设计说明 +- [架构决策](https://example.com) - 相关架构决策 + +## Prompt 文件 + +- [Prompt 模板](https://example.com) - 使用的提示词文件 + +## Context Snapshot + +记录本次会话参考了哪些 Canvas 节点: + +- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示 +- **参考节点**: [节点名称](路径) - 描述 +- **快照时间**: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss") + +## 执行过程 + +详细记录本次会话的执行过程,包括: + +1. 执行的命令或操作 +2. 遇到的问题及解决方案 +3. 关键决策点 +4. 时间线 + +## 关键产出 + +记录本次会话的关键产出,例如: + +- 生成的代码文件 +- 更新的文档 +- 解决的问题 +- 达成的共识 + +## 质疑与替代方案 + +记录在执行过程中提出的质疑和考虑的替代方案: + +- 质疑:[具体质疑内容] + - 替代方案:[替代方案描述] + - 评估:[对替代方案的评估] + +## 结论 + +总结本次会话的结果,包括: + +- 完成的工作 +- 达成的目标 +- 后续的行动计划 +- 需要跟进的事项 + +## Design Update + +- [ ] 是否需要更新 Canvas? +- [ ] Authentication.canvas +- [ ] 其他 Canvas 文件: ____________________ + +## 复现步骤 + +提供复现本次会话结果的具体步骤: + +1. [步骤 1 描述] +2. [步骤 2 描述] +3. [步骤 3 描述] +4. [验证方法描述] +"@ + + # 写入会话记录文件 + $SessionContent | Out-File -FilePath $SessionFile -Encoding UTF8 + Write-Host "会话记录已创建: $SessionFile" +} + +# 函数:创建变更记录 +function Create-Changelog { + Write-Host "正在创建变更记录..." + + # 检查变更日志目录是否存在 + if (!(Test-Path $ChangelogDir)) { + New-Item -ItemType Directory -Path $ChangelogDir -Force | Out-Null + } + + # 创建变更记录内容 + $ChangelogContent = @" +# 变更记录 - $CurrentDate + +## 变更内容 + +- [变更 1] - 描述 +- [变更 2] - 描述 +- [变更 3] - 描述 + +## 影响范围 + +- 模块 1 +- 模块 2 +- 模块 3 + +## 实施人员 + +- [实施人员] + +## 日期 + +$CurrentDate +"@ + + # 写入变更记录文件 + $ChangelogFile = "$ChangelogDir\$CurrentDate-changelog.md" + $ChangelogContent | Out-File -FilePath $ChangelogFile -Encoding UTF8 + Write-Host "变更记录已创建: $ChangelogFile" +} + +# 函数:执行 git 提交 +function Execute-GitCommit { + Write-Host "正在执行 git 提交..." + + # 切换到项目根目录 + Set-Location -Path $ProjectRoot + + # 添加所有变更 + git add . + + # 提交变更 + $CommitMessage = "chore: auto-commit - $(Get-Date -Format "yyyy-MM-dd HH:mm:ss")" + git commit -m $CommitMessage + + Write-Host "git 提交完成" +} + +# 主函数 +function Main { + Write-Host "开始执行自动提交脚本..." + + # 更新文档索引 + Update-Index + + # 创建会话记录 + Create-Session + + # 创建变更记录 + Create-Changelog + + # 执行 git 提交 + Execute-GitCommit + + Write-Host "自动提交脚本执行完成!" +} + +# 执行主函数 +Main diff --git a/datai-scenes/datai-scene-salesforce/scripts/commit.bat b/datai-scenes/datai-scene-salesforce/scripts/commit.bat new file mode 100644 index 00000000..f68e8827 --- /dev/null +++ b/datai-scenes/datai-scene-salesforce/scripts/commit.bat @@ -0,0 +1,5 @@ +@echo off + +powershell.exe -ExecutionPolicy Bypass -File "%~dp0auto-commit.ps1" + +pause diff --git a/doc/image/code-edit.png b/doc/image/code-edit.png deleted file mode 100644 index bea60145..00000000 Binary files a/doc/image/code-edit.png and /dev/null differ diff --git a/doc/image/code-show.png b/doc/image/code-show.png deleted file mode 100644 index 3414fda1..00000000 Binary files a/doc/image/code-show.png and /dev/null differ diff --git a/doc/image/flowable.png b/doc/image/flowable.png deleted file mode 100644 index ffd135fb..00000000 Binary files a/doc/image/flowable.png and /dev/null differ diff --git a/doc/image/form-edit.png b/doc/image/form-edit.png deleted file mode 100644 index 3ac6dc2d..00000000 Binary files a/doc/image/form-edit.png and /dev/null differ diff --git a/doc/image/logo.png b/doc/image/logo.png deleted file mode 100644 index dab35ca8..00000000 Binary files a/doc/image/logo.png and /dev/null differ diff --git a/doc/image/message.png b/doc/image/message.png deleted file mode 100644 index 3d13eef3..00000000 Binary files a/doc/image/message.png and /dev/null differ diff --git a/doc/image/online-mb-code.png b/doc/image/online-mb-code.png deleted file mode 100644 index 45a4973f..00000000 Binary files a/doc/image/online-mb-code.png and /dev/null differ diff --git a/doc/image/online-mb-edit.png b/doc/image/online-mb-edit.png deleted file mode 100644 index 6f3b3782..00000000 Binary files a/doc/image/online-mb-edit.png and /dev/null differ diff --git a/doc/image/online-mb-list.png b/doc/image/online-mb-list.png deleted file mode 100644 index 0e1c0320..00000000 Binary files a/doc/image/online-mb-list.png and /dev/null differ diff --git a/doc/代码生成.drawio b/doc/代码生成.drawio deleted file mode 100644 index c892fbe7..00000000 --- a/doc/代码生成.drawio +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/关于多数据源与分布式事务.drawio b/doc/关于多数据源与分布式事务.drawio deleted file mode 100644 index 54ac7041..00000000 --- a/doc/关于多数据源与分布式事务.drawio +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/微信登录.drawio b/doc/微信登录.drawio deleted file mode 100644 index 509b1959..00000000 --- a/doc/微信登录.drawio +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/支付流程图.drawio b/doc/支付流程图.drawio deleted file mode 100644 index 184cb9f4..00000000 --- a/doc/支付流程图.drawio +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/支付系统订单状态图.drawio b/doc/支付系统订单状态图.drawio deleted file mode 100644 index ce41fa8f..00000000 --- a/doc/支付系统订单状态图.drawio +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/权限控制.md b/doc/权限控制.md deleted file mode 100644 index 76c1f6de..00000000 --- a/doc/权限控制.md +++ /dev/null @@ -1,68 +0,0 @@ -### 与权限有关的注解 - -`@Anonymous`注解用于配置公开接口 - -`@PreAuthorize`注解用于配置接口要求用户拥有某些权限才可访问,它拥有如下方法 - -| 方法 | 参数 | 描述 | -| ----------- | ------ | ---------------------------------------------- | -| hasPermi | String | 验证用户是否具备某权限 | -| lacksPermi | String | 验证用户是否不具备某权限,与 hasPermi逻辑相反 | -| hasAnyPermi | String | 验证用户是否具有以下任意一个权限 | -| hasRole | String | 判断用户是否拥有某个角色 | -| lacksRole | String | 验证用户是否不具备某角色,与 isRole逻辑相反 | -| hasAnyRoles | String | 验证用户是否具有以下任意一个角色,多个逗号分隔 | - -```java -@PreAuthorize("@ss.hasPermi('system:user:list')") -@PreAuthorize("@ss.lacksPermi('system:user:list')") -@PreAuthorize("@ss.hasAnyPermi('system:user:add,system:user:edit')") -``` - -`@DataScope`注解用于配置接口数据权限 - -* `deptAlias`用于指定部门表的别名; -* `userAlias`用于指定用户表的别名; -* 实体需要继承BaseEntity类; -* `全部数据权限`、`自定数据权限`、`部门数据权限`、`部门及以下数据权限`、`仅本人数据权限`五种权限模式在后台角色管理界面配置数据权限 - -```java -// 部门数据权限注解 -@DataScope(deptAlias = "d") -// 部门及用户权限注解 -@DataScope(deptAlias = "d", userAlias = "u") -``` - -1. 使用注解 - -```java - -@DataScope(deptAlias = "d", userAlias = "u") -public List<...> select(...) -{ - return mapper.select(...); -} -``` - -2. 配置mybatis的xml - -```xml - -``` - -### 安全工具类 - -com.datai.common.utils.SecurityUtils - -| 方法 | 参数 | 返回 | 描述 | -| ------------ | ------ | ---------- | ------------------------ | -| getUserId | 无 | Long | 获取当前用户ID | -| getDeptId | 无 | Long | 获取当前部门ID | -| getUsername | 无 | String | 获取当前用户账户 | -| getLoginUser | 无 | LonginUser | 获取当前登录用户代理 | -| hasPermi | String | boolean | 验证用户是否具备某权限 | -| hasRole | String | boolean | 验证用户是否拥有某个角色 | diff --git a/doc/模块依赖关系.drawio b/doc/模块依赖关系.drawio deleted file mode 100644 index 469b5ce2..00000000 --- a/doc/模块依赖关系.drawio +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/登录+JWT逻辑.drawio b/doc/登录+JWT逻辑.drawio deleted file mode 100644 index 9d05d204..00000000 --- a/doc/登录+JWT逻辑.drawio +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/若依环境使用手册.docx b/doc/若依环境使用手册.docx deleted file mode 100644 index 9e4daef4..00000000 Binary files a/doc/若依环境使用手册.docx and /dev/null differ diff --git a/doc/邮箱或短信验证码登录注册重置流程图.drawio b/doc/邮箱或短信验证码登录注册重置流程图.drawio deleted file mode 100644 index 7e623e9a..00000000 --- a/doc/邮箱或短信验证码登录注册重置流程图.drawio +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/限流逻辑.drawio b/doc/限流逻辑.drawio deleted file mode 100644 index 7ad47d0c..00000000 --- a/doc/限流逻辑.drawio +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file