Lisää Zammad-integraatio ja modulaarinen integraatiot-hallinta

- Uusi integrations-taulu tietokantaan (moduulimalli: type, enabled, config)
- ZammadClient-luokka: tiketit, artikkelit, vastaukset, ryhmät
- API-endpointit: integration_save, integration_test, zammad_sync, zammad_reply, zammad_groups
- Synkronointi: Zammad-tiketit → intran tiketit, artikkelit → viestit
- Vastaukset: Zammad-tiketteihin vastaus kulkee Zammad API:n kautta (→ O365)
- UI: Integraatiot-osio API-välilehdellä, toggle-kytkimet, Zammad-konfiguraatio
- tickets.zammad_ticket_id ja ticket_messages.zammad_article_id linkitys

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 19:25:51 +02:00
parent 1aea4bde20
commit fa8aaed11e
5 changed files with 645 additions and 12 deletions

View File

@@ -1517,6 +1517,43 @@
<pre id="test-api-result" style="margin-top:0.75rem;background:#f8f9fb;padding:1rem;border-radius:8px;font-size:0.85rem;display:none;overflow-x:auto;"></pre>
</div>
<!-- Integraatiot -->
<div class="table-card" style="padding:1.5rem;margin-top:1rem;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;border-bottom:2px solid #f0f2f5;padding-bottom:0.5rem;">Integraatiot</h3>
<p style="color:#666;font-size:0.85rem;margin-bottom:1rem;">Ota käyttöön ja hallitse ulkoisia integraatioita moduuleittain.</p>
<div id="integrations-list"></div>
</div>
<!-- Zammad-konfiguraatio (piilotettu kunnes käytössä) -->
<div class="table-card integration-config-card" id="zammad-config-card" style="padding:1.5rem;margin-top:1rem;display:none;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;border-bottom:2px solid #f0f2f5;padding-bottom:0.5rem;">
<span style="margin-right:0.5rem;">📧</span>Zammad — Asetukset
</h3>
<p style="color:#666;font-size:0.85rem;margin-bottom:1rem;">Synkronoi tiketit Zammad-helpdeskin kautta. O365-sähköpostit kulkevat Zammadin kautta.</p>
<div class="form-grid" style="max-width:600px;">
<div class="form-group full-width">
<label>Zammad URL</label>
<input type="text" id="zammad-url" placeholder="https://desk.yritys.fi" style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>API Token</label>
<input type="password" id="zammad-token" placeholder="Token..." style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>Synkronoitavat ryhmät</label>
<div id="zammad-groups-list" style="margin-bottom:0.5rem;color:#888;font-size:0.85rem;">Tallenna ensin URL ja token, sitten valitse ryhmät.</div>
</div>
<div class="form-group full-width" style="display:flex;gap:0.5rem;flex-wrap:wrap;">
<button class="btn-primary" id="btn-save-zammad">Tallenna</button>
<button class="btn-secondary" id="btn-test-zammad">Testaa yhteys</button>
<button class="btn-secondary" id="btn-load-zammad-groups">Lataa ryhmät</button>
<button class="btn-primary" id="btn-sync-zammad" style="background:#28a745;">▶ Synkronoi nyt</button>
</div>
</div>
<div id="zammad-test-result" style="margin-top:0.75rem;display:none;padding:1rem;border-radius:8px;font-size:0.85rem;font-family:monospace;"></div>
<div id="zammad-sync-result" style="margin-top:0.75rem;display:none;padding:1rem;border-radius:8px;font-size:0.85rem;"></div>
</div>
<!-- Telegram-asetukset -->
<div class="table-card" style="padding:1.5rem;margin-top:1rem;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;border-bottom:2px solid #f0f2f5;padding-bottom:0.5rem;">Telegram-hälytykset</h3>