Commit f6c83470 authored by drigle's avatar drigle

fix: use application display name for material source

parent bfc58622
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
- 选择已有材料只把 `{name,type,size,url}` 文件快照写入业务草稿,不保存 `am_material` ID,不重新上传、不创建材料。 - 选择已有材料只把 `{name,type,size,url}` 文件快照写入业务草稿,不保存 `am_material` ID,不重新上传、不创建材料。
- 单值字段替换原值;多值字段追加并按 URL 去重,支持逐项删除。 - 单值字段替换原值;多值字段追加并按 URL 去重,支持逐项删除。
- 本地文件选择后立即逐文件调用 `/upload`,规范化为 `{name,type,size,url}` 并保留在当前详情草稿;上传期间禁止保存和修改附件。成功项保留,失败项给出文件级汇总并可重试。 - 本地文件选择后立即逐文件调用 `/upload`,规范化为 `{name,type,size,url}` 并保留在当前详情草稿;上传期间禁止保存和修改附件。成功项保留,失败项给出文件级汇总并可重试。
- 只有用户点击详情“保存”时,才为仍在草稿中的本地文件逐个创建 `am_material`。`source_app` 必须使用目标应用真实稳定标识,`uploader` 使用当前用户 ID,`uploaded_at` 使用 ISO 时间;禁止复制 `issue_rectification`。 - 只有用户点击详情“保存”时,才为仍在草稿中的本地文件逐个创建 `am_material`。`metadata.source_app` 必须读取目标项目统一中文名称配置(问题整改为 `APPLICATION_DISPLAY_NAME = '问题整改'`),`uploader` 使用当前用户 ID,`uploaded_at` 使用 ISO 时间。
- 所有待建档材料成功后才更新业务记录。部分建档成功或材料成功而业务更新失败时,当前编辑会话必须记住已建档项;再次保存只处理未建档项,不能产生重复材料。 - 所有待建档材料成功后才更新业务记录。部分建档成功或材料成功而业务更新失败时,当前编辑会话必须记住已建档项;再次保存只处理未建档项,不能产生重复材料。
- 取消编辑不创建材料主档;删除或替换业务附件不删除材料中心主档或底层文件,材料后续变化也不反向修改历史快照。 - 取消编辑不创建材料主档;删除或替换业务附件不删除材料中心主档或底层文件,材料后续变化也不反向修改历史快照。
- 业务记录仍按目标字段既有协议保存单值对象或对象数组,不得改成材料 ID、引用字段或新数据结构。 - 业务记录仍按目标字段既有协议保存单值对象或对象数组,不得改成材料 ID、引用字段或新数据结构。
......
{ {
"name": "problem_rectification_new", "name": "problem_rectification_new",
"version": "1.0.3", "version": "1.0.5",
"build": "abc", "build": "abc",
"description": "问题整改", "description": "问题整改",
"date": "2025-07-14 19:27:20", "date": "2025-07-14 19:27:20",
......
...@@ -869,7 +869,7 @@ Grid 视图配置示例(列举的是配置片段,修改时应保留完整原 ...@@ -869,7 +869,7 @@ Grid 视图配置示例(列举的是配置片段,修改时应保留完整原
1. “材料中心”首次读取当前用户可访问的最近 20 条 `am_material`,支持按材料标题或文件名远程搜索;选中后仅把 `metadata.file_asset` 快照写入详情草稿。控件运行时读取字段 `multiple`:单值选择会替换原附件,多值选择会追加并按文件地址去重,附件可逐项删除。 1. “材料中心”首次读取当前用户可访问的最近 20 条 `am_material`,支持按材料标题或文件名远程搜索;选中后仅把 `metadata.file_asset` 快照写入详情草稿。控件运行时读取字段 `multiple`:单值选择会替换原附件,多值选择会追加并按文件地址去重,附件可逐项删除。
2. “本地上传”选择文件后立即调用 `/upload`,上传期间禁止保存及修改当前附件;单值只接收一个文件,多值可一次选择或拖入多个文件。批量上传成功项追加到详情草稿,失败项显示文件级汇总错误并允许重新选择。 2. “本地上传”选择文件后立即调用 `/upload`,上传期间禁止保存及修改当前附件;单值只接收一个文件,多值可一次选择或拖入多个文件。批量上传成功项追加到详情草稿,失败项显示文件级汇总错误并允许重新选择。
3. 用户点击详情“保存”时,为每个本次新增且仍保留在草稿中的本地文件分别创建 `am_material`,写入 `source_app = issue_rectification`、当前用户 `_id` 和 ISO 上传时间;所有待建档项成功后,再按单值对象或多值对象数组更新 `problem_rectification.metadata.rectification_proof_materials`。 3. 用户点击详情“保存”时,为每个本次新增且仍保留在草稿中的本地文件分别创建 `am_material`,`metadata.source_app` 读取 `src/config/application.js` 的 `APPLICATION_DISPLAY_NAME`,当前写入中文名称“问题整改”,同时写入当前用户 `_id` 和 ISO 上传时间;所有待建档项成功后,再按单值对象或多值对象数组更新 `problem_rectification.metadata.rectification_proof_materials`。
4. 用户取消编辑时不创建材料主档;选择已有材料不重复上传、不创建新主档。 4. 用户取消编辑时不创建材料主档;选择已有材料不重复上传、不创建新主档。
5. 任一材料创建失败时保留编辑草稿且不更新问题;同一批次已创建成功的材料,以及材料创建成功但问题更新失败的情况,均保留逐项建档标记,再次保存只创建尚未成功的材料并重试问题更新,避免重复材料。 5. 任一材料创建失败时保留编辑草稿且不更新问题;同一批次已创建成功的材料,以及材料创建成功但问题更新失败的情况,均保留逐项建档标记,再次保存只创建尚未成功的材料并重试问题更新,避免重复材料。
6. 清空或替换问题附件不删除材料中心主档或底层文件;已有材料后续修改或软删除不联动历史问题快照。 6. 清空或替换问题附件不删除材料中心主档或底层文件;已有材料后续修改或软删除不联动历史问题快照。
......
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { APPLICATION_DISPLAY_NAME } from '@/config/application';
import { createRecord, queryRecords, uploadFile } from '@/services/DataService'; import { createRecord, queryRecords, uploadFile } from '@/services/DataService';
export const AUDIT_MATERIAL_SUBJECT = 'am_material'; export const AUDIT_MATERIAL_SUBJECT = 'am_material';
export const ISSUE_RECTIFICATION_SOURCE_APP = 'issue_rectification';
const MATERIAL_PAGE_SIZE = 20; const MATERIAL_PAGE_SIZE = 20;
...@@ -145,7 +145,7 @@ export async function createProblemRectificationMaterial({ fileAsset, currentUse ...@@ -145,7 +145,7 @@ export async function createProblemRectificationMaterial({ fileAsset, currentUse
size: Number(fileAsset.size || 0), size: Number(fileAsset.size || 0),
url: fileAsset.url, url: fileAsset.url,
}, },
source_app: ISSUE_RECTIFICATION_SOURCE_APP, source_app: APPLICATION_DISPLAY_NAME,
uploader: uploaderId, uploader: uploaderId,
uploaded_at: dayjs().toISOString(), uploaded_at: dayjs().toISOString(),
}, },
......
...@@ -328,7 +328,7 @@ Query:`calculated=true|false` ...@@ -328,7 +328,7 @@ Query:`calculated=true|false`
### 5.2 本地上传并写入材料中心 ### 5.2 本地上传并写入材料中心
1. 选择文件后立即调用 `POST /upload`,将返回结果规范化为 `{name,type,size,url}` 并保留在详情草稿。单值字段只接收一个文件并替换原值;多值字段允许一次选择或拖入多个文件,每个文件分别上传,成功项追加到草稿,失败项保留错误提示并可重新选择。 1. 选择文件后立即调用 `POST /upload`,将返回结果规范化为 `{name,type,size,url}` 并保留在详情草稿。单值字段只接收一个文件并替换原值;多值字段允许一次选择或拖入多个文件,每个文件分别上传,成功项追加到草稿,失败项保留错误提示并可重新选择。
2. 用户点击详情“保存”时,为每个本次本地上传且仍保留在草稿中的文件分别调用 `POST /record` 创建材料主档: 2. 用户点击详情“保存”时,为每个本次本地上传且仍保留在草稿中的文件分别调用 `POST /record` 创建材料主档。`metadata.source_app` 读取项目统一中文名称配置 `APPLICATION_DISPLAY_NAME`,当前为“问题整改”:
```json ```json
{ {
...@@ -343,7 +343,7 @@ Query:`calculated=true|false` ...@@ -343,7 +343,7 @@ Query:`calculated=true|false`
"size": 204800, "size": 204800,
"url": "https://example.com/files/proof.pdf" "url": "https://example.com/files/proof.pdf"
}, },
"source_app": "issue_rectification", "source_app": "问题整改",
"uploader": "69b12a47e92b1de77c94a9f5", "uploader": "69b12a47e92b1de77c94a9f5",
"uploaded_at": "2026-08-25T08:30:00.000Z" "uploaded_at": "2026-08-25T08:30:00.000Z"
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment