mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 22:01:09 +02:00
feat(help): improve help content across all 18 apps, add shared Mana & Privacy FAQs
- Expand FAQ entries from ~5 to 8-14 per app with app-specific feature documentation - Add comprehensive features, shortcuts, and keyboard shortcut sections - Integrate shared getManaFAQs() in 10 apps with /mana page - Integrate shared getPrivacyFAQs() in all 18 apps with app-specific data types - Add unit tests for help content in all 18 apps (72 tests total) - Tests verify: DE/EN content, matching FAQ/feature counts, unique IDs, contact info Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
13681df76c
commit
40ace53867
36 changed files with 1439 additions and 189 deletions
47
apps/chat/apps/web/src/lib/content/help/index.test.ts
Normal file
47
apps/chat/apps/web/src/lib/content/help/index.test.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { getChatHelpContent } from './index';
|
||||
|
||||
describe('Chat Help Content', () => {
|
||||
it('returns valid German content', () => {
|
||||
const content = getChatHelpContent('de');
|
||||
|
||||
expect(content.faq.length).toBeGreaterThan(0);
|
||||
content.faq.forEach((faq) => {
|
||||
expect(faq.id).toBeTruthy();
|
||||
expect(faq.question).toBeTruthy();
|
||||
expect(faq.answer).toBeTruthy();
|
||||
});
|
||||
|
||||
expect(content.features).toBeDefined();
|
||||
expect(content.contact).toBeDefined();
|
||||
expect(content.contact.supportEmail).toBe('support@mana.how');
|
||||
});
|
||||
|
||||
it('returns valid English content', () => {
|
||||
const content = getChatHelpContent('en');
|
||||
|
||||
expect(content.faq.length).toBeGreaterThan(0);
|
||||
content.faq.forEach((faq) => {
|
||||
expect(faq.id).toBeTruthy();
|
||||
expect(faq.question).toBeTruthy();
|
||||
expect(faq.answer).toBeTruthy();
|
||||
});
|
||||
|
||||
expect(content.features).toBeDefined();
|
||||
expect(content.contact).toBeDefined();
|
||||
});
|
||||
|
||||
it('returns same number of FAQ items for both languages', () => {
|
||||
const de = getChatHelpContent('de');
|
||||
const en = getChatHelpContent('en');
|
||||
|
||||
expect(de.faq.length).toBe(en.faq.length);
|
||||
expect(de.features.length).toBe(en.features.length);
|
||||
});
|
||||
|
||||
it('has unique FAQ IDs', () => {
|
||||
const content = getChatHelpContent('de');
|
||||
const ids = content.faq.map((f) => f.id);
|
||||
expect(new Set(ids).size).toBe(ids.length);
|
||||
});
|
||||
});
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
*/
|
||||
|
||||
import type { HelpContent } from '@manacore/shared-help-types';
|
||||
import { getPrivacyFAQs } from '@manacore/shared-help-types';
|
||||
|
||||
export function getChatHelpContent(locale: string): HelpContent {
|
||||
const isDE = locale === 'de';
|
||||
|
|
@ -56,18 +57,16 @@ export function getChatHelpContent(locale: string): HelpContent {
|
|||
language: isDE ? 'de' : 'en',
|
||||
tags: isDE ? ['vergleich', 'modelle', 'test'] : ['compare', 'models', 'test'],
|
||||
},
|
||||
{
|
||||
id: 'faq-privacy',
|
||||
question: isDE ? 'Wie werden meine Chats geschützt?' : 'How are my chats protected?',
|
||||
answer: isDE
|
||||
? '<p>Deine Unterhaltungen sind sicher:</p><ul><li><strong>Verschlüsselung</strong>: Alle Daten werden bei der Übertragung (TLS) verschlüsselt</li><li><strong>Privat</strong>: Nur du hast Zugriff auf deine Chats</li><li><strong>Lokale Modelle</strong>: Bei lokalen Modellen verlassen deine Daten nie unseren Server</li><li><strong>DSGVO-konform</strong>: Wir halten uns an die EU-Datenschutzverordnung</li></ul>'
|
||||
: '<p>Your conversations are secure:</p><ul><li><strong>Encryption</strong>: All data is encrypted in transit (TLS)</li><li><strong>Private</strong>: Only you have access to your chats</li><li><strong>Local models</strong>: With local models, your data never leaves our server</li><li><strong>GDPR Compliant</strong>: We follow EU data protection regulations</li></ul>',
|
||||
category: 'privacy',
|
||||
order: 5,
|
||||
language: isDE ? 'de' : 'en',
|
||||
featured: true,
|
||||
tags: isDE ? ['datenschutz', 'sicherheit', 'dsgvo'] : ['privacy', 'security', 'gdpr'],
|
||||
},
|
||||
...getPrivacyFAQs(locale, {
|
||||
dataTypeDE: 'Chats',
|
||||
dataTypeEN: 'chats',
|
||||
extraBulletsDE: [
|
||||
'<strong>Lokale Modelle</strong>: Bei lokalen Modellen verlassen deine Daten nie unseren Server',
|
||||
],
|
||||
extraBulletsEN: [
|
||||
'<strong>Local models</strong>: With local models, your data never leaves our server',
|
||||
],
|
||||
}),
|
||||
],
|
||||
features: [
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue