Commit graph

266 commits

Author SHA1 Message Date
patrick-motsch
f8137e857a Add document type, payment data and detailed descriptions to trustee positions
Extend TrusteePosition with documentType, payeeIban, payeeName, payeeBic, paymentReference and dueDate fields. Overhaul AI extraction prompts to capture full document details in desc (line items, addresses, conditions), extract QR/ESR payment references and IBAN from invoices, and tag each record with its documentType. Sanitise and normalise all new fields on write.

Made-with: Cursor
2026-03-01 10:14:46 +01:00
patrick-motsch
603e319f15 feat(teamsbot): implement Mein Account login with MFA relay
Made-with: Cursor
2026-03-01 08:51:16 +01:00
patrick-motsch
1f529568f5 feat(teamsbot): per-request chat/voice channels, responseTextForVoice/Chat
Made-with: Cursor
2026-02-28 16:12:57 +01:00
patrick-motsch
65a8026496 fix: load system bot credentials only when joinMode is SYSTEM_BOT (anonymous join fix)
Made-with: Cursor
2026-02-28 15:53:31 +01:00
patrick-motsch
1dd354794b Teamsbot: STT phrase hints, multi-lang, follow-up window, known speakers collection
Made-with: Cursor
2026-02-28 00:49:10 +01:00
patrick-motsch
b9c3ad38fb Teamsbot: start new transcript block after 5s pause even for same speaker
Made-with: Cursor
2026-02-27 23:48:47 +01:00
patrick-motsch
a527806436 Harden trustee position ingestion and auto-clean corrupt records.
Normalize AI-derived date/time and numeric fields before writes, tighten extraction prompts for unix timestamps, and prevent /positions crashes by normalizing or deleting irreparably invalid legacy TrusteePosition records during reads.

Made-with: Cursor
2026-02-27 23:30:37 +01:00
patrick-motsch
80e8197d96 Teamsbot: redesign speaker attribution, add bot responses to transcript, debounce name triggers
Made-with: Cursor
2026-02-27 23:18:43 +01:00
patrick-motsch
269b704812 Teamsbot: lower audio RMS threshold, add 10s min cooldown for name-based AI triggers
Made-with: Cursor
2026-02-27 22:38:29 +01:00
patrick-motsch
0ee86070bd Teamsbot: fix chatHistory polluting AI context, block bot self-trigger via captions
Made-with: Cursor
2026-02-27 22:14:57 +01:00
patrick-motsch
681c96be8e Teamsbot: prevent double AI triggers, remove caption text from AI context
Made-with: Cursor
2026-02-27 16:40:08 +01:00
patrick-motsch
275f7bbc66 Teamsbot: handle chatHistory source - store context but skip AI trigger
Made-with: Cursor
2026-02-27 13:56:46 +01:00
patrick-motsch
21f77d1924 Teamsbot: emit caption/speakerHint to UI for speaker display
Made-with: Cursor
2026-02-27 12:27:02 +01:00
patrick-motsch
1c00ab6024 Forward bot playback acknowledgements to SSE status stream.
Handle ttsPlaybackAck websocket messages and emit ttsDeliveryStatus updates with playback_* states for UI diagnostics.

Made-with: Cursor
2026-02-26 21:45:47 +01:00
patrick-motsch
25854edb4d Allow speaker-hint captions to trigger AI without transcript persistence.
Keep aggressive hybrid persistence rules, but use final speaker hints as transient context to react to direct bot addressing even when audio capture is silent.

Made-with: Cursor
2026-02-26 21:41:56 +01:00
patrick-motsch
fe1a97564b Improve Teams bot response reliability and transcript quality.
Fix invalid bot-response timestamps in SSE payloads, reduce duplicate response loops, and improve audio STT stability with larger capture chunks and safer silence filtering.

Made-with: Cursor
2026-02-26 21:18:21 +01:00
025fb8ff61 removed demo files 2026-02-26 16:05:26 +01:00
d3dbca7289 nicht fertig; Stand Kessler Demo 2026-02-26 16:00:26 +01:00
d8fb3bf821 fix:mainchatbot.py created to ensure feature creation 2026-02-26 15:59:23 +01:00
ea99711ace fix: sharepoint neutralisierung wieder eingebaut 2026-02-26 15:50:16 +01:00
d3cfe8e9be fix: further improved neutraliser 2026-02-26 15:02:01 +01:00
5120fbc503 neutralized pdf files and better pattern recognition 2026-02-26 15:02:01 +01:00
patrick-motsch
cd2fffc651 feat: emit ttsDeliveryStatus SSE diagnostics
Made-with: Cursor
2026-02-26 09:46:05 +01:00
patrick-motsch
02002f3576 feat: add speaker-hint debug flag and improve TTS diagnostics
Made-with: Cursor
2026-02-26 09:26:59 +01:00
patrick-motsch
0cd8e9ebfa feat: treat caption events as speaker hints only
Made-with: Cursor
2026-02-26 09:22:07 +01:00
patrick-motsch
43e310a41d feat: map audio STT to recent caption speaker hints
Made-with: Cursor
2026-02-26 09:05:21 +01:00
patrick-motsch
ea8cffee3c fix: log teamsbot audio capture diagnostics in gateway
Read and log per-chunk capture diagnostics (trackId, readyState, rms, nativeSampleRate) from bot audioChunk messages to support root-cause analysis of silent audio streams.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 14:55:43 +01:00
Patrick Motsch
312163d34a
Merge pull request #100 from valueonag/feat/cursor-style-feature
fixed cursor feature
2026-02-23 23:05:11 +01:00
patrick-motsch
2dff6cd0af fixed cursor feature 2026-02-23 23:01:28 +01:00
patrick-motsch
d020293f4b fix: teamsbot audio STT - pass channels and skipFallbacks for known PCM16 format
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 22:59:53 +01:00
patrick-motsch
f6f42d8db7 phase 2 codeeditor and hotfixes voice 2026-02-23 22:09:27 +01:00
patrick-motsch
338f9522a5 codeeditor mvp phase 1 done 2026-02-23 18:35:36 +01:00
patrick-motsch
9d129f111f fixes for roles 2026-02-23 17:13:50 +01:00
patrick-motsch
f35a90e428 fixes sync and ai tree 2026-02-22 22:34:07 +01:00
patrick-motsch
6b11d66766 fixes 2026-02-22 01:03:19 +01:00
patrick-motsch
2eeaf35990 sync trustee feature with rma 2026-02-22 00:07:33 +01:00
patrick-motsch
e1557e9cc9 trustee connections 2026-02-21 00:56:53 +01:00
patrick-motsch
9c23fc6c52 fix: CSRF exemption for bot endpoints, WS ping timeout, clean up debug logs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-19 00:46:42 +01:00
patrick-motsch
f9aa35647b sync features a and p 2026-02-19 00:31:32 +01:00
patrick-motsch
2d7da8a66d fix: resolve STT AttributeError and int/str TypeError in teamsbot service
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-19 00:09:00 +01:00
patrick-motsch
7778325e5e feat: add debugMode to config, filter bot own captions to prevent repeats
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 23:52:51 +01:00
patrick-motsch
b616688411 feat: add screenshot proxy endpoints for debug viewer (SysAdmin only)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 22:00:34 +01:00
patrick-motsch
3fa5b98f47 security: restrict system bot access to SysAdmin only
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 21:03:08 +01:00
patrick-motsch
1227324703 feat: differential transcript, fix bot name in WS handler, AI commands support
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 17:50:31 +01:00
patrick-motsch
6963719499 fix: use enum .value for responseChannel comparison - was silently dropping all responses
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 00:48:41 +01:00
patrick-motsch
a3b771b12a fix: derive botName from system bot email, robust responseChannel comparison
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 00:32:16 +01:00
patrick-motsch
33daa8dc74 feat: handle voiceGreeting message type - TTS for bot join greeting
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 00:17:42 +01:00
patrick-motsch
5d40657aef fix: dynamic bot name in SPEECH_TEAMS prompt + phonetic name trigger
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 00:12:48 +01:00
patrick-motsch
070e3cbd96 fix: safe access to botAccountEmail in _isBotSpeaker - was crashing WebSocket handler on first transcript
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 23:54:18 +01:00
patrick-motsch
a27307263f fix: create SSE event queue on-demand so transcript/chat events are never silently dropped
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 23:44:12 +01:00
patrick-motsch
a3c92ae8d5 fix: load system bot credentials from DB and pass to browser bot for authenticated join
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 19:58:01 +01:00
patrick-motsch
ad254aafb1 feat: handle audioChunk messages from bot, STT via Google Cloud Speech
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 18:43:42 +01:00
patrick-motsch
de573fd834 refactor: add TransferMode, remove backgroundImageUrl and botAccount fields from config
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 18:34:24 +01:00
patrick-motsch
5dd3b9f894 fix: add per-variant test-auth endpoints to avoid Azure timeout
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 16:33:21 +01:00
patrick-motsch
cd9b405d2e fix: increase test-auth timeout to 900s for 5 browser variants
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 13:46:23 +01:00
patrick-motsch
7b4be3dbc9 feat: accept botEmail/botPassword from request, auto-create system bot in DB
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:33:05 +01:00
patrick-motsch
f743932768 fix: fallback to any active system bot if mandate mismatch, add credentialDebug to response
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:03:01 +01:00
patrick-motsch
1b2ca9512f debug: add logging to test-auth credential loading
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 23:45:47 +01:00
patrick-motsch
bddb039bde docs(teamsbot): update test-auth docstring variant count
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 23:06:56 +01:00
patrick-motsch
b08355ee45 teams test auth bot 2026-02-16 21:37:37 +01:00
patrick-motsch
3f9d791688 disable auth: use system bot display name, do not send credentials to browser bot
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 20:37:09 +01:00
patrick-motsch
1b70c07026 Merge branch 'int' of https://github.com/valueonag/gateway into int 2026-02-16 10:03:43 +01:00
patrick-motsch
a67c7f8b81 feat(teamsbot): stop via AI intent (multilingual), initial session context summarization
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 10:03:21 +01:00
3aaa4790c2 Merge branch 'int' of https://github.com/valueonag/gateway into int 2026-02-16 09:30:41 +01:00
2c1927663d fix:user invitations 2026-02-16 09:30:21 +01:00
patrick-motsch
4186ec6188 feat(teamsbot): stop command detection, session context for AI, context summarization for long sessions
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 09:29:03 +01:00
patrick-motsch
856b9f3c05 feat(teamsbot): system bot accounts with encrypted credentials, per-user settings, credentials removed from UI
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 00:16:02 +01:00
patrick-motsch
ef813a9304 feat(teamsbot): chat message handling, response channel (voice/chat/both), join mode (systemBot/anonymous/userAccount)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 00:07:42 +01:00
patrick-motsch
cc86b144ac fix(teamsbot): filter bot's own captions from AI trigger, mark bot responses in context to prevent repetition
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 22:52:02 +01:00
patrick-motsch
02dedc972d fix(teamsbot): SSE rate-limit 60/min, TTS message format for bot protocol
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 15:19:31 +01:00
patrick-motsch
729c6355b5 fix: increase bot HTTP timeout to 60s for auth flow
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 12:20:58 +01:00
patrick-motsch
ad5c9d10cd feat(teamsbot): dedicated bot account support with authenticated join
- New config fields: botAccountEmail, botAccountPassword for dedicated MSFT account
- BrowserBotConnector passes credentials + backgroundImageUrl to bot service
- Service passes config credentials to connector in joinMeeting
- Enables: full language settings, virtual background, no lobby wait
- Fallback: anonymous join when no bot account configured

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 11:56:04 +01:00
patrick-motsch
91425809c3 fix(teamsbot): AI prompt priority rules, bot-name trigger overrides cooldown
- SPEECH_TEAMS prompt: Rule 1 (bot name mentioned) now has highest priority
  and ALWAYS triggers a response, even for greetings/smalltalk
- Bot-name detection in transcript overrides cooldown timer (immediate trigger)
- Added multilingual instruction: AI responds in the language it's addressed in
- Voice interface: clean camelCase mapping (audio_content -> audioContent)
- Config save: added "config" to allowed update fields in interfaceFeatures
- Default TTS voices for common languages in connectorVoiceGoogle

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 11:48:44 +01:00
patrick-motsch
e01c6dcb95 feat(teamsbot): HTTP fallback for transcripts, debug logging for WebSocket
- HTTP POST endpoints: /bot/transcript/{sessionId} and /bot/status/{sessionId}
- Fallback for when Azure App Service blocks WebSocket upgrade
- Debug logging [WS-DEBUG] in WebSocket handler for message tracking
- Handle websocket=None in AI response pipeline (HTTP mode)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 11:05:58 +01:00
patrick-motsch
e24ef42617 feat(teamsbot): AI voice test, config save, camelCase mapping, default voices
- Voice test endpoint generates sample text dynamically via AI in selected language
- Fixed config save: added "config" to allowed update fields in interfaceFeatures
- Clean camelCase mapping in interfaceVoiceObjects (audio_content -> audioContent)
- Default TTS voices for common languages in connectorVoiceGoogle
- Fixed updateFeatureInstanceConfig -> updateFeatureInstance with config field

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 10:08:50 +01:00
patrick-motsch
89166a8f70 feat(teamsbot): URL extraction, status mapping, voice test, improved logging
- URL extraction: _extractTeamsMeetingUrl() handles SafeLinks, invitation text, and clean URLs
- Status mapping: added in_meeting, launching, navigating to bot status map
- Voice test endpoint: POST /{instanceId}/voice/test for TTS preview
- Improved error logging in browserBotConnector (shows exception type + repr)
- Improved AI trigger logging in service (shows buffer size, cooldown state, trigger reasons)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 03:26:23 +01:00
patrick-motsch
7f63dba4aa fixed path realEstate and bot connect 2026-02-15 02:57:02 +01:00
patrick-motsch
5d987e72fe fix(teamsbot): Fix Invalid Date + pass language to browser bot
- Add getIsoTimestamp() to timeUtils for JS-compatible ISO 8601 strings
- Replace getUtcTimestamp() (epoch float) with getIsoTimestamp() for all
  teamsbot session/transcript/response timestamp fields (startedAt, endedAt,
  creationDate, lastModified, SSE event timestamps)
- Pass config.language to browser bot in join request for captions spoken language

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 01:26:27 +01:00
patrick-motsch
294f1a001c fix(teamsbot): Use APP_API_URL for WebSocket URL to ensure https/wss
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 00:12:45 +01:00
patrick-motsch
c7def85a4b feat(teamsbot): Replace bridge with browser bot architecture
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 00:04:39 +01:00
f9d2f2061e Merge branch 'int' of https://github.com/valueonag/gateway into int 2026-02-14 17:32:49 +01:00
69aa73ed73 fixed complete langgraph workflow and information fetching 2026-02-14 17:31:39 +01:00
Stephan Schellworth
3ff3cfd51c feat(realestate): RBAC catalog, template roles sync, instance role access rules 2026-02-14 13:18:39 +01:00
c2f2ed3b14 feat: extract bzo information 2026-02-14 13:16:08 +01:00
fb6bac7d92 feat: fetch oereb kataster and return Wohnzohne 2026-02-14 13:13:46 +01:00
patrick-motsch
ae4dc9fa48 fix: skip STT fallbacks for teamsbot, run audio processing in background
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 18:17:47 +01:00
patrick-motsch
77151df0f4 fix: STT audioFormat scoping, automation import name, orphan FK cleanup
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 18:03:23 +01:00
patrick-motsch
367edd83e2 fix: add missing await on speechToText and textToSpeech async calls
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 17:46:02 +01:00
patrick-motsch
65128db713 fix: use original session user for bridge callbacks instead of system user (RBAC)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 17:26:56 +01:00
patrick-motsch
77cbc5803a fix: use poweron.swiss domain for system user email (Pydantic rejects .local TLD)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 17:12:04 +01:00
patrick-motsch
d88bacc4a9 billing fix 2026-02-13 14:43:45 +01:00
patrick-motsch
92ee130c0a fix: convert timestamp to string for Pydantic v2 validation in teamsbot service
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 14:13:25 +01:00
patrick-motsch
3c566b58d0 mail for websocket fixed 2026-02-13 14:01:37 +01:00
patrick-motsch
e85aa8366d fix route mail 2026-02-13 13:51:05 +01:00
patrick-motsch
3a9812a9e2 test websocket 2026-02-13 13:35:38 +01:00
patrick-motsch
fa530bfd4c fixed route to media center 2026-02-13 13:12:21 +01:00
patrick-motsch
b7e4efb3a3 teams bridge 2026-02-13 07:27:33 +01:00
patrick-motsch
edecfb002c teamsbot 2026-02-13 00:00:35 +01:00
patrick-motsch
1ce125ac75 fixes 2026-02-12 01:40:00 +01:00
patrick-motsch
7051a6e35f fixed rbac issues and sysadmin integration 2026-02-12 00:34:17 +01:00