451 lines
8.4 KiB
Markdown
451 lines
8.4 KiB
Markdown
# 新项目交叉评查新表结构与接口清单
|
|
|
|
> 目标:给出交叉评查在新平台中的建议表结构、接口清单以及代码文件落点,便于直接拆任务实施。
|
|
|
|
## 1. 推荐新增表
|
|
|
|
## 1.1 `leaudit_cross_review_tasks`
|
|
|
|
用途:
|
|
|
|
- 交叉评查任务主表
|
|
|
|
建议字段:
|
|
|
|
```sql
|
|
id bigint primary key,
|
|
task_name varchar(255) not null,
|
|
task_type varchar(32) not null,
|
|
doc_type_id bigint null,
|
|
doc_type_code varchar(64) null,
|
|
assigner_id bigint not null,
|
|
status varchar(32) not null default 'in_progress',
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
deleted_at timestamptz null
|
|
```
|
|
|
|
建议索引:
|
|
|
|
- `idx_lcrt_assigner_id`
|
|
- `idx_lcrt_status`
|
|
- `idx_lcrt_doc_type_id`
|
|
|
|
## 1.2 `leaudit_cross_review_task_members`
|
|
|
|
用途:
|
|
|
|
- 任务参与人和负责人关系表
|
|
|
|
建议字段:
|
|
|
|
```sql
|
|
id bigint primary key,
|
|
task_id bigint not null,
|
|
user_id bigint not null,
|
|
member_role varchar(32) not null,
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
deleted_at timestamptz null
|
|
```
|
|
|
|
约束建议:
|
|
|
|
- 唯一约束:`(task_id, user_id, deleted_at is null)` 语义上唯一
|
|
|
|
建议索引:
|
|
|
|
- `idx_lcrtm_task_id`
|
|
- `idx_lcrtm_user_id`
|
|
- `idx_lcrtm_role`
|
|
|
|
## 1.3 `leaudit_cross_review_task_documents`
|
|
|
|
用途:
|
|
|
|
- 任务绑定文档
|
|
|
|
建议字段:
|
|
|
|
```sql
|
|
id bigint primary key,
|
|
task_id bigint not null,
|
|
document_id bigint not null,
|
|
audit_status integer not null default 0,
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
deleted_at timestamptz null
|
|
```
|
|
|
|
说明:
|
|
|
|
- `audit_status=0` 未完成
|
|
- `audit_status=1` 已完成
|
|
|
|
建议索引:
|
|
|
|
- `idx_lcrtd_task_id`
|
|
- `idx_lcrtd_document_id`
|
|
- `idx_lcrtd_task_status`
|
|
|
|
## 1.4 `leaudit_cross_review_proposals`
|
|
|
|
用途:
|
|
|
|
- 交叉评查加减分提案
|
|
|
|
建议字段:
|
|
|
|
```sql
|
|
id bigint primary key,
|
|
task_id bigint not null,
|
|
document_id bigint not null,
|
|
rule_result_id bigint not null,
|
|
proposer_id bigint not null,
|
|
proposed_score_delta numeric(10,2) not null,
|
|
reason text not null,
|
|
status varchar(32) not null default 'pending',
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
deleted_at timestamptz null
|
|
```
|
|
|
|
建议索引:
|
|
|
|
- `idx_lcrp_task_id`
|
|
- `idx_lcrp_document_id`
|
|
- `idx_lcrp_rule_result_id`
|
|
- `idx_lcrp_proposer_id`
|
|
- `idx_lcrp_status`
|
|
|
|
业务唯一性建议:
|
|
|
|
- 同一用户对同一 `document_id + rule_result_id` 同时只能存在一条有效提案
|
|
|
|
## 1.5 `leaudit_cross_review_votes`
|
|
|
|
用途:
|
|
|
|
- 提案投票
|
|
|
|
建议字段:
|
|
|
|
```sql
|
|
id bigint primary key,
|
|
proposal_id bigint not null,
|
|
voter_id bigint not null,
|
|
vote_type varchar(16) not null,
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
deleted_at timestamptz null
|
|
```
|
|
|
|
建议索引:
|
|
|
|
- `idx_lcrv_proposal_id`
|
|
- `idx_lcrv_voter_id`
|
|
|
|
业务唯一性建议:
|
|
|
|
- 同一提案、同一用户仅保留一条有效投票
|
|
|
|
## 2. 推荐后端文件落点
|
|
|
|
## 2.1 Models
|
|
|
|
建议新增:
|
|
|
|
- `fastapi_modules/fastapi_leaudit/models/leauditCrossReviewTask.py`
|
|
- `fastapi_modules/fastapi_leaudit/models/leauditCrossReviewTaskMember.py`
|
|
- `fastapi_modules/fastapi_leaudit/models/leauditCrossReviewTaskDocument.py`
|
|
- `fastapi_modules/fastapi_leaudit/models/leauditCrossReviewProposal.py`
|
|
- `fastapi_modules/fastapi_leaudit/models/leauditCrossReviewVote.py`
|
|
|
|
## 2.2 DTO
|
|
|
|
建议新增:
|
|
|
|
- `fastapi_modules/fastapi_leaudit/domian/Dto/crossReviewDto.py`
|
|
|
|
建议包含:
|
|
|
|
- `CrossReviewTaskCreateDTO`
|
|
- `CrossReviewProposalCreateDTO`
|
|
- `CrossReviewVoteDTO`
|
|
- `CrossReviewTaskDocumentQueryDTO`
|
|
|
|
## 2.3 VO
|
|
|
|
建议新增:
|
|
|
|
- `fastapi_modules/fastapi_leaudit/domian/vo/crossReviewVo.py`
|
|
|
|
建议包含:
|
|
|
|
- `CrossReviewTaskItemVO`
|
|
- `CrossReviewTaskPageVO`
|
|
- `CrossReviewTaskDocumentVO`
|
|
- `CrossReviewTaskDocumentPageVO`
|
|
- `CrossReviewProposalVO`
|
|
- `CrossReviewProposalPageVO`
|
|
- `CrossReviewPermissionVO`
|
|
- `CrossReviewCompleteVO`
|
|
|
|
## 2.4 Service
|
|
|
|
建议新增:
|
|
|
|
- `fastapi_modules/fastapi_leaudit/services/crossReviewService.py`
|
|
- `fastapi_modules/fastapi_leaudit/services/impl/crossReviewServiceImpl.py`
|
|
|
|
## 2.5 Controller
|
|
|
|
建议新增:
|
|
|
|
- `fastapi_modules/fastapi_leaudit/controllers/crossReviewController.py`
|
|
|
|
## 3. 推荐服务接口
|
|
|
|
建议在 `crossReviewService.py` 中定义以下能力:
|
|
|
|
- `CreateTask(...)`
|
|
- `GetUserTasks(...)`
|
|
- `GetTaskDocuments(...)`
|
|
- `CanConfirmTaskDocument(...)`
|
|
- `CompleteTaskDocument(...)`
|
|
- `CreateProposal(...)`
|
|
- `VoteProposal(...)`
|
|
- `CancelProposal(...)`
|
|
- `GetDocumentProposals(...)`
|
|
- `GetPendingProposalDetails(...)`
|
|
- `CheckPendingVotesByDocument(...)`
|
|
- `UploadDocumentsToTask(...)`
|
|
- `AppendTaskDocumentAttachments(...)`
|
|
- `LoadApprovedProposalDeltas(...)`
|
|
|
|
## 4. 推荐接口清单
|
|
|
|
## 4.1 任务接口
|
|
|
|
### `POST /api/v2/cross_review/tasks`
|
|
|
|
用途:
|
|
|
|
- 创建交叉评查任务
|
|
|
|
请求体建议:
|
|
|
|
```json
|
|
{
|
|
"document_ids": [101, 102],
|
|
"user_ids": [11, 12],
|
|
"principal_user_ids": [21],
|
|
"task_name": "市局间交叉评查-合同类",
|
|
"doc_type_id": 3,
|
|
"doc_type_code": "XZCF",
|
|
"task_type": "CITY"
|
|
}
|
|
```
|
|
|
|
### `POST /api/v2/cross_review/tasks/user_tasks`
|
|
|
|
用途:
|
|
|
|
- 获取当前用户参与的任务列表
|
|
|
|
### `GET /api/v2/cross_review/tasks/{taskId}/documents`
|
|
|
|
用途:
|
|
|
|
- 获取任务下文档列表
|
|
- 支持版本归纳
|
|
|
|
查询参数建议:
|
|
|
|
- `page`
|
|
- `page_size`
|
|
- `keyword`
|
|
|
|
### `GET /api/v2/cross_review/tasks/{taskId}/can-confirm`
|
|
|
|
用途:
|
|
|
|
- 检查当前用户是否能确认文档评查完成
|
|
|
|
### `POST /api/v2/cross_review/tasks/{taskId}/documents/{documentId}/complete`
|
|
|
|
用途:
|
|
|
|
- 确认任务内文档完成
|
|
|
|
### `POST /api/v2/cross_review/tasks/{taskId}/upload_documents`
|
|
|
|
用途:
|
|
|
|
- 向已有任务追加新文档
|
|
|
|
### `POST /api/v2/cross_review/tasks/{taskId}/documents/{documentId}/append_attachments`
|
|
|
|
用途:
|
|
|
|
- 给任务文档追加附件并生成新版本
|
|
|
|
## 4.2 提案接口
|
|
|
|
### `POST /api/v2/cross_review/proposals`
|
|
|
|
用途:
|
|
|
|
- 创建提案
|
|
|
|
请求体建议:
|
|
|
|
```json
|
|
{
|
|
"task_id": 1,
|
|
"document_id": 101,
|
|
"rule_result_id": 10001,
|
|
"proposed_score_delta": -5,
|
|
"reason": "该点应扣 5 分"
|
|
}
|
|
```
|
|
|
|
### `POST /api/v2/cross_review/proposals/{proposalId}/votes`
|
|
|
|
用途:
|
|
|
|
- 对提案投票
|
|
|
|
请求体建议:
|
|
|
|
```json
|
|
{
|
|
"vote_type": "agree"
|
|
}
|
|
```
|
|
|
|
### `DELETE /api/v2/cross_review/proposals/{proposalId}`
|
|
|
|
用途:
|
|
|
|
- 撤销提案
|
|
|
|
### `POST /api/v2/cross_review/proposals/document`
|
|
|
|
用途:
|
|
|
|
- 获取某文档的提案列表
|
|
|
|
请求体建议:
|
|
|
|
```json
|
|
{
|
|
"document_id": 101,
|
|
"page": 1,
|
|
"page_size": 10
|
|
}
|
|
```
|
|
|
|
### `POST /api/v2/cross_review/proposals/details`
|
|
|
|
用途:
|
|
|
|
- 获取当前用户待处理提案列表
|
|
|
|
### `POST /api/v2/cross_review/proposals/document/check_pending_votes`
|
|
|
|
用途:
|
|
|
|
- 检查某文档是否仍有提案未完成投票
|
|
|
|
## 5. 与现有 `DocumentServiceImpl` 的衔接点
|
|
|
|
## 5.1 详情页提案列表
|
|
|
|
当前衔接点:
|
|
|
|
- `DocumentServiceImpl._loadScoringProposals()`
|
|
|
|
建议:
|
|
|
|
- 改成读 `leaudit_cross_review_proposals`
|
|
- 后续移除对旧 `cross_scoring_proposals` 的直接依赖
|
|
|
|
## 5.2 最终得分计算
|
|
|
|
当前衔接点:
|
|
|
|
- `DocumentServiceImpl._loadReviewPointResults()`
|
|
|
|
建议:
|
|
|
|
- 增加按 `rule_result_id` 聚合已通过提案分数的逻辑
|
|
- 返回前写入 `ReviewPointResultVO.finalScore`
|
|
|
|
## 5.3 文档上传与附件追加
|
|
|
|
建议复用:
|
|
|
|
- `DocumentServiceImpl.Upload()`
|
|
- `DocumentServiceImpl.AppendAttachments()`
|
|
|
|
交叉评查只负责:
|
|
|
|
- 上传后把文档挂入任务
|
|
- 维护任务内状态和版本展示
|
|
|
|
## 6. 建议前端改造策略
|
|
|
|
## 6.1 第一阶段
|
|
|
|
前端尽量少改,只调整 API 基址和字段映射。
|
|
|
|
重点文件:
|
|
|
|
- `new_doc_review/app/api/cross-checking/cross-files.ts`
|
|
- `new_doc_review/app/api/cross-checking/cross-file-result.ts`
|
|
- `new_doc_review/app/api/cross-checking/cross-files-upload.ts`
|
|
|
|
## 6.2 第二阶段
|
|
|
|
逐步清理这些旧依赖:
|
|
|
|
- 前端直接查 `cross_examination_tasks`
|
|
- 前端直接查 `cross_task_document_mapping`
|
|
- 前端假设旧路径 `/admin/cross_review/*`
|
|
|
|
## 7. 推荐实施拆解
|
|
|
|
### P0:表结构与模型
|
|
|
|
- 建新表
|
|
- 建模型
|
|
- 建基础迁移
|
|
|
|
### P1:任务与提案接口
|
|
|
|
- 创建任务
|
|
- 任务列表
|
|
- 文档列表
|
|
- 提案创建
|
|
- 投票
|
|
- 完成确认
|
|
|
|
### P2:详情页聚合接入
|
|
|
|
- `GetReviewPoints()` 改接新提案表
|
|
- 动态计算最终分数
|
|
|
|
### P3:上传与版本链闭环
|
|
|
|
- 任务上传文档
|
|
- 追加附件
|
|
- 版本归纳改用 `versionGroupKey`
|
|
|
|
### P4:清理旧兼容
|
|
|
|
- 清理旧表直查
|
|
- 清理前端旧路径
|
|
- 清理旧逻辑兜底
|
|
|