Freigabe #4

Merged
bjoernpoettker merged 23 commits from Freigabe into main 2026-06-16 14:49:23 +00:00
4 changed files with 21 additions and 21 deletions
Showing only changes of commit 2444821c9e - Show all commits
@@ -53,7 +53,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
await this.upsertSetting('agrarmonitor_tag_verbucht', '9');
await this.upsertSetting('agrarmonitor_tag_hochgeladen', '');
await this.upsertSetting('agrarmonitor_link_field', '');
await this.upsertSetting('agrarmonitor_tag_posteingang', '');
await this.upsertSetting('agrarmonitor_tag_manuell', '');
}
@Cron(process.env['AGRARMONITOR_POLLING_CRON'] || '0 */30 * * * *')
@@ -68,20 +68,20 @@ export class AgrarmonitorPollingService implements OnModuleInit {
this.processVerarbeiteteDocuments().catch((err) => this.logger.error('Cron-Upload-Check-Fehler:', err));
}
async getPollingConfig(): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagPosteingang: string }> {
const [fertig, verbucht, hochgeladen, linkField, posteingang] = await Promise.all([
async getPollingConfig(): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string }> {
const [fertig, verbucht, hochgeladen, linkField, manuell] = await Promise.all([
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_fertig' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_verbucht' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_hochgeladen' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_link_field' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_posteingang' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_manuell' }),
]);
return {
tagFertig: fertig?.Wert ?? '4',
tagVerbucht: verbucht?.Wert ?? '9',
tagHochgeladen: hochgeladen?.Wert ?? '',
linkField: linkField?.Wert ?? '',
tagPosteingang: posteingang?.Wert ?? '',
tagManuell: manuell?.Wert ?? '',
};
}
@@ -90,16 +90,16 @@ export class AgrarmonitorPollingService implements OnModuleInit {
tagVerbucht: string,
tagHochgeladen: string,
linkField: string,
tagPosteingang: string,
): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagPosteingang: string }> {
tagManuell: string,
): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string }> {
await Promise.all([
this.settingRepo.update({ Tag: 'agrarmonitor_tag_fertig' }, { Wert: tagFertig }),
this.settingRepo.update({ Tag: 'agrarmonitor_tag_verbucht' }, { Wert: tagVerbucht }),
this.settingRepo.update({ Tag: 'agrarmonitor_tag_hochgeladen' }, { Wert: tagHochgeladen }),
this.settingRepo.update({ Tag: 'agrarmonitor_link_field' }, { Wert: linkField }),
this.settingRepo.update({ Tag: 'agrarmonitor_tag_posteingang' }, { Wert: tagPosteingang }),
this.settingRepo.update({ Tag: 'agrarmonitor_tag_manuell' }, { Wert: tagManuell }),
]);
return { tagFertig, tagVerbucht, tagHochgeladen, linkField, tagPosteingang };
return { tagFertig, tagVerbucht, tagHochgeladen, linkField, tagManuell };
}
async runPolling(): Promise<PollingResult> {
@@ -295,17 +295,17 @@ export class AgrarmonitorPollingService implements OnModuleInit {
this.logger.log('Starte Upload-Check');
try {
const [hochgeladenSetting, fertigSetting, linkFieldSetting, posteingangSetting] = await Promise.all([
const [hochgeladenSetting, fertigSetting, linkFieldSetting, manuellSetting] = await Promise.all([
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_hochgeladen' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_fertig' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_link_field' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_posteingang' }),
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_manuell' }),
]);
const tagHochgeladenId = parseInt(hochgeladenSetting?.Wert ?? '', 10);
const tagFertigId = parseInt(fertigSetting?.Wert ?? '4', 10);
const linkFieldId = parseInt(linkFieldSetting?.Wert ?? '', 10);
const tagPosteingangId = parseInt(posteingangSetting?.Wert ?? '', 10);
const tagManuellId = parseInt(manuellSetting?.Wert ?? '', 10);
if (isNaN(tagHochgeladenId)) {
this.logger.warn('Tag "hochgeladen" nicht konfiguriert — Upload-Check übersprungen');
@@ -396,12 +396,12 @@ export class AgrarmonitorPollingService implements OnModuleInit {
continue;
}
// Weder verbucht noch im Dateieingang → zurück in Posteingang
if (!isNaN(tagPosteingangId)) {
// Weder verbucht noch im Dateieingang → Tag "Manuell bearbeiten" setzen
if (!isNaN(tagManuellId)) {
const currentTags: number[] = (doc.tags as number[]) ?? [];
const newTags = [...new Set(currentTags.filter(t => t !== tagHochgeladenId).concat([tagPosteingangId]))];
const newTags = [...new Set(currentTags.filter(t => t !== tagHochgeladenId).concat([tagManuellId]))];
await this.paperlessService.updateDocument(doc.id as number, { tags: newTags });
this.logger.log(`${interneBelegnummer} nicht mehr in Agrarmonitor — zurück in Posteingang`);
this.logger.log(`${interneBelegnummer} nicht mehr in Agrarmonitor — als manuell bearbeiten markiert`);
result.updated++;
} else {
result.skipped++;
@@ -32,8 +32,8 @@ export class AgrarmonitorController {
@Put('polling-config')
@RequirePermissions(Permission.MANAGE_SETTINGS)
async updatePollingConfig(@Body() body: { tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagPosteingang: string }) {
return this.pollingService.updatePollingConfig(body.tagFertig, body.tagVerbucht, body.tagHochgeladen, body.linkField, body.tagPosteingang ?? '');
async updatePollingConfig(@Body() body: { tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string }) {
return this.pollingService.updatePollingConfig(body.tagFertig, body.tagVerbucht, body.tagHochgeladen, body.linkField, body.tagManuell ?? '');
}
@Post('run-polling')
+1 -1
View File
@@ -202,7 +202,7 @@ export interface AgrarmonitorPollingConfig {
tagVerbucht: string;
tagHochgeladen: string;
linkField: string;
tagPosteingang: string;
tagManuell: string;
}
export interface AgrarmonitorPollingResult {
@@ -2588,8 +2588,8 @@ function AgrarmonitorTab() {
<Form.Item name="tagHochgeladen" label="Tag-ID: Hochgeladen in Agrarmonitor">
<Input placeholder="3" style={{ width: 120 }} />
</Form.Item>
<Form.Item name="tagPosteingang" label="Tag-ID: Posteingang (bei fehlendem AM-Beleg)">
<Input placeholder="1" style={{ width: 120 }} />
<Form.Item name="tagManuell" label="Tag-ID: Manuell bearbeiten (bei fehlendem AM-Beleg)">
<Input placeholder="" style={{ width: 120 }} />
</Form.Item>
<Form.Item name="linkField" label="Custom Field: Agrarmonitor-Link">
<Select allowClear placeholder="Kein Feld ausgewählt" style={{ width: 280 }}>