fixes commcoach
This commit is contained in:
parent
4e2510c38b
commit
e9f7b2016f
3 changed files with 26 additions and 2 deletions
|
|
@ -79,6 +79,14 @@ const FilesTab: React.FC<FilesTabProps> = ({ context, onFileSelect }) => {
|
||||||
_loadFiles();
|
_loadFiles();
|
||||||
}, [_loadFiles]);
|
}, [_loadFiles]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const _onFileUploaded = () => {
|
||||||
|
setTimeout(() => _loadFiles(), 150);
|
||||||
|
};
|
||||||
|
window.addEventListener('fileUploaded', _onFileUploaded as EventListener);
|
||||||
|
return () => window.removeEventListener('fileUploaded', _onFileUploaded as EventListener);
|
||||||
|
}, [_loadFiles]);
|
||||||
|
|
||||||
const _folderNodes = useMemo(() =>
|
const _folderNodes = useMemo(() =>
|
||||||
folders.map(f => ({
|
folders.map(f => ({
|
||||||
id: f.id,
|
id: f.id,
|
||||||
|
|
|
||||||
|
|
@ -360,8 +360,10 @@ const NeutralizationMappingsTab: React.FC = () => {
|
||||||
<section className={styles.section}>
|
<section className={styles.section}>
|
||||||
<h2 className={styles.sectionTitle}>Platzhalter-Mappings</h2>
|
<h2 className={styles.sectionTitle}>Platzhalter-Mappings</h2>
|
||||||
<p className={styles.settingDescription} style={{ marginBottom: '1rem' }}>
|
<p className={styles.settingDescription} style={{ marginBottom: '1rem' }}>
|
||||||
Bei der Datenneutralisierung werden personenbezogene Daten durch Platzhalter ersetzt.
|
Bei der Datenneutralisierung werden personenbezogene Daten durch Platzhalter ersetzt, bevor Text an KI-Modelle
|
||||||
Hier sehen Sie Ihre gespeicherten Mappings und koennen sie loeschen.
|
geht; die Antwort wird anschliessend wieder mit Ihren Originalbegriffen angereichert (zentrale Pipeline ueber
|
||||||
|
den AI-Service). Diese Liste betrifft nur Ihre gespeicherten Platzhalter-Zuordnungen — hier einsehbar und
|
||||||
|
loeschbar.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{mappings.length === 0 ? (
|
{mappings.length === 0 ? (
|
||||||
|
|
@ -537,6 +539,11 @@ export const SettingsPage: React.FC = () => {
|
||||||
{activeTab === 'privacy' && (
|
{activeTab === 'privacy' && (
|
||||||
<section className={styles.section}>
|
<section className={styles.section}>
|
||||||
<h2 className={styles.sectionTitle}>Datenschutz</h2>
|
<h2 className={styles.sectionTitle}>Datenschutz</h2>
|
||||||
|
<p className={styles.settingDescription} style={{ marginBottom: '1rem' }}>
|
||||||
|
Feature-Daten (z. B. Workspace, CommCoach, Automation) liegen mandantenbezogen; Zugriff richtet sich
|
||||||
|
nach Ihren Rollen im Mandanten und an Feature-Instanzen. Allgemeine Rechte (Auskunft, Export,
|
||||||
|
Loeschung) finden Sie unter GDPR.
|
||||||
|
</p>
|
||||||
<div className={styles.settingRow}>
|
<div className={styles.settingRow}>
|
||||||
<div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilitaet und Kontoloeschung.</p></div>
|
<div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilitaet und Kontoloeschung.</p></div>
|
||||||
<div className={styles.settingControl}><Link className={`${styles.button} ${styles.linkButton}`} to="/gdpr">GDPR oeffnen</Link></div>
|
<div className={styles.settingControl}><Link className={`${styles.button} ${styles.linkButton}`} to="/gdpr">GDPR oeffnen</Link></div>
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,15 @@ export const CommcoachDossierView: React.FC = () => {
|
||||||
}
|
}
|
||||||
}, [activeTab, coach.session?.id, voice]);
|
}, [activeTab, coach.session?.id, voice]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
coach.onDocumentCreatedRef.current = () => {
|
||||||
|
window.dispatchEvent(new CustomEvent('fileUploaded', { detail: { source: 'commcoachDocument' } }));
|
||||||
|
};
|
||||||
|
return () => {
|
||||||
|
coach.onDocumentCreatedRef.current = null;
|
||||||
|
};
|
||||||
|
}, [coach]);
|
||||||
|
|
||||||
const handleStopTts = useCallback(() => coach.stopTts(), [coach]);
|
const handleStopTts = useCallback(() => coach.stopTts(), [coach]);
|
||||||
const handlePauseTts = useCallback(() => coach.pauseTts(), [coach]);
|
const handlePauseTts = useCallback(() => coach.pauseTts(), [coach]);
|
||||||
const handleResumeTts = useCallback(() => coach.resumeTts(), [coach]);
|
const handleResumeTts = useCallback(() => coach.resumeTts(), [coach]);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue