feat: add Steuertags concept to separate workflow from content tags
Build and Push Multi-Platform Images / build-and-push (push) Successful in 38s

- New steuertag_ids setting to mark tags as workflow-only (not editable)
- DocumentEditModal shows only content tags (non-Steuertags) as editable chips
- Backend preserves Steuertags when saving document tag changes
- ManuellBearbeitenPage renders content tag chips under document title
- New Steuertags settings tab with multi-select and color preview

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
bjoernpoettkerandClaude Sonnet 4.6 committed 2026-06-09 11:46:39 +02:00
1 parent dad0136365
commit d96e06e86d
8 files changed
+245 -5

No files matched your search

@@ -374,6 +374,36 @@ export class SettingsController {
return this.settingRepo.findOneByOrFail({ ID: parseInt(id, 10) });
}
// === Steuertags ===
@Get('steuertags')
async getSteuertags() {
const setting = await this.settingRepo.findOneBy({ Tag: 'steuertag_ids' });
const ids = (setting?.Wert ?? '')
.split(',')
.map((s) => parseInt(s.trim(), 10))
.filter((n) => !isNaN(n));
return { ids };
}
@Put('steuertags')
async updateSteuertags(@Body() body: { ids: number[] }) {
const ids = (body.ids ?? [])
.map((id) => Number(id))
.filter((n) => !isNaN(n));
let setting = await this.settingRepo.findOneBy({ Tag: 'steuertag_ids' });
if (!setting) {
setting = this.settingRepo.create({
Typ: 0,
Tag: 'steuertag_ids',
Wert: ids.join(','),
});
} else {
setting.Wert = ids.join(',');
}
await this.settingRepo.save(setting);
return { ids };
}
// === Korrespondenten ===
@Get('correspondents')
async getCorrespondents(