Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| eaa1c855d9 | |||
| cce5166633 |
Generated
+4
-4
@@ -17,7 +17,7 @@
|
||||
"@microsoft/sp-webpart-base": "1.22.1",
|
||||
"@pnp/sp": "^4.20.0",
|
||||
"@pnp/spfx-controls-react": "^3.25.0",
|
||||
"@tnsu/monitoring-web": "^0.3.1",
|
||||
"@tnsu/monitoring-web": "^0.3.3",
|
||||
"@tnsu/ui-kit": "^0.15.0",
|
||||
"jszip": "~3.8.0",
|
||||
"react": "17.0.1",
|
||||
@@ -9909,9 +9909,9 @@
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/@tnsu/monitoring-web": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://git.tnsu.kz/api/packages/tansu/npm/%40tnsu%2Fmonitoring-web/-/0.3.1/monitoring-web-0.3.1.tgz",
|
||||
"integrity": "sha512-HcHP8Utb9gXBRt4nEC4RW5UrqT8ssIs7Prs2LSQaE/oy3ybFNiqpLp3XbmGx1ssCArZcwBozov0MbIHpC9dVgg==",
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://git.tnsu.kz/api/packages/tansu/npm/%40tnsu%2Fmonitoring-web/-/0.3.3/monitoring-web-0.3.3.tgz",
|
||||
"integrity": "sha512-jxuGTHA8pI71HZzAl+pDhSKgMY7YA/F8Xiq0U4koTw2w7oWcF8XeRwQ3z6lJUpvpWGn1FLpZOjE9/8SoMBPNrA==",
|
||||
"license": "UNLICENSED",
|
||||
"dependencies": {
|
||||
"@rrweb/rrweb-plugin-console-record": "^2.2.0",
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
"@microsoft/sp-webpart-base": "1.22.1",
|
||||
"@pnp/sp": "^4.20.0",
|
||||
"@pnp/spfx-controls-react": "^3.25.0",
|
||||
"@tnsu/monitoring-web": "^0.3.1",
|
||||
"@tnsu/monitoring-web": "^0.3.3",
|
||||
"@tnsu/ui-kit": "^0.15.0",
|
||||
"jszip": "~3.8.0",
|
||||
"react": "17.0.1",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||
import { log } from '@tnsu/monitoring-web';
|
||||
import { resolveRoute } from './approvalRoute.service';
|
||||
import { ApprovalListService, IApproverToWrite } from './approvalList.service';
|
||||
import { IMatrixRow } from './models/IMatrixRow';
|
||||
@@ -68,6 +69,11 @@ export async function writeApprovers(
|
||||
await approval.createSteps(requestId, approvers, rowStatus, APPROVAL_PHASE.approval, 1);
|
||||
if (submitted) {
|
||||
await approval.activateNextQueued(requestId);
|
||||
log.info('Заявка отправлена на согласование', {
|
||||
'request.id': requestId,
|
||||
'request.status': status,
|
||||
'route.approvers': approvers.length,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,5 +144,11 @@ export async function writeRoute(
|
||||
|
||||
if (submitted) {
|
||||
await approval.activateNextQueued(requestId);
|
||||
log.info('Заявка отправлена на согласование', {
|
||||
'request.id': requestId,
|
||||
'request.status': status,
|
||||
'route.approvers': approvers.length,
|
||||
'route.executors': executors.length,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { log } from '@tnsu/monitoring-web';
|
||||
import { getSP } from '../pnp/pnpjs';
|
||||
import '@pnp/sp/webs';
|
||||
import '@pnp/sp/lists';
|
||||
@@ -25,6 +26,14 @@ export interface IPendingRow extends IApprovalRow {
|
||||
isDelegator: boolean;
|
||||
}
|
||||
|
||||
// Решение → текст события в логах мониторинга.
|
||||
const DECISION_MESSAGE: Record<ApproverDecision, string> = {
|
||||
approve: 'Заявка согласована',
|
||||
return: 'Заявка возвращена на доработку',
|
||||
reject: 'Заявка отклонена',
|
||||
execute: 'Заявка выполнена исполнителем',
|
||||
};
|
||||
|
||||
// Решение → статус его строки в списке согласования.
|
||||
const ROW_STATUS: Record<ApproverDecision, string> = {
|
||||
approve: REQUEST_STATUS.approved,
|
||||
@@ -336,6 +345,14 @@ export class ApproverService {
|
||||
const rows = await this.approval.getForRequest(requestId);
|
||||
const requestStatus = this.computeRequestStatus(rows);
|
||||
await this.updateRequestStatus(requestId, requestStatus);
|
||||
log.info(DECISION_MESSAGE[decision], {
|
||||
'request.id': requestId,
|
||||
'request.list': this.dataListRef,
|
||||
'request.status': requestStatus,
|
||||
'approval.decision': decision,
|
||||
'approval.rowId': rowId,
|
||||
'approval.comment': comment.slice(0, 500),
|
||||
});
|
||||
emitRequestsChanged();
|
||||
return requestStatus;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import '@pnp/sp/webs';
|
||||
import '@pnp/sp/lists';
|
||||
import '@pnp/sp/items';
|
||||
import { IList } from '@pnp/sp/lists';
|
||||
import { log } from '@tnsu/monitoring-web';
|
||||
import { getSP } from './pnp/pnpjs';
|
||||
import { buildRequestUniqueCode } from './requestCode';
|
||||
import { dataListTitle } from './listTitles';
|
||||
@@ -58,5 +59,8 @@ export async function saveRequestItem(
|
||||
// Код известен только после создания элемента (нужен его Id).
|
||||
const code = buildRequestUniqueCode(codePrefix, id, new Date());
|
||||
await list.items.getById(id).update({ RequestUniqueCode: code });
|
||||
// Событие для мониторинга: кто (пользователь — из токена) и какую заявку создал. Отправка на согласование
|
||||
// и решения пишутся отдельно — approvalSubmission.service.ts и approverDecision.service.ts.
|
||||
log.info('Создана заявка', { 'request.type': formId, 'request.id': id, 'request.code': code });
|
||||
return { id, code };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user