init
This commit is contained in:
@@ -0,0 +1,553 @@
|
||||
---
|
||||
layout: cover
|
||||
background: https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1920&q=80
|
||||
---
|
||||
|
||||
# 第 2 天:TRAE 上下文工程与规则体系
|
||||
|
||||
<div class="text-lg text-gray-300 mt-4">
|
||||
让 TRAE 按团队规则改代码 — 从代码理解到研发治理
|
||||
</div>
|
||||
|
||||
<div class="mt-6 text-sm text-gray-400">
|
||||
上下文决定 AI 看什么 · 规则决定 AI 怎么做 · 资产化决定团队怎么复用
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 第 1 天到第 2 天的跨越
|
||||
|
||||
<div class="grid grid-cols-2 gap-8 mt-10">
|
||||
|
||||
<div class="card">
|
||||
<div class="text-blue-400 text-sm font-semibold mb-3">第 1 天</div>
|
||||
<div class="text-xl font-bold mb-3">让 TRAE 看懂若依代码</div>
|
||||
<div class="text-sm text-gray-400">
|
||||
看结构 · 找入口 · 追链路 · 查依据
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green">
|
||||
<div class="text-emerald-400 text-sm font-semibold mb-3">第 2 天</div>
|
||||
<div class="text-xl font-bold mb-3">让 TRAE 按团队规则改代码</div>
|
||||
<div class="text-sm text-gray-400">
|
||||
组织上下文 · 控制幻觉 · 编写 rules · 沉淀资产
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-8 card-amber text-sm">
|
||||
<strong>核心变化:</strong>当团队多人都使用 AI 时,必须有统一上下文、统一 rules、统一验收标准,否则 AI 会带来不一致甚至风险。
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 若依场景下的团队规则问题
|
||||
|
||||
<div class="mt-6">
|
||||
<div class="card-red">
|
||||
<div class="text-red-400 font-semibold mb-3">若依类后台项目常见风险</div>
|
||||
<div class="grid grid-cols-2 gap-4 text-sm">
|
||||
|
||||
<div class="space-y-2">
|
||||
|
||||
- 🚨 绕过权限,页面直接调接口
|
||||
- 🚨 按钮权限当安全边界
|
||||
- 🚨 接口缺少权限注解
|
||||
- 🚨 操作日志缺失
|
||||
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
|
||||
- 🚨 代码生成后直接上线
|
||||
- 🚨 敏感信息进入日志
|
||||
- 🚨 数据权限范围不清
|
||||
- 🚨 AI 修改未经复核
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 text-sm text-gray-400 text-center">
|
||||
今天要把这些隐性开发要求写成中文规则,让 TRAE 长期遵守
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 今天三个关键词
|
||||
|
||||
<div class="grid grid-cols-3 gap-8 mt-12">
|
||||
|
||||
<div class="text-center">
|
||||
<div class="w-20 h-20 rounded-2xl bg-blue-900/50 border border-blue-500/50 flex items-center justify-center mx-auto">
|
||||
<span class="text-3xl">🎯</span>
|
||||
</div>
|
||||
<div class="mt-4 text-xl font-bold">上下文</div>
|
||||
<div class="text-sm text-gray-400 mt-2">决定 AI 看什么</div>
|
||||
<div class="text-xs text-gray-500 mt-1">整个项目 vs 单模块 vs 单文件</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<div class="w-20 h-20 rounded-2xl bg-emerald-900/50 border border-emerald-500/50 flex items-center justify-center mx-auto">
|
||||
<span class="text-3xl">📏</span>
|
||||
</div>
|
||||
<div class="mt-4 text-xl font-bold">规则</div>
|
||||
<div class="text-sm text-gray-400 mt-2">决定 AI 怎么做</div>
|
||||
<div class="text-xs text-gray-500 mt-1">不能绕过权限 · 不能遗漏日志</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<div class="w-20 h-20 rounded-2xl bg-amber-900/50 border border-amber-500/50 flex items-center justify-center mx-auto">
|
||||
<span class="text-3xl">📦</span>
|
||||
</div>
|
||||
<div class="mt-4 text-xl font-bold">资产化</div>
|
||||
<div class="text-sm text-gray-400 mt-2">决定团队怎么复用</div>
|
||||
<div class="text-xs text-gray-500 mt-1">Prompt · Rules · 模板</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 1:上下文工程 — 好任务五要素
|
||||
|
||||
<div class="mt-8 text-center">
|
||||
|
||||
<div class="inline-block card-blue px-8 py-4 text-lg font-bold">
|
||||
好任务 = 目标 + 范围 + 约束 + 输出格式 + 验收标准
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-6 mt-8">
|
||||
|
||||
<div class="card-red text-sm">
|
||||
<div class="text-red-400 font-semibold mb-2">❌ 坏 Prompt</div>
|
||||
|
||||
```
|
||||
@workspace 帮我检查若依权限有没有问题。
|
||||
```
|
||||
|
||||
<div class="text-xs text-gray-400 mt-2">目标不清 · 范围不清 · 约束不清 · 输出不清</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green text-sm">
|
||||
<div class="text-emerald-400 font-semibold mb-2">✅ 好 Prompt</div>
|
||||
|
||||
```
|
||||
@workspace 分析若依用户管理页面按钮权限调用链路
|
||||
|
||||
范围:只分析新增/修改/删除按钮
|
||||
约束:不修改代码;标注文件和函数
|
||||
输出:表格
|
||||
验收:覆盖按钮/权限字符/前端判断/后端接口
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 2:四类上下文工具
|
||||
|
||||
<div class="grid grid-cols-2 gap-6 mt-8">
|
||||
|
||||
<div class="card p-5">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="tag">@workspace</span>
|
||||
<span class="font-bold">找路</span>
|
||||
</div>
|
||||
<div class="text-sm text-gray-400">全局搜索入口、文件、模块</div>
|
||||
<div class="text-xs text-gray-500 mt-1">如:找 getInfo、getRouters、权限指令</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-5">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="tag-green">#File</span>
|
||||
<span class="font-bold">看文件</span>
|
||||
</div>
|
||||
<div class="text-sm text-gray-400">分析指定文件间的调用关系</div>
|
||||
<div class="text-xs text-gray-500 mt-1">如:分析用户 Controller 和 Service</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-5">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="tag-amber">#Code</span>
|
||||
<span class="font-bold">抠细节</span>
|
||||
</div>
|
||||
<div class="text-sm text-gray-400">分析单个方法的参数、调用、异常</div>
|
||||
<div class="text-xs text-gray-500 mt-1">如:分析 handleLogin 函数</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-5">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="px-3 py-1 rounded-full text-xs font-semibold bg-purple-500/20 text-purple-300">#Web</span>
|
||||
<span class="font-bold">查外部</span>
|
||||
</div>
|
||||
<div class="text-sm text-gray-400">查询框架文档或最佳实践</div>
|
||||
<div class="text-xs text-gray-500 mt-1">但若依当前实现必须回到代码验证</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 3:幻觉死循环切断
|
||||
|
||||
<div class="mt-6">
|
||||
|
||||
<div class="card-red mb-4">
|
||||
<div class="text-red-400 font-semibold mb-2">常见幻觉表现</div>
|
||||
<div class="grid grid-cols-3 gap-3 text-sm">
|
||||
<div class="p-2 rounded bg-red-900/20">AI 说所有接口都有权限校验<br/><span class="text-xs text-gray-500">但不给 Controller 依据</span></div>
|
||||
<div class="p-2 rounded bg-red-900/20">AI 说操作日志完整<br/><span class="text-xs text-gray-500">但不给注解或 AOP 依据</span></div>
|
||||
<div class="p-2 rounded bg-red-900/20">AI 说按钮权限安全<br/><span class="text-xs text-gray-500">但只看到前端代码</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-3 gap-4 mt-6">
|
||||
|
||||
<div class="card-blue text-center p-4">
|
||||
<div class="text-2xl mb-2">1️⃣</div>
|
||||
<div class="font-bold">先找证据</div>
|
||||
<div class="text-xs text-gray-400 mt-1">文件 · 类 · 方法 · 注解</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green text-center p-4">
|
||||
<div class="text-2xl mb-2">2️⃣</div>
|
||||
<div class="font-bold">再判断原因</div>
|
||||
<div class="text-xs text-gray-400 mt-1">区分事实和推测</div>
|
||||
</div>
|
||||
|
||||
<div class="card-amber text-center p-4">
|
||||
<div class="text-2xl mb-2">3️⃣</div>
|
||||
<div class="font-bold">最后给方案</div>
|
||||
<div class="text-xs text-gray-400 mt-1">修改 · 影响 · 验证</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 证据收集标准 Prompt
|
||||
|
||||
<div class="mt-4 card-blue text-sm">
|
||||
|
||||
```
|
||||
请先不要修改代码。
|
||||
|
||||
请围绕"用户管理删除按钮权限"收集证据:
|
||||
|
||||
1. 前端按钮在哪个页面
|
||||
2. 使用了哪个权限字符
|
||||
3. 前端如何判断按钮显示
|
||||
4. 后端删除接口在哪里
|
||||
5. Controller 是否有权限注解
|
||||
6. 是否记录操作日志
|
||||
7. 无法确认的内容
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-sm text-gray-400">
|
||||
先收集证据,再判断风险,最后才给方案。<br/>不要让 AI 跳过证据直接给结论。
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 4:.gitignore 与敏感配置
|
||||
|
||||
<div class="grid grid-cols-2 gap-6 mt-6">
|
||||
|
||||
<div class="card-red">
|
||||
<div class="text-red-400 font-semibold mb-3">不应提交的文件</div>
|
||||
<div class="text-sm space-y-1">
|
||||
|
||||
- `.env` 环境变量
|
||||
- `application-dev.yml` 真实密码
|
||||
- 数据库账号 / Redis 密码
|
||||
- `target/` 编译产物
|
||||
- `node_modules/` / `dist/`
|
||||
- 日志文件
|
||||
- IDE 本地配置
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green">
|
||||
<div class="text-emerald-400 font-semibold mb-3">敏感配置规则</div>
|
||||
<div class="text-sm space-y-2">
|
||||
|
||||
- 禁止硬编码数据库密码
|
||||
- 禁止硬编码 Redis 密码
|
||||
- 禁止硬编码 JWT 密钥
|
||||
- 禁止硬编码第三方密钥
|
||||
- 不得提交真实配置文件
|
||||
- 示例配置必须使用占位符
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 5:.trae/rules.md 中文安全规则
|
||||
|
||||
<div class="mt-4 space-y-3 text-sm">
|
||||
|
||||
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<strong class="text-blue-300">规则 1:</strong>前端按钮权限只能作为交互控制,不能作为安全边界。
|
||||
</div>
|
||||
|
||||
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<strong class="text-blue-300">规则 2:</strong>涉及用户、角色、菜单、部门、岗位等敏感接口时,必须检查后端 Controller 是否存在权限控制。
|
||||
</div>
|
||||
|
||||
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<strong class="text-blue-300">规则 3:</strong>涉及新增、修改、删除、导出等操作时,必须检查是否记录操作日志。
|
||||
</div>
|
||||
|
||||
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<strong class="text-blue-300">规则 4:</strong>禁止在源码中硬编码数据库密码、Redis 密码、JWT 密钥。
|
||||
</div>
|
||||
|
||||
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<strong class="text-blue-300">规则 5:</strong>列表查询必须确认是否需要数据权限过滤。
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 6:编码与测试规则
|
||||
|
||||
<div class="grid grid-cols-2 gap-6 mt-6">
|
||||
|
||||
<div>
|
||||
<div class="font-semibold text-blue-300 mb-3">编码规则重点</div>
|
||||
<div class="text-sm space-y-2">
|
||||
|
||||
- 前端接口放 `api` 目录,不在页面写请求
|
||||
- 后端遵守 Controller → Service → Mapper 分层
|
||||
- 敏感接口关注权限注解
|
||||
- 敏感操作关注日志注解
|
||||
- 列表查询关注数据权限
|
||||
- 固定枚举值使用字典
|
||||
- 代码生成结果必须人工检查
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="font-semibold text-emerald-300 mb-3">测试规则重点</div>
|
||||
<div class="text-sm space-y-2">
|
||||
|
||||
- ✅ 登录成功 / 失败
|
||||
- ✅ 无权限访问接口返回拒绝
|
||||
- ✅ 按钮权限和权限字符匹配
|
||||
- ✅ 角色授权变化后权限更新
|
||||
- ✅ 数据权限范围正确
|
||||
- ✅ 敏感操作有日志记录
|
||||
- ✅ 代码生成 CRUD 完整性
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 7:前端专项规则
|
||||
|
||||
<div class="mt-6">
|
||||
|
||||
<div class="card text-sm">
|
||||
<div class="font-semibold mb-3">用户管理页面规则示例</div>
|
||||
|
||||
| 规则项 | 要求 |
|
||||
|--------|------|
|
||||
| 按钮权限 | 新增/修改/删除/导出必须使用权限控制 |
|
||||
| 删除操作 | 必须二次确认 |
|
||||
| 提交失败 | loading 必须恢复 |
|
||||
| 数据刷新 | 修改后必须刷新列表 |
|
||||
| 敏感字段 | 不得明文展示或输出日志 |
|
||||
| 接口调用 | 统一放 api 目录 |
|
||||
| 动态路由 | 不能随意绕过 |
|
||||
| 字典字段 | 使用统一字典显示 |
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 8:规则可执行性检查
|
||||
|
||||
<div class="grid grid-cols-2 gap-8 mt-8">
|
||||
|
||||
<div class="card-red">
|
||||
<div class="text-red-400 font-semibold mb-3">❌ 坏规则</div>
|
||||
<div class="space-y-2 text-sm">
|
||||
|
||||
- 「注意权限安全」
|
||||
- 「代码要规范」
|
||||
- 「日志要完整」
|
||||
- 「数据权限要合理」
|
||||
- 「生成代码要检查」
|
||||
|
||||
</div>
|
||||
<div class="text-xs text-gray-500 mt-3">方向没错,但不可执行</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green">
|
||||
<div class="text-emerald-400 font-semibold mb-3">✅ 好规则</div>
|
||||
<div class="space-y-2 text-sm">
|
||||
|
||||
- 涉及用户/角色/菜单/部门/岗位的新增/修改/删除/导出接口 → **必须检查后端权限和操作日志**
|
||||
- 涉及列表查询 → **必须确认数据权限过滤**
|
||||
- 代码生成结果上线前 → **必须检查权限、日志、校验、异常和测试**
|
||||
|
||||
</div>
|
||||
<div class="text-xs text-gray-500 mt-3">有触发场景 · 有必须动作 · 可被检查</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 模块 9:技能与规则资产化
|
||||
|
||||
<div class="mt-6">
|
||||
|
||||
```
|
||||
ai-dev-assets/
|
||||
├── prompts/若依/ # 若依相关 Prompt 模板
|
||||
│ ├── 结构分析.md
|
||||
│ ├── 登录权限链路.md
|
||||
│ ├── 按钮权限检查.md
|
||||
│ └── 操作日志检查.md
|
||||
├── rules/若依/ # 若依 rules.md
|
||||
├── templates/若依/ # 报告模板
|
||||
├── checklists/若依/ # 检查清单
|
||||
│ ├── 权限检查.md
|
||||
│ ├── 日志检查.md
|
||||
│ └── 代码生成Review.md
|
||||
└── examples/若依/ # 优秀案例 & 反面案例
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-sm text-gray-400 text-center">
|
||||
这些资产以后可以直接用于公司内部类似后台管理系统
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 若依版 rules.md 核心条款
|
||||
|
||||
<div class="mt-6 space-y-4">
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">1</div>
|
||||
<div class="text-sm">前端按钮权限<strong class="text-red-300">不是</strong>安全边界</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">2</div>
|
||||
<div class="text-sm">敏感接口<strong class="text-emerald-300">必须</strong>检查后端权限</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">3</div>
|
||||
<div class="text-sm">敏感操作<strong class="text-emerald-300">必须</strong>检查操作日志</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">4</div>
|
||||
<div class="text-sm">列表查询<strong class="text-emerald-300">必须</strong>考虑数据权限</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">5</div>
|
||||
<div class="text-sm">代码生成结果<strong class="text-red-300">不得</strong>直接上线</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
|
||||
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">6</div>
|
||||
<div class="text-sm">不确定内容<strong class="text-emerald-300">必须</strong>标注</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
layout: center
|
||||
---
|
||||
|
||||
# 第 2 天交付物
|
||||
|
||||
<div class="grid grid-cols-2 gap-3 mt-8 text-sm max-w-3xl mx-auto">
|
||||
|
||||
<div class="card-blue p-3">01 上下文组织清单</div>
|
||||
<div class="card-blue p-3">02 上下文引用模板</div>
|
||||
<div class="card-blue p-3">03 幻觉控制 Prompt</div>
|
||||
<div class="card-blue p-3">04 .gitignore 配置样例</div>
|
||||
<div class="card-green p-3">05 若依中文安全规则</div>
|
||||
<div class="card-green p-3">06 若依编码测试规则</div>
|
||||
<div class="card-green p-3">07 若依前端规则</div>
|
||||
<div class="card-amber p-3">08 若依 AI 资产库目录</div>
|
||||
<div class="card-amber p-3">09 规则验收清单</div>
|
||||
<div class="card-amber p-3">10 若依版 rules.md v0.1</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 两天课程总结
|
||||
|
||||
<div class="grid grid-cols-2 gap-8 mt-8">
|
||||
|
||||
<div class="card">
|
||||
<div class="text-blue-400 font-semibold mb-3">第 1 天:读懂若依</div>
|
||||
<div class="text-sm space-y-1">
|
||||
|
||||
- 看结构 — 全局目录与模块职责
|
||||
- 找入口 — 登录、权限、菜单入口
|
||||
- 追链路 — 完整调用链路分析
|
||||
- 查依据 — 验证 AI 输出可信度
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-green">
|
||||
<div class="text-emerald-400 font-semibold mb-3">第 2 天:按规则参与若依</div>
|
||||
<div class="text-sm space-y-1">
|
||||
|
||||
- 组织上下文 — 精准任务五要素
|
||||
- 控制幻觉 — 证据→原因→方案
|
||||
- 编写 rules — 中文可执行规则
|
||||
- 沉淀资产 — 团队长期复用
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-8 text-center">
|
||||
<div class="inline-block card-blue px-8 py-4">
|
||||
<div class="text-xl font-bold mb-2">最终能力</div>
|
||||
<div class="grid grid-cols-5 gap-4 text-sm">
|
||||
<div>读得懂</div>
|
||||
<div>问得准</div>
|
||||
<div>查得实</div>
|
||||
<div>改得稳</div>
|
||||
<div>可复用</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user