docs: 添加项目文档和 AgentSkills
- 添加架构文档 (ARCHITECTURE.md) - 添加 API 文档 (API.md) - 添加文档索引 (docs/README.md) - 添加部署技能 (skills/city-manual-deploy/SKILL.md) - 添加测试技能 (skills/city-manual-test/SKILL.md) - 添加内容管理技能 (skills/city-manual-content/SKILL.md)
This commit is contained in:
229
city-manual/skills/city-manual-test/SKILL.md
Normal file
229
city-manual/skills/city-manual-test/SKILL.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# Skill: city-manual-test
|
||||
|
||||
## Description
|
||||
|
||||
城市手册项目测试技能。用于运行项目测试和 API 验证。
|
||||
|
||||
## Location
|
||||
|
||||
`/root/.openclaw/workspace/city-manual/skills/city-manual-test/`
|
||||
|
||||
## Capabilities
|
||||
|
||||
- 运行 Django 测试
|
||||
- API 端点测试
|
||||
- 数据库连接测试
|
||||
- 前端构建测试
|
||||
- 性能测试
|
||||
|
||||
## Usage
|
||||
|
||||
当用户提到以下关键词时激活此技能:
|
||||
- "测试城市手册"
|
||||
- "run tests"
|
||||
- "API 测试"
|
||||
- "验证功能"
|
||||
|
||||
## Scripts
|
||||
|
||||
### test_api.py
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
城市手册 API 测试脚本
|
||||
"""
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
BASE_URL = "http://127.0.0.1:8000/api"
|
||||
|
||||
def test_auth():
|
||||
"""测试认证 API"""
|
||||
print("=== 测试认证 API ===")
|
||||
|
||||
# 登录
|
||||
response = requests.post(f"{BASE_URL}/auth/token/", json={
|
||||
"username": "demo",
|
||||
"password": "demo123"
|
||||
})
|
||||
|
||||
if response.status_code == 200:
|
||||
token = response.json()["access"]
|
||||
print("✅ 登录成功")
|
||||
return token
|
||||
else:
|
||||
print(f"❌ 登录失败:{response.status_code}")
|
||||
return None
|
||||
|
||||
def test_users(token):
|
||||
"""测试用户 API"""
|
||||
print("\n=== 测试用户 API ===")
|
||||
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
# 获取当前用户
|
||||
response = requests.get(f"{BASE_URL}/users/me/", headers=headers)
|
||||
if response.status_code == 200:
|
||||
print(f"✅ 获取用户信息成功:{response.json()['username']}")
|
||||
else:
|
||||
print(f"❌ 获取用户信息失败:{response.status_code}")
|
||||
|
||||
def test_regions(token):
|
||||
"""测试版块 API"""
|
||||
print("\n=== 测试版块 API ===")
|
||||
|
||||
# 获取版块列表
|
||||
response = requests.get(f"{BASE_URL}/regions/")
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print(f"✅ 获取版块列表成功:共 {data['count']} 个版块")
|
||||
if data['results']:
|
||||
print(f" 第一个版块:{data['results'][0]['name']}")
|
||||
else:
|
||||
print(f"❌ 获取版块列表失败:{response.status_code}")
|
||||
|
||||
def test_articles(token):
|
||||
"""测试文章 API"""
|
||||
print("\n=== 测试文章 API ===")
|
||||
|
||||
# 获取文章列表
|
||||
response = requests.get(f"{BASE_URL}/articles/")
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print(f"✅ 获取文章列表成功:共 {data['count']} 篇文章")
|
||||
else:
|
||||
print(f"❌ 获取文章列表失败:{response.status_code}")
|
||||
|
||||
def test_services(token):
|
||||
"""测试特色服务 API"""
|
||||
print("\n=== 测试特色服务 API ===")
|
||||
|
||||
# 获取特色服务列表
|
||||
response = requests.get(f"{BASE_URL}/services/")
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print(f"✅ 获取特色服务列表成功:共 {data['count']} 个服务")
|
||||
else:
|
||||
print(f"❌ 获取特色服务列表失败:{response.status_code}")
|
||||
|
||||
def test_database():
|
||||
"""测试数据库连接"""
|
||||
print("\n=== 测试数据库连接 ===")
|
||||
|
||||
import psycopg2
|
||||
|
||||
try:
|
||||
conn = psycopg2.connect(
|
||||
host="10.2.0.100",
|
||||
port=5432,
|
||||
database="cssc",
|
||||
user="coder",
|
||||
password="825670wl"
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute("SELECT 1")
|
||||
cur.close()
|
||||
conn.close()
|
||||
print("✅ 数据库连接成功")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"❌ 数据库连接失败:{e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
print("城市手册 API 测试开始\n")
|
||||
|
||||
# 测试数据库
|
||||
test_database()
|
||||
|
||||
# 测试认证
|
||||
token = test_auth()
|
||||
if not token:
|
||||
print("\n❌ 认证失败,停止测试")
|
||||
return
|
||||
|
||||
# 测试各 API
|
||||
test_users(token)
|
||||
test_regions(token)
|
||||
test_articles(token)
|
||||
test_services(token)
|
||||
|
||||
print("\n=== 测试完成 ===")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
### 运行 Django 测试
|
||||
|
||||
```bash
|
||||
cd /root/.openclaw/workspace/city-manual/backend
|
||||
python manage.py test
|
||||
```
|
||||
|
||||
### 运行 API 测试
|
||||
|
||||
```bash
|
||||
cd /root/.openclaw/workspace/city-manual
|
||||
python test_api.py
|
||||
```
|
||||
|
||||
### 运行前端测试
|
||||
|
||||
```bash
|
||||
cd /root/.openclaw/workspace/city-manual/frontend
|
||||
npm test
|
||||
```
|
||||
|
||||
### 数据库连接测试
|
||||
|
||||
```bash
|
||||
psql -h 10.2.0.100 -U coder -d cssc -c "SELECT 1"
|
||||
```
|
||||
|
||||
## Health Check
|
||||
|
||||
```bash
|
||||
# 检查所有服务
|
||||
curl http://127.0.0.1:8000/admin/
|
||||
curl http://127.0.0.1/
|
||||
psql -h 10.2.0.100 -U coder -d cssc -c "SELECT 1"
|
||||
```
|
||||
|
||||
## Test Cases
|
||||
|
||||
### 用户认证测试
|
||||
1. 正常登录
|
||||
2. 错误密码
|
||||
3. 令牌刷新
|
||||
4. 令牌过期
|
||||
|
||||
### 版块管理测试
|
||||
1. 获取版块列表
|
||||
2. 获取版块详情
|
||||
3. 创建版块(管理员)
|
||||
4. 版块层级查询
|
||||
|
||||
### 内容管理测试
|
||||
1. 获取文章列表
|
||||
2. 获取文章详情
|
||||
3. 创建文章
|
||||
4. 更新文章
|
||||
5. 删除文章
|
||||
6. 文章审核流程
|
||||
|
||||
### 互动功能测试
|
||||
1. 发表评论
|
||||
2. 评分
|
||||
3. 点赞
|
||||
4. 收藏
|
||||
|
||||
## References
|
||||
|
||||
- [TESTING.md](../../TESTING.md)
|
||||
- [test_api.py](../../test_api.py)
|
||||
Reference in New Issue
Block a user