Download apps/evidence/api/evidence_api.py from jun2024/fc: direct link, hf CLI and curl.
- Browser
- Download file 3.08 kB
-
https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/evidence/api/evidence_api.py
- Command line
-
hf download hf://spaces/jun2024/fc/apps/evidence/api/evidence_api.py
-
curl -L -o evidence_api.py https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/evidence/api/evidence_api.py
3.08 kB
| """ | |
| 证据清单 API | |
| 提供证据清单的排序等 API 端点. | |
| Requirements: 4.2, 4.3, 12.1 | |
| """ | |
| from __future__ import annotations | |
| from typing import Any | |
| from django.http import HttpRequest | |
| from ninja import Router, Schema | |
| from apps.core.security.auth import JWTOrSessionAuth | |
| router = Router(tags=["证据清单"], auth=JWTOrSessionAuth()) | |
| def _get_evidence_service() -> Any: | |
| """工厂函数获取证据服务""" | |
| from apps.evidence.services.wiring import get_evidence_service | |
| return get_evidence_service() | |
| class ReorderItemsRequest(Schema): | |
| """重新排序请求""" | |
| item_ids: list[int] | |
| class ReorderItemsResponse(Schema): | |
| """重新排序响应""" | |
| success: bool | |
| message: str = "" | |
| def reorder_evidence_items(request: HttpRequest, list_id: int, data: ReorderItemsRequest) -> Any: | |
| """ | |
| 重新排序证据明细 | |
| Args: | |
| list_id: 证据清单 ID | |
| data: 包含新顺序的明细 ID 列表 | |
| Returns: | |
| 操作结果 | |
| Requirements: 4.2, 4.3 | |
| """ | |
| service = _get_evidence_service() | |
| service.reorder_items(list_id, data.item_ids) | |
| return ReorderItemsResponse(success=True, message="排序成功") | |
| # --- AI 辅助 --- | |
| class AIPurposeRequest(Schema): | |
| """AI 证明目的建议请求""" | |
| cause_of_action: str = "" | |
| evidence_type: str = "" | |
| evidence_name: str = "" | |
| content_summary: str = "" | |
| class AIPurposeResponse(Schema): | |
| """AI 证明目的建议响应""" | |
| suggestions: list[str] | |
| class AICrossExamRequest(Schema): | |
| """AI 质证意见请求""" | |
| cause_of_action: str = "" | |
| our_claim: str = "" | |
| evidence_name: str = "" | |
| content_summary: str = "" | |
| class AICrossExamResponse(Schema): | |
| """AI 质证意见响应""" | |
| cross_examination: dict[str, Any] | |
| def _get_ai_service() -> Any: | |
| from apps.evidence.services.evidence_ai_service import EvidenceAIService | |
| return EvidenceAIService() | |
| def ai_suggest_purpose(request: HttpRequest, data: AIPurposeRequest) -> Any: | |
| svc = _get_ai_service() | |
| suggestions = svc.suggest_purpose( | |
| cause_of_action=data.cause_of_action, | |
| evidence_type=data.evidence_type, | |
| evidence_name=data.evidence_name, | |
| content_summary=data.content_summary, | |
| ) | |
| return AIPurposeResponse(suggestions=suggestions) | |
| def ai_generate_cross_examination(request: HttpRequest, data: AICrossExamRequest) -> Any: | |
| svc = _get_ai_service() | |
| result = svc.generate_cross_examination( | |
| cause_of_action=data.cause_of_action, | |
| our_claim=data.our_claim, | |
| evidence_name=data.evidence_name, | |
| content_summary=data.content_summary, | |
| ) | |
| return AICrossExamResponse(cross_examination=result) | |