py_wisharetec_toolkit 3.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1276 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ """Shanshu API 返回模型与响应解析。
5
+
6
+ 所有接口返回的结构化校验均在此使用 pydantic 实现。
7
+ 仅对 ``code`` 字段做判断,其余字段允许任意属性。
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from typing import Any, Generic, TypeVar
13
+
14
+ from pydantic import BaseModel, Field, ConfigDict
15
+
16
+ T = TypeVar("T")
17
+
18
+
19
+ class ShanshuLoginError(RuntimeError):
20
+ """Shanshu 登录业务异常(返回体包含 ``code`` 字段视为登录失败)。"""
21
+
22
+
23
+ class ShanshuBaseResponse(BaseModel):
24
+ """通用 API 响应模型。
25
+
26
+ - ``code`` 存在即视为业务失败;
27
+ - 允许额外任意属性。
28
+ """
29
+
30
+ model_config = ConfigDict(extra="allow")
31
+
32
+ code: int | None = Field(default=None, description="业务状态码,存在即视为失败")
33
+
34
+ @property
35
+ def ok(self) -> bool:
36
+ """返回体不包含 ``code`` 字段即视为成功。"""
37
+ return self.code is None
38
+
39
+
40
+ class ShanshuLoginResponse(ShanshuBaseResponse):
41
+ """登录接口响应模型(返回体不含 ``code`` 字段即为成功)。"""
42
+
43
+
44
+ class ShanshuCommunityRecord(BaseModel):
45
+ """园区档案记录(前台分页接口 records 数组中的单条记录)。
46
+
47
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
48
+ """
49
+
50
+ model_config = ConfigDict(extra="allow")
51
+
52
+ id: str | None = None
53
+ name: str | None = None
54
+ code: str | None = None
55
+ cover: str | None = None
56
+ province: str | None = None
57
+ city: str | None = None
58
+ area: str | None = None
59
+ shequ: str | None = None
60
+ street: str | None = None
61
+ longitude: str | None = None
62
+ latitude: str | None = None
63
+ type: Any = None
64
+ typeName: str | None = None
65
+ stage: str | None = None
66
+ ownership: int | None = None
67
+ buildArea: Any = None
68
+ contacts: Any = None
69
+ serialNumber: str | None = None
70
+ contactsPhone: str | None = None
71
+ developer: str | None = None
72
+ developerNames: Any = None
73
+ state: int | None = None
74
+ tenantId: str | None = None
75
+ disabled: int | None = None
76
+ creator: str | None = None
77
+ operator: str | None = None
78
+ creatorName: str | None = None
79
+ operatorName: str | None = None
80
+ gmtCreate: str | None = None
81
+ gmtModify: str | None = None
82
+ orgId: Any = None
83
+ orgIds: list[Any] | None = None
84
+ orgNames: list[Any] | None = None
85
+ typeNameFlag: str | None = None
86
+ takeOverDate: Any = None
87
+ orgFinanceId: Any = None
88
+ orgFinanceName: Any = None
89
+ totalHouses: int | None = None
90
+ streetCommunity: str | None = None
91
+ totalHouseArea: str | None = None
92
+ expectedRentYearAmount: str | None = None
93
+ expectedYearManagementFee: str | None = None
94
+ currentOccupancyRate: str | None = None
95
+
96
+
97
+ class ShanshuPageResponse(ShanshuBaseResponse, Generic[T]):
98
+ """分页响应模型。
99
+
100
+ 继承 ``ShanshuBaseResponse``,``code`` 存在即视为失败;
101
+ ``records`` 为泛型列表,兼容任意记录类型。
102
+ """
103
+
104
+ pageNum: int = Field(default=1, description="页码")
105
+ pageSize: int = Field(default=20, description="每页大小")
106
+ total: int = Field(default=0, description="总记录数")
107
+ last: bool = Field(default=False, description="是否最后一页")
108
+ records: list[T] | None = Field(default=None, description="记录列表")
109
+
110
+
111
+ class ShanshuCommunityPageResponse(ShanshuPageResponse[ShanshuCommunityRecord]):
112
+ """园区档案分页响应模型。"""
113
+
114
+
115
+ class ShanshuPropertyRecord(BaseModel):
116
+ """房产档案记录(房产分页接口 records 数组中的单条记录)。
117
+
118
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
119
+ """
120
+
121
+ model_config = ConfigDict(extra="allow")
122
+
123
+ id: int | None = None
124
+ type: int | None = None
125
+ typeName: str | None = None
126
+ communityId: str | None = None
127
+ pid: str | None = None
128
+ name: str | None = None
129
+ standardSpaceName: str | None = None
130
+ ownership: int | None = None
131
+ houseOwnership: Any = None
132
+ houseOwnershipName: Any = None
133
+ ownershipName: Any = None
134
+ isAsset: int | None = None
135
+ typeNameFlag: str | None = None
136
+ deleted: int | None = None
137
+ creatorName: str | None = None
138
+ operatorName: str | None = None
139
+ creator: str | None = None
140
+ operator: str | None = None
141
+ gmtCreate: str | None = None
142
+ gmtModify: str | None = None
143
+ sourceSys: int | None = None
144
+ path: list[Any] | None = None
145
+ disabled: int | None = None
146
+ province: str | None = None
147
+ city: str | None = None
148
+ district: str | None = None
149
+ address: str | None = None
150
+ longitude: Any = None
151
+ latitude: Any = None
152
+ remark: Any = None
153
+ sort: int | None = None
154
+ effectiveFlag: bool | None = None
155
+ spaceIndex: int | None = None
156
+ buildArea: float | None = None
157
+ floor: str | None = None
158
+ billableArea: float | None = None
159
+ houseType: Any = None
160
+ houseSalesState: Any = None
161
+ houseDeliveryState: Any = None
162
+ houseDecoratState: Any = None
163
+ houseUsageState: str | None = None
164
+ houseSalesName: Any = None
165
+ houseDeliveryName: Any = None
166
+ houseDecoratName: Any = None
167
+ blockName: Any = None
168
+ buildingNumberName: Any = None
169
+ unitName: Any = None
170
+ roomName: Any = None
171
+ isBySplitMerge: int | None = None
172
+ operationState: int | None = None
173
+ decorateTypeCode: Any = None
174
+ decorateTypeName: str | None = None
175
+ decorationStageCfgId: Any = None
176
+ decorationStageCfgName: str | None = None
177
+ parkingNames: Any = None
178
+ visitNumber: Any = None
179
+ taskTypeName: Any = None
180
+ taskName: Any = None
181
+ middleTaskId: Any = None
182
+ taskTypeId: Any = None
183
+ instSource: Any = None
184
+ status: Any = None
185
+ statusName: Any = None
186
+ assigneeName: Any = None
187
+ taskStartTime: Any = None
188
+ taskEndTime: Any = None
189
+ communityName: Any = None
190
+ houseName: Any = None
191
+ houseId: Any = None
192
+ visitTime: Any = None
193
+ callee: Any = None
194
+ visitLog: Any = None
195
+ picture: Any = None
196
+ ifTimeOut: Any = None
197
+ ifTimeOutName: Any = None
198
+ tenantId: Any = None
199
+ pictureFList: Any = None
200
+ tagList: Any = None
201
+ tagToExport: Any = None
202
+ lease: Any = None
203
+ isRentName: str | None = None
204
+ isRent: int | None = None
205
+ leaseName: Any = None
206
+ customerId: Any = None
207
+ customerName: Any = None
208
+ rentAmount: Any = None
209
+ rentAmountName: Any = None
210
+ estimateManageFee: Any = None
211
+ estimateManageFeeName: Any = None
212
+ manageFeeRate: Any = None
213
+ manageFeeRateName: Any = None
214
+ contractStartDate: Any = None
215
+ contractEndDate: Any = None
216
+ certificateOfTitle: Any = None
217
+ leasedArea: Any = None
218
+ leasedAreaName: Any = None
219
+ rentStandard: Any = None
220
+ rentUnit: Any = None
221
+ rentStandardName: Any = None
222
+ externalId: Any = None
223
+
224
+
225
+ class ShanshuPropertyPageResponse(ShanshuPageResponse[ShanshuPropertyRecord]):
226
+ """房产档案分页响应模型。"""
227
+
228
+
229
+ class ShanshuYardArchiveRecord(BaseModel):
230
+ """车场档案记录(车场档案分页接口 records 数组中的单条记录)。
231
+
232
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
233
+ """
234
+
235
+ model_config = ConfigDict(extra="allow")
236
+
237
+ id: str | None = None
238
+ name: str | None = None
239
+ parkCode: Any = None
240
+ thirdId: Any = None
241
+ communityId: str | None = None
242
+ communityName: str | None = None
243
+ parkType: int | None = None
244
+ parkTypeName: str | None = None
245
+ disabled: int | None = None
246
+ disabledName: str | None = None
247
+ totalFloor: Any = None
248
+ carNum: Any = None
249
+ buildArea: Any = None
250
+ numberEntrance: Any = None
251
+ numberExport: Any = None
252
+ remark: Any = None
253
+ remarks: Any = None
254
+ pid: str | None = None
255
+ operatorName: str | None = None
256
+ gmtModify: str | None = None
257
+ fileUrl: Any = None
258
+ file: Any = None
259
+ contactPeople: Any = None
260
+ contactPhone: Any = None
261
+
262
+
263
+ class ShanshuYardArchivePageResponse(ShanshuPageResponse[ShanshuYardArchiveRecord]):
264
+ """车场档案分页响应模型。"""
265
+
266
+
267
+ class ShanshuBuildingRecord(BaseModel):
268
+ """楼幢档案记录(楼幢分页接口 records 数组中的单条记录)。
269
+
270
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
271
+ """
272
+
273
+ model_config = ConfigDict(extra="allow")
274
+
275
+ buildingId: str | None = None
276
+ buildingName: str | None = None
277
+ floor: Any = None
278
+ disabled: int | None = None
279
+ disabledName: str | None = None
280
+ buildingNature: Any = None
281
+ buildingStructure: Any = None
282
+ buildingNatureName: Any = None
283
+ buildingStructureName: Any = None
284
+ floorHeight: Any = None
285
+ unitCount: int | None = None
286
+ deliveryDate: Any = None
287
+ operator: str | None = None
288
+ operatorName: str | None = None
289
+ gmtModify: str | None = None
290
+ standardSpaceName: str | None = None
291
+ communityId: str | None = None
292
+ communityName: str | None = None
293
+ blockName: Any = None
294
+ buildingNumberName: Any = None
295
+ type: Any = None
296
+ pid: str | None = None
297
+ buildingAssetType: Any = None
298
+ buildingAssetTypeName: Any = None
299
+ assetOwnershipUnit: Any = None
300
+ buildingOwner: Any = None
301
+
302
+
303
+ class ShanshuBuildingPageResponse(ShanshuPageResponse[ShanshuBuildingRecord]):
304
+ """楼幢档案分页响应模型。"""
305
+
306
+
307
+ class ShanshuResidentRecord(BaseModel):
308
+ """用户/居民档案记录(居民分页接口 records 数组中的单条记录)。
309
+
310
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
311
+ """
312
+
313
+ model_config = ConfigDict(extra="allow")
314
+
315
+ id: str | None = None
316
+ userName: str | None = None
317
+ nickName: Any = None
318
+ headPicUrl: Any = None
319
+ certificates: Any = None
320
+ headPicUrlVo: Any = None
321
+ mobileNum: str | None = None
322
+ politicalStatus: Any = None
323
+ gender: Any = None
324
+ birthday: Any = None
325
+ job: Any = None
326
+ nation: Any = None
327
+ maritalStatus: Any = None
328
+ arOperator: Any = None
329
+ tenantId: Any = None
330
+ arGmtModify: Any = None
331
+ telephone: Any = None
332
+ email: Any = None
333
+ nameAndPhone: Any = None
334
+ logoff: bool | None = None
335
+ logoffName: str | None = None
336
+ tageList: Any = None
337
+ registeredSource: int | None = None
338
+ registeredSourceName: str | None = None
339
+ validated: int | None = None
340
+ validatedName: str | None = None
341
+ relevanceAssets: int | None = None
342
+ relevanceAssetsName: str | None = None
343
+ gmtCreate: str | None = None
344
+ gmtModify: str | None = None
345
+ logoffTime: Any = None
346
+ uiaGmtModify: Any = None
347
+ idType: Any = None
348
+ idTypeName: Any = None
349
+ idCardNum: Any = None
350
+ imageObverse: Any = None
351
+ imageReverse: Any = None
352
+ userIdentityAuth: Any = None
353
+ sassetVS: Any = None
354
+
355
+
356
+ class ShanshuResidentPageResponse(ShanshuPageResponse[ShanshuResidentRecord]):
357
+ """用户/居民档案分页响应模型。"""
358
+
359
+
360
+ class ShanshuArchiveRecord(BaseModel):
361
+ """业主档案记录(业主档案分页接口 records 数组中的单条记录)。
362
+
363
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
364
+ """
365
+
366
+ model_config = ConfigDict(extra="allow")
367
+
368
+ id: str | None = None
369
+ userId: str | None = None
370
+ communityId: str | None = None
371
+ communityName: str | None = None
372
+ spaceId: Any = None
373
+ parkingNames: Any = None
374
+ carNums: Any = None
375
+ expireDateStr: Any = None
376
+ externalId: Any = None
377
+ spacePath: list[Any] | None = None
378
+ spaceName: str | None = None
379
+ identityId: str | None = None
380
+ identity: str | None = None
381
+ isHouseholder: bool | None = None
382
+ houseHolder: str | None = None
383
+ examineStatus: int | None = None
384
+ examineStatusName: Any = None
385
+ creator: str | None = None
386
+ operator: str | None = None
387
+ operatorName: str | None = None
388
+ gmtCreate: str | None = None
389
+ gmtModify: str | None = None
390
+ name: str | None = None
391
+ nickName: Any = None
392
+ userRegistered: bool | None = None
393
+ userResidentDesc: str | None = None
394
+ registerTime: Any = None
395
+ phone: str | None = None
396
+ verified: bool | None = None
397
+ verifiedName: str | None = None
398
+ dataSources: int | None = None
399
+ sex: int | None = None
400
+ sexName: str | None = None
401
+ certificatesType: str | None = None
402
+ certificatesTypeName: Any = None
403
+ certificatesNumber: str | None = None
404
+ age: int | None = None
405
+ spaceTypeId: Any = None
406
+ identityType: Any = None
407
+ telephone: str | None = None
408
+ tags: Any = None
409
+ tagNames: str | None = None
410
+ block: Any = None
411
+ buildingNum: Any = None
412
+ unit: Any = None
413
+ room: Any = None
414
+ relation: int | None = None
415
+ nation: str | None = None
416
+ phone1: Any = None
417
+ phone2: Any = None
418
+ phone3: Any = None
419
+ birthday: str | None = None
420
+ houseUsageState: Any = None
421
+ category: int | None = None
422
+ categoryName: str | None = None
423
+ type: Any = None
424
+ isHouseOwner: int | None = None
425
+ isHouseOwnerName: Any = None
426
+ byProcess: int | None = None
427
+ headPicUrl: str | None = None
428
+ headPic: Any = None
429
+
430
+
431
+ class ShanshuArchivePageResponse(ShanshuPageResponse[ShanshuArchiveRecord]):
432
+ """业主档案分页响应模型。"""
433
+
434
+
435
+ class ShanshuCarManageRecord(BaseModel):
436
+ """车辆档案记录(车辆管理分页接口 records 数组中的单条记录)。
437
+
438
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
439
+ """
440
+
441
+ model_config = ConfigDict(extra="allow")
442
+
443
+ id: str | None = None
444
+ tenantId: str | None = None
445
+ communityId: str | None = None
446
+ communityName: str | None = None
447
+ spaceId: Any = None
448
+ standardSpaceName: str | None = None
449
+ ownerId: str | None = None
450
+ ownerName: str | None = None
451
+ ownerPhone: str | None = None
452
+ ownerType: str | None = None
453
+ ownerTypeName: str | None = None
454
+ carNum: str | None = None
455
+ carBrand: Any = None
456
+ carBrandName: Any = None
457
+ carColor: Any = None
458
+ driverLicense: Any = None
459
+ remark: Any = None
460
+ creator: str | None = None
461
+ creatorName: str | None = None
462
+ creatorPhone: Any = None
463
+ gmtCreate: str | None = None
464
+ gmtModify: str | None = None
465
+ operator: str | None = None
466
+ operatorName: str | None = None
467
+ deleted: int | None = None
468
+ userSpaceId: Any = None
469
+ recordCount: Any = None
470
+ houseNames: str | None = None
471
+ houseNameDesc: str | None = None
472
+ parkingNames: str | None = None
473
+ parkingNameDesc: str | None = None
474
+ carViolationRecord: Any = None
475
+
476
+
477
+ class ShanshuCarManagePageResponse(ShanshuPageResponse[ShanshuCarManageRecord]):
478
+ """车辆档案分页响应模型。"""
479
+
480
+
481
+ class ShanshuParkingRecord(BaseModel):
482
+ """车位档案记录(车位分页接口 records 数组中的单条记录)。
483
+
484
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
485
+ """
486
+
487
+ model_config = ConfigDict(extra="allow")
488
+
489
+ id: int | None = None
490
+ type: int | None = None
491
+ typeName: str | None = None
492
+ communityId: str | None = None
493
+ pid: str | None = None
494
+ name: str | None = None
495
+ standardSpaceName: str | None = None
496
+ ownership: int | None = None
497
+ houseOwnership: Any = None
498
+ houseOwnershipName: Any = None
499
+ ownershipName: Any = None
500
+ isAsset: int | None = None
501
+ typeNameFlag: str | None = None
502
+ deleted: int | None = None
503
+ creatorName: str | None = None
504
+ operatorName: str | None = None
505
+ creator: str | None = None
506
+ operator: str | None = None
507
+ gmtCreate: str | None = None
508
+ gmtModify: str | None = None
509
+ sourceSys: int | None = None
510
+ path: list[Any] | None = None
511
+ disabled: int | None = None
512
+ province: str | None = None
513
+ city: str | None = None
514
+ district: str | None = None
515
+ address: str | None = None
516
+ longitude: Any = None
517
+ latitude: Any = None
518
+ remark: Any = None
519
+ sort: int | None = None
520
+ effectiveFlag: bool | None = None
521
+ spaceIndex: int | None = None
522
+ buildArea: Any = None
523
+ floor: Any = None
524
+ billableArea: Any = None
525
+ houseType: Any = None
526
+ houseSalesState: Any = None
527
+ houseDeliveryState: Any = None
528
+ houseDecoratState: Any = None
529
+ houseUsageState: Any = None
530
+ houseSalesName: Any = None
531
+ houseDeliveryName: Any = None
532
+ houseDecoratName: Any = None
533
+ blockName: Any = None
534
+ buildingNumberName: Any = None
535
+ unitName: Any = None
536
+ roomName: Any = None
537
+ isBySplitMerge: Any = None
538
+ operationState: int | None = None
539
+ parkSalesState: Any = None
540
+ parkDeliveryState: Any = None
541
+ parkSalesName: Any = None
542
+ parkDeliveryName: Any = None
543
+ paringName: Any = None
544
+ parkingAreaName: Any = None
545
+ parkingPointName: Any = None
546
+ num: Any = None
547
+ tagToExport: Any = None
548
+ houseTags: Any = None
549
+ isRent: int | None = None
550
+ isRentName: str | None = None
551
+ lease: Any = None
552
+ leaseName: Any = None
553
+ rentStandard: Any = None
554
+ rentUnit: Any = None
555
+ paymentMethod: Any = None
556
+ leasedArea: Any = None
557
+ operate: Any = None
558
+ operateName: Any = None
559
+ externalId: Any = None
560
+
561
+
562
+ class ShanshuParkingPageResponse(ShanshuPageResponse[ShanshuParkingRecord]):
563
+ """车位档案分页响应模型。"""
564
+
565
+
566
+ class ShanshuWorkOrderRecord(BaseModel):
567
+ """工单记录(工单分页接口 records 数组中的单条记录)。
568
+
569
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
570
+ """
571
+
572
+ model_config = ConfigDict(extra="allow")
573
+
574
+ id: Any = None
575
+ pid: Any = None
576
+ children: Any = None
577
+ processCode: str | None = None
578
+ procInstId: str | None = None
579
+ procInstName: str | None = None
580
+ appCode: str | None = None
581
+ categoryId: Any = None
582
+ categoryName: str | None = None
583
+ instSource: str | None = None
584
+ customStatusCode: str | None = None
585
+ customStatus: str | None = None
586
+ sysStatusCode: str | None = None
587
+ tenantId: str | None = None
588
+ suitableTargetType: str | None = None
589
+ suitableTargetId: str | None = None
590
+ suitableTargetName: str | None = None
591
+ assignee: Any = None
592
+ candidate: Any = None
593
+ assigneeName: str | None = None
594
+ startTime: str | None = None
595
+ endTime: Any = None
596
+ dealEndTime: Any = None
597
+ reviewEndTime: Any = None
598
+ taskId: str | None = None
599
+ nodeId: str | None = None
600
+ suspendOvertime: Any = None
601
+ nodeBizCfg: Any = None
602
+ settingsD: Any = None
603
+ gmtModify: str | None = None
604
+ formData: Any = None
605
+ firstClaimUserId: Any = None
606
+ firstClaimTime: Any = None
607
+ endUserName: Any = None
608
+ endUserId: Any = None
609
+ endCoHandlers: Any = None
610
+ endCoHandlerIds: Any = None
611
+ dealUserName: str | None = None
612
+ dealUserId: Any = None
613
+ dealUserMobile: str | None = None
614
+ coHandlers: Any = None
615
+ coHandlersDesc: str | None = None
616
+ curCoHandlers: Any = None
617
+ actionVo: list[Any] | None = None
618
+ showBtnDeal: Any = None
619
+ showBtnTransfer: Any = None
620
+ showWorkOrderBack: Any = None
621
+ showBtnClose: Any = None
622
+ showBtnBack: Any = None
623
+ showBtnAddlog: Any = None
624
+ showBtnAccept: Any = None
625
+ showBtnNotAccept: Any = None
626
+ showBtnGrab: Any = None
627
+ showBtnPriority: Any = None
628
+ showBtnMatterLevel: Any = None
629
+ showBtnSuspend: Any = None
630
+ showBtnExtendSuspend: Any = None
631
+ showBtnActivate: Any = None
632
+ showBtnCancel: Any = None
633
+ showBtnInvalid: Any = None
634
+ showBtnCoHandler: Any = None
635
+ showBtnDelete: Any = None
636
+ formItems: Any = None
637
+ process: Any = None
638
+ customStatusList: Any = None
639
+ relateType: Any = None
640
+ relateTypeDesc: Any = None
641
+ preRelateInfo: Any = None
642
+ expiredInfo: Any = None
643
+ expiredStatusDesc: str | None = None
644
+ alertLevelDesc: Any = None
645
+ suspensionInfo: Any = None
646
+ nodeTimeInfoList: Any = None
647
+ curTaskList: list[Any] | None = None
648
+ allTaskList: list[Any] | None = None
649
+ priorityCode: str | None = None
650
+ priorityName: str | None = None
651
+ labelList: list[Any] | None = None
652
+ displayItemList: list[Any] | None = None
653
+ approvingInstIdList: Any = None
654
+ closedInstIdList: Any = None
655
+ suspendInstIdList: Any = None
656
+ tagsVo: Any = None
657
+ processIsMuilti: Any = None
658
+ isWorkOrderSync: Any = None
659
+ effective: Any = None
660
+ mongoId: Any = None
661
+ hisYear: Any = None
662
+ hisAppCode: Any = None
663
+ address: str | None = None
664
+ reporterName: str | None = None
665
+ reporterAddress: str | None = None
666
+ reporterMobile: str | None = None
667
+ desc: str | None = None
668
+ descFilesForExport: str | None = None
669
+ matterLevel: str | None = None
670
+ matterLevelName: str | None = None
671
+ msgSourceName: str | None = None
672
+ acceptExpired: str | None = None
673
+ dealExpired: str | None = None
674
+ settleState: Any = None
675
+ settleStateName: Any = None
676
+ isCharge: str | None = None
677
+ isEvaluation: Any = None
678
+ isEvaluationName: str | None = None
679
+ processPhone: Any = None
680
+ completionTime: Any = None
681
+ person: Any = None
682
+ shutter: Any = None
683
+ assistance: Any = None
684
+ initiator: str | None = None
685
+ initiatorName: str | None = None
686
+ initiatorMobile: str | None = None
687
+ closingTime: Any = None
688
+ laborCost: Any = None
689
+ materialsCost: Any = None
690
+ usAmount: Any = None
691
+ payWay: Any = None
692
+ payAmount: Any = None
693
+ payTime: Any = None
694
+ evaluationInformation: Any = None
695
+ contentReturn: Any = None
696
+ logArray: list[Any] | None = None
697
+ nodeTime: Any = None
698
+ nodeTiming: Any = None
699
+ completeTime: Any = None
700
+ processingTimeout: Any = None
701
+ receiveTimeout: Any = None
702
+ globalTimeout: Any = None
703
+ firstOrder: Any = None
704
+ firstman: str | None = None
705
+ logStr: str | None = None
706
+ logFilesForExport: str | None = None
707
+ fexStr: str | None = None
708
+ revisitStatus: str | None = None
709
+ evalStatus: str | None = None
710
+ serviceItemName: Any = None
711
+
712
+
713
+ class ShanshuWorkOrderPageResponse(ShanshuPageResponse[ShanshuWorkOrderRecord]):
714
+ """工单分页响应模型。"""
715
+
716
+
717
+ class ShanshuMallOrderRecord(BaseModel):
718
+ """园区商城订单记录(商城订单分页接口 records 数组中的单条记录)。
719
+
720
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
721
+ """
722
+
723
+ model_config = ConfigDict(extra="allow")
724
+
725
+ id: str | None = None
726
+ orderNumber: str | None = None
727
+ orderTypeId: str | None = None
728
+ orderTypeName: str | None = None
729
+ orderTypeCode: str | None = None
730
+ itemIdList: Any = None
731
+ itemNameList: list[Any] | None = None
732
+ itemNameListStr: str | None = None
733
+ itemNormNameList: Any = None
734
+ itemNormNameListForExport: Any = None
735
+ amount: float | None = None
736
+ amountString: str | None = None
737
+ freight: float | None = None
738
+ freightString: Any = None
739
+ discounts: float | None = None
740
+ discountsString: Any = None
741
+ actualPayment: float | None = None
742
+ actualPaymentString: Any = None
743
+ clientType: str | None = None
744
+ clientRemark: str | None = None
745
+ merchantRemark: Any = None
746
+ buyerInformation: str | None = None
747
+ consigneeInformation: str | None = None
748
+ roomId: str | None = None
749
+ buyerId: str | None = None
750
+ buyerName: str | None = None
751
+ buyerPhone: str | None = None
752
+ buyerAddress: str | None = None
753
+ consigneeAddress: str | None = None
754
+ consigneeId: Any = None
755
+ consigneeName: str | None = None
756
+ consigneePhone: str | None = None
757
+ payTime: str | None = None
758
+ orderStatusId: str | None = None
759
+ orderStatusName: str | None = None
760
+ orderStatusCode: str | None = None
761
+ closeTime: Any = None
762
+ completedTime: Any = None
763
+ settlementStatus: str | None = None
764
+ settlementStatusName: str | None = None
765
+ customerStatus: str | None = None
766
+ evaluateStatus: str | None = None
767
+ customerStatusName: str | None = None
768
+ cancelType: int | None = None
769
+ invoiceStatus: str | None = None
770
+ invoiceStatusName: str | None = None
771
+ paymentMethod: str | None = None
772
+ paymentMethodName: str | None = None
773
+ sendGoodsModel: int | None = None
774
+ storeId: str | None = None
775
+ storeName: str | None = None
776
+ facilitatorId: str | None = None
777
+ facilitatorName: str | None = None
778
+ orderSource: str | None = None
779
+ deletedStatus: bool | None = None
780
+ tenantId: str | None = None
781
+ creator: str | None = None
782
+ operator: str | None = None
783
+ gmtCreate: str | None = None
784
+ gmtModify: str | None = None
785
+ creatorName: str | None = None
786
+ operatorName: str | None = None
787
+ appId: str | None = None
788
+ appName: Any = None
789
+ gatherBillIdList: Any = None
790
+ showName: Any = None
791
+ communityId: str | None = None
792
+ voucherId: Any = None
793
+ userVoucherId: Any = None
794
+ saledTelNum: Any = None
795
+ trackingNumber: Any = None
796
+ logisticsCompany: Any = None
797
+
798
+
799
+ class ShanshuMallOrderPageResponse(ShanshuPageResponse[ShanshuMallOrderRecord]):
800
+ """园区商城订单分页响应模型。"""
801
+
802
+
803
+ class ShanshuServiceOrderRecord(BaseModel):
804
+ """服务订单记录(服务订单分页接口 records 数组中的单条记录)。
805
+
806
+ 列出已知字段,其余字段通过 ``extra="allow"`` 接收,兼容任意属性。
807
+ """
808
+
809
+ model_config = ConfigDict(extra="allow")
810
+
811
+ id: str | None = None
812
+ orderNumber: str | None = None
813
+ orderTypeId: str | None = None
814
+ orderTypeName: str | None = None
815
+ orderTypeCode: str | None = None
816
+ itemIdList: Any = None
817
+ itemNameList: list[Any] | None = None
818
+ itemNameListStr: str | None = None
819
+ itemNormNameList: Any = None
820
+ itemNormNameListForExport: Any = None
821
+ amount: float | None = None
822
+ amountString: str | None = None
823
+ freight: float | None = None
824
+ freightString: Any = None
825
+ discounts: float | None = None
826
+ discountsString: Any = None
827
+ actualPayment: float | None = None
828
+ actualPaymentString: Any = None
829
+ clientType: str | None = None
830
+ clientRemark: str | None = None
831
+ merchantRemark: Any = None
832
+ buyerInformation: str | None = None
833
+ consigneeInformation: str | None = None
834
+ roomId: str | None = None
835
+ buyerId: str | None = None
836
+ buyerName: str | None = None
837
+ buyerPhone: str | None = None
838
+ buyerAddress: str | None = None
839
+ consigneeAddress: str | None = None
840
+ consigneeId: Any = None
841
+ consigneeName: str | None = None
842
+ consigneePhone: str | None = None
843
+ payTime: str | None = None
844
+ orderStatusId: str | None = None
845
+ orderStatusName: str | None = None
846
+ orderStatusCode: str | None = None
847
+ closeTime: Any = None
848
+ completedTime: Any = None
849
+ settlementStatus: str | None = None
850
+ settlementStatusName: str | None = None
851
+ customerStatus: str | None = None
852
+ evaluateStatus: str | None = None
853
+ customerStatusName: str | None = None
854
+ cancelType: int | None = None
855
+ invoiceStatus: str | None = None
856
+ invoiceStatusName: str | None = None
857
+ paymentMethod: str | None = None
858
+ paymentMethodName: str | None = None
859
+ sendGoodsModel: int | None = None
860
+ storeId: str | None = None
861
+ storeName: str | None = None
862
+ facilitatorId: str | None = None
863
+ facilitatorName: str | None = None
864
+ orderSource: str | None = None
865
+ deletedStatus: bool | None = None
866
+ tenantId: str | None = None
867
+ creator: str | None = None
868
+ operator: str | None = None
869
+ gmtCreate: str | None = None
870
+ gmtModify: str | None = None
871
+ creatorName: str | None = None
872
+ operatorName: str | None = None
873
+ appId: str | None = None
874
+ appName: Any = None
875
+ gatherBillIdList: Any = None
876
+ showName: str | None = None
877
+ communityId: str | None = None
878
+ voucherId: Any = None
879
+ userVoucherId: Any = None
880
+ saledTelNum: Any = None
881
+ trackingNumber: Any = None
882
+ logisticsCompany: Any = None
883
+
884
+
885
+ class ShanshuServiceOrderPageResponse(ShanshuPageResponse[ShanshuServiceOrderRecord]):
886
+ """服务订单分页响应模型。"""
887
+
888
+
889
+ class ShanshuPageQueryParams(BaseModel):
890
+ """分页查询通用参数模型。
891
+
892
+ 所有分页接口共用的请求参数抽象。
893
+ """
894
+
895
+ model_config = ConfigDict(extra="allow")
896
+
897
+ conditions: dict[str, Any] | None = Field(default=None, description="查询条件")
898
+ count: bool = Field(default=True, description="是否返回总记录数")
899
+ last: bool = Field(default=True, description="是否返回 last 标志")
900
+ order_by: list[Any] | None = Field(default=None, description="排序字段列表")
901
+ page_num: int = Field(default=1, description="页码")
902
+ page_size: int = Field(default=20, description="每页大小")
903
+
904
+
905
+ class ShanshuApprovalUserRecord(BaseModel):
906
+ """审批数据 - 用户信息记录 (sponsorName/currentNodeAssign 中的 user)。"""
907
+
908
+ model_config = ConfigDict(extra="allow")
909
+
910
+ id: str | None = None
911
+ name: str | None = None
912
+ avatar: Any = None
913
+ type: Any = None
914
+ sex: Any = None
915
+ mobile: Any = None
916
+ standardDeptNames: Any = None
917
+
918
+
919
+ class ShanshuApprovalAssignRecord(BaseModel):
920
+ """审批数据 - 审批分配记录 (currentNodeAssign/latestAssignedNode)。"""
921
+
922
+ model_config = ConfigDict(extra="allow")
923
+
924
+ approvalMode: str | None = None
925
+ user: ShanshuApprovalUserRecord | None = None
926
+ nodeId: str | None = None
927
+ taskId: str | None = None
928
+ result: Any = None
929
+ nodeName: str | None = None
930
+
931
+
932
+ class ShanshuApprovalFormItemRecord(BaseModel):
933
+ """审批数据 - 表单字段记录 (formBody)。"""
934
+
935
+ model_config = ConfigDict(extra="allow")
936
+
937
+ value: Any = None
938
+ key: str | None = None
939
+
940
+
941
+ class ShanshuApprovalRecord(BaseModel):
942
+ """审批数据记录 (records 数组中的单条记录)。"""
943
+
944
+ model_config = ConfigDict(extra="allow")
945
+
946
+ actionVo: list[Any] | None = None
947
+ showBtnTransfer: Any = None
948
+ showBtnBack: Any = None
949
+ showBtnAddlog: Any = None
950
+ showBtnAccept: Any = None
951
+ showBtnNotAccept: Any = None
952
+ showBtnCommit: Any = None
953
+ showBtnCommitAgain: Any = None
954
+ showBtnRevoke: Any = None
955
+ procInstId: str | None = None
956
+ procInstName: str | None = None
957
+ appCode: str | None = None
958
+ appName: str | None = None
959
+ sponsorName: ShanshuApprovalUserRecord | None = None
960
+ sysStatus: str | None = None
961
+ sysStatusName: str | None = None
962
+ currentNode: str | None = None
963
+ currentNodeAssign: list[ShanshuApprovalAssignRecord] | None = None
964
+ startTime: str | None = None
965
+ finishTime: Any = None
966
+ approvalCode: str | None = None
967
+ formKey: str | None = None
968
+ approvalName: Any = None
969
+ nodeId: Any = None
970
+ summary: Any = None
971
+ formBody: list[ShanshuApprovalFormItemRecord] | None = None
972
+ latestAssignedNode: list[ShanshuApprovalAssignRecord] | None = None
973
+
974
+
975
+ class ShanshuApprovalPageResponse(ShanshuPageResponse[ShanshuApprovalRecord]):
976
+ """审批数据分页响应模型。"""
977
+
978
+
979
+ class ShanshuApprovalProgressUserRecord(BaseModel):
980
+ """审批详情 - 进度节点中的用户信息。"""
981
+
982
+ model_config = ConfigDict(extra="allow")
983
+
984
+ id: str | None = None
985
+ name: str | None = None
986
+ avatar: Any = None
987
+ type: Any = None
988
+ sex: Any = None
989
+ mobile: Any = None
990
+ standardDeptNames: Any = None
991
+
992
+
993
+ class ShanshuApprovalProgressCommentRecord(BaseModel):
994
+ """审批详情 - 进度节点中的评论记录。"""
995
+
996
+ model_config = ConfigDict(extra="allow")
997
+
998
+ text: str | None = None
999
+ attachments: list[Any] | None = None
1000
+ commentType: str | None = None
1001
+ id: str | None = None
1002
+ taskId: str | None = None
1003
+ type: str | None = None
1004
+ user: ShanshuApprovalProgressUserRecord | None = None
1005
+ createTime: str | None = None
1006
+
1007
+
1008
+ class ShanshuApprovalProgressRecord(BaseModel):
1009
+ """审批详情 - 审批进度记录 (progress 数组中的单条)。"""
1010
+
1011
+ model_config = ConfigDict(extra="allow")
1012
+
1013
+ nodeId: str | None = None
1014
+ taskId: str | None = None
1015
+ approvalMode: Any = None
1016
+ nodeType: str | None = None
1017
+ name: str | None = None
1018
+ user: ShanshuApprovalProgressUserRecord | None = None
1019
+ action: Any = None
1020
+ comment: list[ShanshuApprovalProgressCommentRecord] | None = None
1021
+ result: str | None = None
1022
+ startTime: str | None = None
1023
+ finishTime: str | None = None
1024
+
1025
+
1026
+ class ShanshuApprovalFormItemRecord(BaseModel):
1027
+ """审批详情 - 表单项记录 (formItems 数组中的单条)。"""
1028
+
1029
+ model_config = ConfigDict(extra="allow")
1030
+
1031
+ id: str | None = None
1032
+ icon: Any = None
1033
+ name: str | None = None
1034
+ props: Any = None
1035
+ title: str | None = None
1036
+ value: Any = None
1037
+ valueType: str | None = None
1038
+ perm: str | None = None
1039
+
1040
+
1041
+ class ShanshuApprovalDetailRecord(BaseModel):
1042
+ """审批详情 - 完整响应模型。"""
1043
+
1044
+ model_config = ConfigDict(extra="allow")
1045
+
1046
+ actionVo: list[Any] | None = None
1047
+ showBtnTransfer: Any = None
1048
+ showBtnBack: Any = None
1049
+ showBtnAddlog: Any = None
1050
+ showBtnAccept: Any = None
1051
+ showBtnNotAccept: Any = None
1052
+ showBtnCommit: Any = None
1053
+ showBtnCommitAgain: Any = None
1054
+ showBtnRevoke: Any = None
1055
+ procInstId: str | None = None
1056
+ instanceId: str | None = None
1057
+ formItems: list[ShanshuApprovalFormItemRecord] | None = None
1058
+ formData: Any = None
1059
+ progress: list[ShanshuApprovalProgressRecord] | None = None
1060
+ processDefName: str | None = None
1061
+ version: int | None = None
1062
+ status: str | None = None
1063
+ result: str | None = None
1064
+ staterUser: ShanshuApprovalProgressUserRecord | None = None
1065
+ starterDept: Any = None
1066
+ startTime: str | None = None
1067
+ appCode: str | None = None
1068
+ appName: str | None = None
1069
+ sysStatus: str | None = None
1070
+ sysStatusName: str | None = None
1071
+ processCode: str | None = None
1072
+ processNodeDetail: Any = None
1073
+ currentNodeAssign: list[ShanshuApprovalAssignRecord] | None = None
1074
+ currentNodeAssignName: str | None = None
1075
+ communityName: str | None = None
1076
+ communityId: str | None = None
1077
+
1078
+
1079
+ class ShanshuResidentVRecord(BaseModel):
1080
+ """业主详情 - 居民基本信息 (residentV)。"""
1081
+
1082
+ model_config = ConfigDict(extra="allow")
1083
+
1084
+ userId: str | None = None
1085
+ name: str | None = None
1086
+ agedOrChild: int | None = None
1087
+ phone: str | None = None
1088
+ certificatesType: str | None = None
1089
+ certificatesTypeName: str | None = None
1090
+ certificatesNumber: str | None = None
1091
+ certificates: list[Any] | None = None
1092
+ telephone: str | None = None
1093
+ headPicUrl: Any = None
1094
+ userResident: bool | None = None
1095
+ userResidentTime: Any = None
1096
+ gmtCreate: str | None = None
1097
+ validated: int | None = None
1098
+ birthday: str | None = None
1099
+ sex: int | None = None
1100
+ nickName: Any = None
1101
+
1102
+
1103
+ class ShanshuResidentDetailVRecord(BaseModel):
1104
+ """业主详情 - 居民详细信息 (residentDetailV)。"""
1105
+
1106
+ model_config = ConfigDict(extra="allow")
1107
+
1108
+ userId: str | None = None
1109
+ nation: str | None = None
1110
+ politicalStatus: Any = None
1111
+ maritalStatus: str | None = None
1112
+ education: Any = None
1113
+ job: str | None = None
1114
+ emergencyContact: str | None = None
1115
+ emergencyContactNumber: str | None = None
1116
+ telephone: str | None = None
1117
+ file: list[Any] | None = None
1118
+
1119
+
1120
+ class ShanshuOwnerListRecord(BaseModel):
1121
+ """业主详情 - 房产 ownerList 中的成员记录。"""
1122
+
1123
+ model_config = ConfigDict(extra="allow")
1124
+
1125
+ userId: str | None = None
1126
+ name: str | None = None
1127
+ agedOrChild: int | None = None
1128
+ phone: str | None = None
1129
+ sex: int | None = None
1130
+ job: str | None = None
1131
+ politicalStatus: Any = None
1132
+ registerTime: str | None = None
1133
+ identityId: Any = None
1134
+ identityName: Any = None
1135
+
1136
+
1137
+ class ShanshuHousingVRecord(BaseModel):
1138
+ """业主详情 - 房产列表记录 (housingVList)。"""
1139
+
1140
+ model_config = ConfigDict(extra="allow")
1141
+
1142
+ id: str | None = None
1143
+ userId: str | None = None
1144
+ communityId: str | None = None
1145
+ communityName: str | None = None
1146
+ spaceId: Any = None
1147
+ externalId: Any = None
1148
+ spaceName: str | None = None
1149
+ spaceTypeId: Any = None
1150
+ spaceTypeName: str | None = None
1151
+ identityId: str | None = None
1152
+ examineStatus: Any = None
1153
+ identity: str | None = None
1154
+ identityType: Any = None
1155
+ relation: int | None = None
1156
+ isPayer: int | None = None
1157
+ residenceCertificate: Any = None
1158
+ gmtJoin: Any = None
1159
+ gmtCheckIn: Any = None
1160
+ gmtDecorate: Any = None
1161
+ gmtQuit: Any = None
1162
+ gmtLiveStart: Any = None
1163
+ gmtLiveEnd: Any = None
1164
+ enterprise: str | None = None
1165
+ billableArea: Any = None
1166
+ ownerList: list[ShanshuOwnerListRecord] | None = None
1167
+ houseStatus: int | None = None
1168
+ houseStatusName: str | None = None
1169
+ houseUsageState: str | None = None
1170
+ houseUsageName: str | None = None
1171
+ gmtCreate: Any = None
1172
+ gmtModify: Any = None
1173
+ isCurrent: int | None = None
1174
+ houseHolderDate: Any = None
1175
+ transferDate: Any = None
1176
+ assetCertificate: Any = None
1177
+ tenantId: str | None = None
1178
+ prove: Any = None
1179
+ proveFileVo: Any = None
1180
+ location: Any = None
1181
+ gmtExpireStart: Any = None
1182
+ gmtExpireEnd: Any = None
1183
+ sourceSys: Any = None
1184
+ creatorName: Any = None
1185
+ operatorName: str | None = None
1186
+ category: int | None = None
1187
+ type: Any = None
1188
+ parkingText: Any = None
1189
+ isHouseOwner: int | None = None
1190
+ byProcess: Any = None
1191
+ processInstanceId: Any = None
1192
+ mainCall: Any = None
1193
+ setMainCallTime: Any = None
1194
+
1195
+
1196
+ class ShanshuSameRelationMemberRecord(BaseModel):
1197
+ """业主详情 - 同关系成员记录 (sameRelationMembersVList 中的单个成员)。"""
1198
+
1199
+ model_config = ConfigDict(extra="allow")
1200
+
1201
+ userId: str | None = None
1202
+ name: str | None = None
1203
+ agedOrChild: int | None = None
1204
+ phone: str | None = None
1205
+ sex: int | None = None
1206
+ job: Any = None
1207
+ politicalStatus: Any = None
1208
+ registerTime: str | None = None
1209
+ identityId: Any = None
1210
+ identityName: Any = None
1211
+
1212
+
1213
+ class ShanshuSameRelationMemberGroupRecord(BaseModel):
1214
+ """业主详情 - 同关系成员分组记录 (sameRelationMembersVList 中的分组)。"""
1215
+
1216
+ model_config = ConfigDict(extra="allow")
1217
+
1218
+ relation: int | None = None
1219
+ members: list[ShanshuSameRelationMemberRecord] | None = None
1220
+
1221
+
1222
+ class ShanshuOwnerDetailRecord(BaseModel):
1223
+ """业主详情 - 完整响应模型。"""
1224
+
1225
+ model_config = ConfigDict(extra="allow")
1226
+
1227
+ residentV: ShanshuResidentVRecord | None = None
1228
+ residentDetailV: ShanshuResidentDetailVRecord | None = None
1229
+ housingVList: list[ShanshuHousingVRecord] | None = None
1230
+ spaceOwnerCarVList: list[Any] | None = None
1231
+ spaceOwnerParkingVList: Any = None
1232
+ spaceOwnerStoreroomVS: list[Any] | None = None
1233
+ sameRelationMembersVList: list[ShanshuSameRelationMemberGroupRecord] | None = None
1234
+ tags: Any = None
1235
+
1236
+
1237
+ __all__ = [
1238
+ "ShanshuLoginError",
1239
+ "ShanshuBaseResponse",
1240
+ "ShanshuLoginResponse",
1241
+ "ShanshuCommunityRecord",
1242
+ "ShanshuPageResponse",
1243
+ "ShanshuCommunityPageResponse",
1244
+ "ShanshuPropertyRecord",
1245
+ "ShanshuPropertyPageResponse",
1246
+ "ShanshuYardArchiveRecord",
1247
+ "ShanshuYardArchivePageResponse",
1248
+ "ShanshuBuildingRecord",
1249
+ "ShanshuBuildingPageResponse",
1250
+ "ShanshuResidentRecord",
1251
+ "ShanshuResidentPageResponse",
1252
+ "ShanshuArchiveRecord",
1253
+ "ShanshuArchivePageResponse",
1254
+ "ShanshuCarManageRecord",
1255
+ "ShanshuCarManagePageResponse",
1256
+ "ShanshuParkingRecord",
1257
+ "ShanshuParkingPageResponse",
1258
+ "ShanshuWorkOrderRecord",
1259
+ "ShanshuWorkOrderPageResponse",
1260
+ "ShanshuMallOrderRecord",
1261
+ "ShanshuMallOrderPageResponse",
1262
+ "ShanshuServiceOrderRecord",
1263
+ "ShanshuServiceOrderPageResponse",
1264
+ "ShanshuOwnerDetailRecord",
1265
+ "ShanshuApprovalUserRecord",
1266
+ "ShanshuApprovalAssignRecord",
1267
+ "ShanshuApprovalFormItemRecord",
1268
+ "ShanshuApprovalRecord",
1269
+ "ShanshuApprovalPageResponse",
1270
+ "ShanshuApprovalProgressUserRecord",
1271
+ "ShanshuApprovalProgressCommentRecord",
1272
+ "ShanshuApprovalProgressRecord",
1273
+ "ShanshuApprovalFormItemRecord",
1274
+ "ShanshuApprovalDetailRecord",
1275
+ "ShanshuPageQueryParams",
1276
+ ]