|
Download apps/cases/README.md from jun2024/fc: direct link, hf CLI and curl.
- Browser
- Download file 8.02 kB
-
https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/cases/README.md
- Command line
-
hf download hf://spaces/jun2024/fc/apps/cases/README.md
-
curl -L -o README.md https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/cases/README.md
8.02 kB
📁 案件管理模块 (Cases)
案件管理模块,提供案件的创建、查询、更新和删除功能,支持案件当事人、案件日志、案件指派等功能。
📚 模块概述
本模块负责管理法律案件的完整生命周期,包括:
- 案件基本信息管理
- 案件当事人管理
- 案件日志记录
- 案件指派管理
- 司法信息管理
- 案号管理
📁 目录结构
cases/
├── admin/ # Django Admin 配置
│ ├── case_admin.py # 案件 Admin
│ ├── caseparty_admin.py # 当事人 Admin
│ ├── caselog_admin.py # 日志 Admin
│ ├── caseassignment_admin.py # 指派 Admin
│ ├── casenumber_admin.py # 案号 Admin
│ └── judicialinfo_admin.py # 司法信息 Admin
├── api/ # API 接口
│ ├── case_api.py # 案件 API
│ ├── caseparty_api.py # 当事人 API
│ ├── caselog_api.py # 日志 API
│ ├── caseassignment_api.py # 指派 API
│ ├── casenumber_api.py # 案号 API
│ ├── caseaccess_api.py # 访问权限 API
│ └── judicialinfo_api.py # 司法信息 API
├── services/ # 业务逻辑
│ ├── case_service.py # 案件服务
│ ├── case_log_service.py # 日志服务
│ └── case_access_service.py # 访问权限服务
├── models.py # 数据模型
├── schemas.py # Pydantic Schemas
├── validators.py # 数据验证器
└── migrations/ # 数据库迁移
🚀 快速开始
1. Admin 后台
# 访问案件管理后台
open http://localhost:8000/admin/cases/
2. API 使用
import requests
BASE_URL = "http://localhost:8000/api/v1/cases"
headers = {"Authorization": "Bearer <your_jwt_token>"}
# 创建案件
response = requests.post(BASE_URL, json={
"name": "张三诉李四合同纠纷案",
"contract_id": 1,
"current_stage": "first_trial",
"case_type": "civil"
}, headers=headers)
case_id = response.json()["data"]["id"]
# 获取案件详情
response = requests.get(f"{BASE_URL}/{case_id}", headers=headers)
case = response.json()["data"]
# 更新案件
response = requests.put(f"{BASE_URL}/{case_id}", json={
"current_stage": "second_trial"
}, headers=headers)
# 添加案件日志
response = requests.post(f"{BASE_URL}/{case_id}/logs", json={
"content": "开庭审理",
"log_type": "hearing"
}, headers=headers)
3. Service 层使用
from apps.cases.services.case_service import CaseService
from apps.cases.schemas import CaseCreateSchema
service = CaseService(
contract_service=ContractService()
)
# 创建案件
case = service.create_case(
data=CaseCreateSchema(
name="张三诉李四合同纠纷案",
contract_id=1,
current_stage="first_trial"
),
user=request.user
)
# 获取案件
case = service.get_case(case_id=1, user=request.user)
# 更新案件
case = service.update_case(
case_id=1,
data=CaseUpdateSchema(current_stage="second_trial"),
user=request.user
)
🔑 核心功能
案件管理
- ✅ 创建、查询、更新、删除案件
- ✅ 案件阶段管理(侦查、起诉、一审、二审、执行)
- ✅ 案件类型管理(民事、刑事、行政)
- ✅ 案件状态管理(进行中、已结案、已归档)
当事人管理
- ✅ 添加、编辑、删除当事人
- ✅ 当事人类型(原告、被告、第三人)
- ✅ 当事人身份(自然人、法人)
- ✅ 当事人联系方式管理
案件日志
- ✅ 记录案件重要事件
- ✅ 日志类型分类(开庭、调解、判决等)
- ✅ 日志附件管理
- ✅ 日志时间线展示
案件指派
- ✅ 指派律师到案件
- ✅ 指派角色管理(主办律师、协办律师)
- ✅ 指派历史记录
司法信息
- ✅ 法院信息管理
- ✅ 法官信息管理
- ✅ 案号管理
- ✅ 开庭时间管理
📊 数据模型
Case (案件)
name: 案件名称contract: 关联合同current_stage: 当前阶段case_type: 案件类型status: 案件状态created_by: 创建人
CaseParty (当事人)
case: 关联案件client: 关联客户party_type: 当事人类型(原告/被告/第三人)legal_status: 法律地位(自然人/法人)
CaseLog (案件日志)
case: 关联案件content: 日志内容log_type: 日志类型created_by: 创建人created_at: 创建时间
CaseAssignment (案件指派)
case: 关联案件lawyer: 指派律师assigned_by: 指派人assigned_at: 指派时间
JudicialInfo (司法信息)
case: 关联案件court_name: 法院名称judge_name: 法官姓名hearing_date: 开庭日期
CaseNumber (案号)
case: 关联案件number: 案号court_level: 法院级别year: 年份
🔒 权限控制
功能级别权限
cases.add_case: 创建案件cases.view_case: 查看案件cases.change_case: 修改案件cases.delete_case: 删除案件
对象级别权限
- 案件创建人可以查看和修改自己的案件
- 被指派的律师可以查看和修改案件
- 管理员可以查看和修改所有案件
🧪 测试
# 运行单元测试
cd backend
source venv311/bin/activate
python -m pytest tests/unit/test_cases/ -v
# 运行集成测试
python -m pytest tests/integration/test_case_api/ -v
# 运行属性测试
python -m pytest tests/property/test_case_properties/ -v
📝 相关文档
- SUPERVISING_AUTHORITY_FEATURE.md - 监管机关功能说明
- models.py - 数据模型定义
- schemas.py - API Schema 定义
- validators.py - 数据验证器
🔗 依赖模块
- contracts: 合同模块(案件关联合同)
- client: 客户模块(当事人关联客户)
- organization: 组织模块(律师、律所)
- core: 核心模块(异常、接口、验证器)
🎯 最佳实践
1. 使用 Service 层
# ✅ 正确:使用 Service 层
service = CaseService(contract_service=ContractService())
case = service.create_case(data, user)
# ❌ 错误:直接操作 Model
case = Case.objects.create(name="案件", contract_id=1)
2. 权限检查
# ✅ 正确:在 Service 层检查权限
def get_case(self, case_id, user):
case = Case.objects.get(id=case_id)
if not self._can_access_case(user, case):
raise PermissionDenied("无权限访问该案件")
return case
3. 使用 Schema 验证
# ✅ 正确:使用 Pydantic Schema
data = CaseCreateSchema(
name="案件名称",
contract_id=1,
current_stage="first_trial"
)
case = service.create_case(data, user)
4. 记录案件日志
# ✅ 正确:重要操作记录日志
case_log_service.create_log(
case_id=case.id,
content="案件已创建",
log_type="system",
user=user
)
🐛 常见问题
Q1: 如何添加新的案件阶段?
A: 在 models.py 的 CASE_STAGES 中添加新阶段,然后运行迁移。
Q2: 如何实现案件搜索?
A: 使用 CaseService.list_cases() 方法,传递搜索参数。
Q3: 如何导出案件数据?
A: 使用 Django Admin 的导出功能,或调用 API 获取数据后处理。
📈 性能优化
- ✅ 使用
select_related预加载关联对象 - ✅ 使用
prefetch_related预加载多对多关系 - ✅ 使用索引优化查询(案件名称、案号、状态)
- ✅ 使用缓存减少数据库查询
🔄 版本历史
- v1.0.0 (2024-01): 初始版本
- v1.1.0 (2024-03): 添加司法信息管理
- v1.2.0 (2024-06): 添加案号管理
- v1.3.0 (2024-09): 添加监管机关功能