Skip to content

Commit effbcba

Browse files
committed
Merge branch 'dev' of https://github.com/xerrors/Yuxi-Know into dev
2 parents 34e5426 + c72e2cf commit effbcba

18 files changed

+435
-1071
lines changed

.env.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,7 @@ NEO4J_URI=
3737
NEO4J_USERNAME=
3838
NEO4J_PASSWORD=
3939
# endregion neo4j
40+
41+
# Servies
42+
YUXI_SUPER_ADMIN_NAME=
43+
YUXI_SUPER_ADMIN_PASSWORD=

AGENTS.md

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,6 @@ Yuxi-Know 是一个基于知识图谱和向量数据库的智能知识库系统
55

66
文档中心在 `docs` 文件夹下面。
77

8-
9-
# 核心服务与容器 (Core Services & Containers)
10-
11-
项目使用 Docker Compose 管理多个服务,主要容器名称如下:
12-
- `api-dev` - FastAPI 后端服务
13-
- `web-dev` - Vue.js 前端开发服务器
14-
- `graph` - Neo4j 图数据库
15-
- `milvus` - 向量数据库,包含 etcd 和 MinIO 依赖
16-
- `mineru` - 可选的 MinerU OCR 服务(需要 GPU)
17-
- `paddlex` - 可选的 PaddleX OCR 服务(需要 GPU)
18-
198
## 开发与调试工作流 (Development & Debugging Workflow)
209

2110
本项目完全通过 Docker Compose 进行管理。所有开发和调试都应在运行的容器环境中进行。使用 `docker compose up -d` 命令进行构建和启动。
@@ -32,7 +21,7 @@ Yuxi-Know 是一个基于知识图谱和向量数据库的智能知识库系统
3221

3322
后端开发规范:
3423

35-
- 项目使用 uv 来管理依赖
24+
- 项目使用 uv 来管理依赖,所以需要使用 uv run 来调试。
3625
- Python 代码要符合 Python 的规范,尽量使用较新的语法,避免使用旧版本的语法(版本兼容到 3.12+),使用 make lint 检查 lint。使用 make format 来格式化代码。
3726

3827
其他:

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11

2-
.PHONY: start logs
2+
.PHONY: start stop logs lint format format_diff router-tests
3+
4+
PYTEST_ARGS ?=
35

46
start:
57
docker compose up -d
@@ -27,4 +29,7 @@ format:
2729
uv run ruff check . --fix
2830

2931
format_diff:
30-
uv run ruff format --diff .
32+
uv run ruff format --diff .
33+
34+
router-tests:
35+
docker compose exec -T api uv run --group test pytest test/api $(PYTEST_ARGS)

docs/changelog/contributing.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,29 @@ chore: 构建过程或辅助工具的变动
6060

6161
### 测试要求
6262

63-
::: info
64-
部分测试脚本待补充
63+
::: tip 测试
64+
- `make lint` / `make format` 保持代码整洁
65+
- `cp test/.env.test.example test/.env.test` 配置测试凭据
66+
- `make router-tests` 运行集成路由测试,支持 `PYTEST_ARGS="-k chat_router"`
67+
- `uv run --group test pytest test/api` 可直接运行 pytest(容器内)
6568
:::
6669

67-
- 确保所有测试通过
68-
- 添加新功能的测试用例
69-
- 验证现有功能不受影响
70-
- 测试不同环境下的兼容性
70+
<details>
71+
<summary>常用命令</summary>
72+
73+
```bash
74+
# 全量路由测试
75+
make router-tests
76+
77+
# 仅运行知识库相关用例
78+
make router-tests PYTEST_ARGS="-k knowledge_router"
79+
80+
# 不经过 Makefile,直接调用 pytest
81+
uv run --group test pytest test/api -vv
82+
```
83+
84+
</details>
7185

7286
## 许可证
7387

7488
本项目基于 MIT License 开源,贡献的代码将遵循相同的许可证。
75-

server/routers/auth_router.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from sqlalchemy.orm import Session
88

99
from src.storage.db.manager import db_manager
10-
from src.storage.db.models import User
10+
from src.storage.db.models import User, OperationLog
1111
from server.utils.auth_middleware import get_admin_user, get_current_user, get_db, get_required_user
1212
from server.utils.auth_utils import AuthUtils
1313
from server.utils.user_utils import generate_unique_user_id, validate_username, is_valid_phone_number
@@ -503,15 +503,18 @@ async def delete_user(
503503
detail="不能删除自己的账户",
504504
)
505505

506-
# 记录操作
507-
log_operation(
508-
db, current_user.id, "删除用户", f"删除用户: {user.username}, ID: {user.id}, 角色: {user.role}", request
509-
)
506+
deletion_detail = f"删除用户: {user.username}, ID: {user.id}, 角色: {user.role}"
507+
508+
# 清理关联的操作日志,避免外键约束报错
509+
db.query(OperationLog).filter(OperationLog.user_id == user.id).delete(synchronize_session=False)
510510

511511
# 删除用户
512512
db.delete(user)
513513
db.commit()
514514

515+
# 记录操作
516+
log_operation(db, current_user.id, "删除用户", deletion_detail, request)
517+
515518
return {"success": True, "message": "用户已删除"}
516519

517520

src/storage/db/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class User(Base):
176176
login_locked_until = Column(DateTime, nullable=True) # 锁定到什么时候
177177

178178
# 关联操作日志
179-
operation_logs = relationship("OperationLog", back_populates="user")
179+
operation_logs = relationship("OperationLog", back_populates="user", cascade="all, delete-orphan")
180180

181181
def to_dict(self, include_password=False):
182182
result = {

test/.env.test.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
TEST_BASE_URL=http://localhost:5050
66

77
# 测试用户凭据
8-
TEST_USERNAME=zwj
9-
TEST_PASSWORD=zwj12138
8+
TEST_USERNAME=
9+
TEST_PASSWORD=
1010

1111
# 数据库连接(如果需要)
1212
# DATABASE_URL=sqlite:///test.db

test/README.md

Lines changed: 0 additions & 252 deletions
This file was deleted.

0 commit comments

Comments
 (0)