chore: move workflow/repo/documents/config under assets

This commit is contained in:
tukuaiai
2026-02-27 01:46:51 +08:00
parent 4207c8fbb8
commit dffbb976e7
488 changed files with 203 additions and 196 deletions
@@ -0,0 +1,85 @@
# 01-架构分析提示词
> 从现有代码自动生成 Obsidian Canvas 架构白板
## 使用场景
- 接手新项目,快速理解架构
- 为现有项目建立可视化文档
- 准备 Code Review 或技术分享
## 提示词
```markdown
你是一个代码架构分析专家。请分析以下项目结构,生成 Obsidian Canvas 格式的架构白板。
## 输入
项目路径:{PROJECT_PATH}
分析粒度:{GRANULARITY} (file/class/service)
## 输出要求
生成符合 Obsidian Canvas JSON 格式的 .canvas 文件,包含:
1. **节点 (nodes)**
- 每个模块/文件/类作为一个节点
- 节点包含:id, type, x, y, width, height, text
- 按功能分区布局(如:API层左侧,数据层右侧)
2. **连线 (edges)**
- 表示模块间的依赖/调用关系
- 包含:id, fromNode, toNode, fromSide, toSide, label
- label 标注关系类型(调用/继承/依赖/数据流)
3. **分组 (groups)**
- 按功能域分组(如:用户模块、支付模块)
- 用颜色区分不同层级
## Canvas JSON 结构示例
```json
{
"nodes": [
{
"id": "node1",
"type": "text",
"x": 0,
"y": 0,
"width": 200,
"height": 100,
"text": "# UserService\n- createUser()\n- getUser()"
}
],
"edges": [
{
"id": "edge1",
"fromNode": "node1",
"toNode": "node2",
"fromSide": "right",
"toSide": "left",
"label": "调用"
}
]
}
```
## 分析步骤
1. 扫描项目目录结构
2. 识别入口文件和核心模块
3. 分析 import/require 语句提取依赖关系
4. 识别数据库操作、API调用、外部服务
5. 按调用层级布局节点位置
6. 生成完整的 .canvas JSON
```
## 使用示例
```
请分析 /home/user/my-project 项目,生成文件级别的架构白板。
重点关注:
- API 路由和处理函数
- 数据库模型和操作
- 外部服务调用
```
## 输出文件
生成的 `.canvas` 文件可直接用 Obsidian 打开查看和编辑。
@@ -0,0 +1,88 @@
# 02-白板驱动编码提示词
> 根据 Canvas 白板架构图生成/修改代码
## 使用场景
- 新功能开发:先画白板,再生成代码
- 架构重构:修改白板连线,AI同步重构代码
- 模块拆分:在白板拆分节点,AI生成新文件
## 提示词
```markdown
你是一个根据架构白板生成代码的专家。请根据以下 Obsidian Canvas 白板 JSON,生成对应的代码实现。
## 输入
Canvas JSON
```json
{CANVAS_JSON}
```
技术栈:{TECH_STACK}
目标目录:{TARGET_DIR}
## 解析规则
1. **节点 → 文件/类**
- 节点 text 中的标题 → 文件名/类名
- 节点 text 中的列表项 → 方法/函数
- 节点颜色/分组 → 模块归属
2. **连线 → 依赖关系**
- fromNode → toNode = import/调用关系
- edge label 决定关系类型:
- "调用" → 函数调用
- "继承" → class extends
- "依赖" → import
- "数据流" → 参数传递
3. **分组 → 目录结构**
- 同一分组的节点放在同一目录
- 分组名称 → 目录名
## 输出要求
1. 生成完整的文件结构
2. 每个文件包含:
- 正确的 import 语句(根据连线)
- 类/函数定义(根据节点内容)
- 调用关系实现(根据连线方向)
3. 添加必要的类型注解和注释
4. 遵循技术栈的最佳实践
## 输出格式
```
文件:{文件路径}
```{语言}
{代码内容}
```
```
## 使用示例
```
根据以下白板生成 Python FastAPI 项目代码:
{粘贴 .canvas 文件内容}
技术栈:Python 3.11 + FastAPI + SQLAlchemy
目标目录:/home/user/my-api
```
## 增量更新模式
当白板有修改时,使用以下提示词:
```markdown
白板已更新,请对比新旧版本,只修改变化的部分:
旧白板:{OLD_CANVAS_JSON}
新白板:{NEW_CANVAS_JSON}
输出:
1. 需要新增的文件
2. 需要修改的文件(只输出 diff)
3. 需要删除的文件
```
@@ -0,0 +1,147 @@
# 03-白板同步检查提示词
> 校验白板与实际代码的一致性
## 使用场景
- PR/MR 合并前检查白板是否需要更新
- 定期审计架构文档准确性
- 发现代码中的隐式依赖
## 提示词
```markdown
你是一个代码与架构一致性检查专家。请对比以下白板和代码,找出不一致之处。
## 输入
Canvas 白板 JSON
```json
{CANVAS_JSON}
```
项目代码路径:{PROJECT_PATH}
## 检查项
1. **节点完整性**
- 白板中的节点是否都有对应的代码文件/类?
- 代码中是否有白板未记录的重要模块?
2. **连线准确性**
- 白板连线是否反映真实的 import/调用关系?
- 代码中是否有白板未标注的依赖?
3. **分组正确性**
- 白板分组是否与目录结构一致?
- 是否有跨分组的异常依赖?
## 输出格式
### 🔴 严重不一致(必须修复)
| 类型 | 白板 | 代码 | 建议 |
|:---|:---|:---|:---|
| 缺失节点 | - | UserService.py | 添加到白板 |
| 错误连线 | A→B | A不调用B | 删除连线 |
### 🟡 轻微不一致(建议修复)
| 类型 | 白板 | 代码 | 建议 |
|:---|:---|:---|:---|
| 命名不一致 | user_service | UserService | 统一命名 |
### 🟢 一致性良好
- 节点覆盖率:{X}%
- 连线准确率:{Y}%
### 📋 修复建议
1. {具体修复步骤}
2. {具体修复步骤}
```
## 自动化脚本(可选)
```python
#!/usr/bin/env python3
"""
canvas_sync_check.py - 白板与代码一致性检查脚本
用法:python canvas_sync_check.py project.canvas /path/to/project
"""
import json
import ast
import os
from pathlib import Path
def load_canvas(canvas_path):
with open(canvas_path) as f:
return json.load(f)
def extract_imports(py_file):
"""提取 Python 文件的 import 关系"""
with open(py_file) as f:
tree = ast.parse(f.read())
imports = []
for node in ast.walk(tree):
if isinstance(node, ast.Import):
for alias in node.names:
imports.append(alias.name)
elif isinstance(node, ast.ImportFrom):
if node.module:
imports.append(node.module)
return imports
def check_consistency(canvas, project_path):
"""对比白板节点与实际文件"""
canvas_nodes = {n['text'].split('\n')[0].strip('# ')
for n in canvas.get('nodes', [])}
actual_files = set()
for py_file in Path(project_path).rglob('*.py'):
actual_files.add(py_file.stem)
missing_in_canvas = actual_files - canvas_nodes
missing_in_code = canvas_nodes - actual_files
return {
'missing_in_canvas': missing_in_canvas,
'missing_in_code': missing_in_code,
'coverage': len(canvas_nodes & actual_files) / len(actual_files) * 100
}
if __name__ == '__main__':
import sys
if len(sys.argv) != 3:
print("用法: python canvas_sync_check.py <canvas_file> <project_path>")
sys.exit(1)
canvas = load_canvas(sys.argv[1])
result = check_consistency(canvas, sys.argv[2])
print(f"覆盖率: {result['coverage']:.1f}%")
if result['missing_in_canvas']:
print(f"白板缺失: {result['missing_in_canvas']}")
if result['missing_in_code']:
print(f"代码缺失: {result['missing_in_code']}")
```
## CI/CD 集成
```yaml
# .github/workflows/canvas-check.yml
name: Canvas Sync Check
on:
pull_request:
paths:
- '**.py'
- '**.canvas'
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check canvas consistency
run: python scripts/canvas_sync_check.py docs/architecture.canvas src/
```