|
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 后台 | |
| ```bash | |
| # 访问案件管理后台 | |
| open http://localhost:8000/admin/cases/ | |
| ``` | |
| ### 2. API 使用 | |
| ```python | |
| 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 层使用 | |
| ```python | |
| 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`: 删除案件 | |
| ### 对象级别权限 | |
| - 案件创建人可以查看和修改自己的案件 | |
| - 被指派的律师可以查看和修改案件 | |
| - 管理员可以查看和修改所有案件 | |
| ## 🧪 测试 | |
| ```bash | |
| # 运行单元测试 | |
| 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](SUPERVISING_AUTHORITY_FEATURE.md)** - 监管机关功能说明 | |
| - **[models.py](models.py)** - 数据模型定义 | |
| - **[schemas.py](schemas.py)** - API Schema 定义 | |
| - **[validators.py](validators.py)** - 数据验证器 | |
| ## 🔗 依赖模块 | |
| - **contracts**: 合同模块(案件关联合同) | |
| - **client**: 客户模块(当事人关联客户) | |
| - **organization**: 组织模块(律师、律所) | |
| - **core**: 核心模块(异常、接口、验证器) | |
| ## 🎯 最佳实践 | |
| ### 1. 使用 Service 层 | |
| ```python | |
| # ✅ 正确:使用 Service 层 | |
| service = CaseService(contract_service=ContractService()) | |
| case = service.create_case(data, user) | |
| # ❌ 错误:直接操作 Model | |
| case = Case.objects.create(name="案件", contract_id=1) | |
| ``` | |
| ### 2. 权限检查 | |
| ```python | |
| # ✅ 正确:在 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 验证 | |
| ```python | |
| # ✅ 正确:使用 Pydantic Schema | |
| data = CaseCreateSchema( | |
| name="案件名称", | |
| contract_id=1, | |
| current_stage="first_trial" | |
| ) | |
| case = service.create_case(data, user) | |
| ``` | |
| ### 4. 记录案件日志 | |
| ```python | |
| # ✅ 正确:重要操作记录日志 | |
| 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): 添加监管机关功能 | |