File size: 8,017 Bytes
b4f2238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
"""
文档模块类型存根文件

为 Django ORM 动态属性提供类型定义,解决 mypy [attr-defined] 错误。
Requirements: 3.4
"""

from datetime import datetime
from typing import Any

from django.db import models
from django.db.models import Manager
from django.db.models.fields.files import FieldFile

from apps.organization.models import Lawyer

class FolderTemplate(models.Model):
    # 主键
    id: int

    # 字段
    name: str
    template_type: str
    case_types: list[str]
    case_stages: list[str]
    contract_types: list[str]
    legal_statuses: list[str]
    legal_status_match_mode: str
    structure: dict[str, Any]
    is_default: bool
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # 反向关系
    document_bindings: Manager[DocumentTemplateFolderBinding]

    # Meta
    objects: Manager[FolderTemplate]

    def __str__(self) -> str: ...
    @property
    def template_type_display(self) -> str: ...
    @property
    def case_types_display(self) -> str: ...
    @property
    def case_stages_display(self) -> str: ...
    @property
    def contract_types_display(self) -> str: ...
    @property
    def case_type(self) -> str | None: ...
    @property
    def case_stage(self) -> str | None: ...
    @property
    def legal_statuses_display(self) -> str: ...
    def get_legal_statuses_display(self) -> str: ...
    def delete(self, *args: Any, **kwargs: Any) -> tuple[int, dict[str, int]]: ...

class DocumentTemplate(models.Model):
    # 主键
    id: int

    # 字段
    name: str
    description: str
    template_type: str
    contract_sub_type: str | None
    case_sub_type: str | None
    file: FieldFile
    file_path: str
    case_types: list[str]
    case_stages: list[str]
    contract_types: list[str]
    legal_statuses: list[str]
    legal_status_match_mode: str
    function_code: str | None
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # 反向关系
    folder_bindings: Manager[DocumentTemplateFolderBinding]
    evidence_lists: Manager[EvidenceList]

    # Meta
    objects: Manager[DocumentTemplate]

    def __str__(self) -> str: ...
    def clean(self) -> None: ...
    def get_file_location(self) -> str: ...
    @property
    def template_type_display(self) -> str: ...
    @property
    def case_types_display(self) -> str: ...
    @property
    def case_stages_display(self) -> str: ...
    @property
    def contract_types_display(self) -> str: ...
    def get_legal_statuses_display(self) -> str: ...
    def delete(self, *args: Any, **kwargs: Any) -> tuple[int, dict[str, int]]: ...

class DocumentTemplateFolderBinding(models.Model):
    # 主键
    id: int

    # 字段
    document_template_id: int
    document_template: DocumentTemplate
    folder_template_id: int
    folder_template: FolderTemplate
    folder_node_id: str
    folder_node_path: str
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # Meta
    objects: Manager[DocumentTemplateFolderBinding]

    def __str__(self) -> str: ...

class EvidenceList(models.Model):
    # 主键
    id: int

    # 字段
    case_id: int
    case: Any  # cases.Case
    list_type: str
    previous_list_id: int | None
    previous_list: EvidenceList | None
    title: str
    order: int
    merged_pdf: FieldFile
    total_pages: int
    export_version: int
    merge_status: str
    merge_error: str
    merge_started_at: datetime | None
    merge_finished_at: datetime | None
    merge_progress: int
    merge_current: int
    merge_total: int
    merge_message: str
    export_template_id: int | None
    export_template: DocumentTemplate | None
    created_by_id: int | None
    created_by: Lawyer | None
    created_at: datetime
    updated_at: datetime

    # 反向关系
    items: Manager[EvidenceItem]
    next_lists: Manager[EvidenceList]

    # Meta
    objects: Manager[EvidenceList]

    def __str__(self) -> str: ...
    @property
    def start_order(self) -> int: ...
    @property
    def start_page(self) -> int: ...
    @property
    def end_page(self) -> int: ...
    @property
    def page_range_display(self) -> str: ...
    @property
    def order_range_display(self) -> str: ...

class EvidenceItem(models.Model):
    # 主键
    id: int

    # 字段
    evidence_list_id: int
    evidence_list: EvidenceList
    order: int
    name: str
    purpose: str
    file: FieldFile
    file_name: str
    file_size: int
    page_count: int
    page_start: int | None
    page_end: int | None
    ai_analysis: dict[str, Any]
    created_at: datetime
    updated_at: datetime

    # Meta
    objects: Manager[EvidenceItem]

    def __str__(self) -> str: ...
    @property
    def page_range_display(self) -> str: ...
    @property
    def file_size_display(self) -> str: ...

class GenerationTask(models.Model):
    # 主键
    id: int

    # 字段
    case_id: int | None
    case: Any  # cases.Case
    contract_id: int | None
    contract: Any  # contracts.Contract
    litigation_session_id: int | None
    litigation_session: Any  # litigation_ai.LitigationSession
    generation_method: str
    document_type: str
    template_id: int | None
    status: str
    result_file: FieldFile
    error_message: str
    metadata: dict[str, Any]
    created_by_id: int | None
    created_by: Lawyer | None
    created_at: datetime
    completed_at: datetime | None

    # Meta
    objects: Manager[GenerationTask]

    def __str__(self) -> str: ...
    def get_status_display(self) -> str: ...
    @property
    def is_ai_generated(self) -> bool: ...
    @property
    def duration_seconds(self) -> int: ...
    @property
    def folder_template_id(self) -> int | None: ...
    @folder_template_id.setter
    def folder_template_id(self, value: int | None) -> None: ...
    @property
    def folder_template(self) -> FolderTemplate | None: ...
    @property
    def output_path(self) -> str | None: ...
    @output_path.setter
    def output_path(self, value: str | None) -> None: ...
    @property
    def generated_files(self) -> list[str]: ...
    @generated_files.setter
    def generated_files(self, value: list[str] | None) -> None: ...
    @property
    def error_logs(self) -> list[str]: ...
    @error_logs.setter
    def error_logs(self, value: list[str] | None) -> None: ...

class GenerationConfig(models.Model):
    # 主键
    id: int

    # 字段
    name: str
    config_type: str
    value: dict[str, Any]
    description: str
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # Meta
    objects: Manager[GenerationConfig]

    def __str__(self) -> str: ...
    @property
    def case_type(self) -> str | None: ...
    @property
    def case_stage(self) -> str | None: ...
    @property
    def document_template_id(self) -> int | None: ...
    @property
    def folder_path(self) -> str | None: ...
    @property
    def priority(self) -> int: ...
    @property
    def condition(self) -> dict[str, Any]: ...

class TemplateAuditLog(models.Model):
    # 主键
    id: int

    # 字段
    template_id: int
    action: str
    actor_id: int | None
    actor: Lawyer | None
    changes: dict[str, Any]
    created_at: datetime

    # Meta
    objects: Manager[TemplateAuditLog]

class Placeholder(models.Model):
    # 主键
    id: int

    # 字段
    key: str
    name: str
    category: str
    format_type: str
    description: str
    example: str
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # Meta
    objects: Manager[Placeholder]

class ProxyMatterRule(models.Model):
    # 主键
    id: int

    # 字段
    case_types: list[str]
    case_type: str | None
    case_stage: str
    legal_statuses: list[str]
    legal_status_match_mode: str
    items_text: str
    priority: int
    is_active: bool
    created_at: datetime
    updated_at: datetime

    # Meta
    objects: Manager[ProxyMatterRule]

    def get_case_types_display(self) -> str: ...
    def get_legal_statuses_display(self) -> str: ...