Generalize from health-specific to universal personal assistant

The app manages multiple life areas (health, finance, personal, work),
not just health. Updated all health-specific language throughout:

Backend:
- Default system prompt: general personal assistant (not health-only)
- AI tool descriptions: generic (not health records/medications)
- Memory categories: health, finance, personal, work, document_summary, other
  (replaces condition, medication, allergy, vital)
- PDF template: "Prepared for" (not "Patient"), "Key Information" (not "Health Profile")
- Renamed generate_health_pdf -> generate_pdf_report, health_report.html -> report.html
- Renamed run_daily_health_review -> run_daily_review
- Context assembly: "User Profile" (not "Health Profile")
- OpenAPI: generic descriptions

Frontend:
- Dashboard subtitle: "Your personal AI assistant"
- Memory categories: Health, Finance, Personal, Work
- Document types: Report, Contract, Receipt, Certificate (not lab_result, etc.)
- Updated en + ru translations throughout

Documentation:
- README: general personal assistant description
- Removed health-only feature descriptions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 15:15:39 +03:00
parent 03dc42e74a
commit b0790d719c
14 changed files with 63 additions and 64 deletions

View File

@@ -42,7 +42,7 @@
},
"dashboard": {
"welcome": "Welcome, {{name}}",
"subtitle": "Your personal AI health assistant"
"subtitle": "Your personal AI assistant"
},
"chat": {
"new_chat": "New Chat",
@@ -116,10 +116,10 @@
"clear_search": "Clear",
"types": {
"other": "Other",
"lab_result": "Lab Result",
"consultation": "Consultation",
"prescription": "Prescription",
"imaging": "Imaging"
"report": "Report",
"contract": "Contract",
"receipt": "Receipt",
"certificate": "Certificate"
},
"status": {
"pending": "Pending",
@@ -131,7 +131,7 @@
"memory": {
"create": "Add Memory Entry",
"edit": "Edit Memory Entry",
"no_entries": "No memory entries yet. The AI will save important health information here.",
"no_entries": "No memory entries yet. The AI will save important information here.",
"category": "Category",
"importance": "Importance",
"title_field": "Title",
@@ -139,10 +139,10 @@
"content_field": "Content",
"content_placeholder": "Detailed information...",
"categories": {
"condition": "Condition",
"medication": "Medication",
"allergy": "Allergy",
"vital": "Vital Sign",
"health": "Health",
"finance": "Finance",
"personal": "Personal",
"work": "Work",
"document_summary": "Document Summary",
"other": "Other"
},

View File

@@ -42,7 +42,7 @@
},
"dashboard": {
"welcome": "Добро пожаловать, {{name}}",
"subtitle": "Ваш персональный ИИ-ассистент по здоровью"
"subtitle": "Ваш персональный ИИ-ассистент"
},
"chat": {
"new_chat": "Новый чат",
@@ -116,10 +116,10 @@
"clear_search": "Очистить",
"types": {
"other": "Другое",
"lab_result": "Анализы",
"consultation": "Консультация",
"prescription": "Рецепт",
"imaging": "Снимки"
"report": "Отчёт",
"contract": "Договор",
"receipt": "Квитанция",
"certificate": "Сертификат"
},
"status": {
"pending": "Ожидание",
@@ -131,7 +131,7 @@
"memory": {
"create": "Добавить запись",
"edit": "Редактировать запись",
"no_entries": "Записей пока нет. ИИ будет сохранять важную информацию о здоровье здесь.",
"no_entries": "Записей пока нет. ИИ будет сохранять важную информацию здесь.",
"category": "Категория",
"importance": "Важность",
"title_field": "Заголовок",
@@ -139,10 +139,10 @@
"content_field": "Содержание",
"content_placeholder": "Подробная информация...",
"categories": {
"condition": "Заболевание",
"medication": "Лекарство",
"allergy": "Аллергия",
"vital": "Показатели",
"health": "Здоровье",
"finance": "Финансы",
"personal": "Личное",
"work": "Работа",
"document_summary": "Сводка документа",
"other": "Другое"
},

View File

@@ -9,7 +9,7 @@ interface UploadDialogProps {
onClose: () => void;
}
const DOC_TYPES = ["other", "lab_result", "consultation", "prescription", "imaging"];
const DOC_TYPES = ["other", "report", "contract", "receipt", "certificate"];
export function UploadDialog({ open, onClose }: UploadDialogProps) {
const { t } = useTranslation();

View File

@@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
import { useTranslation } from "react-i18next";
import type { MemoryEntry } from "@/api/memory";
const CATEGORIES = ["condition", "medication", "allergy", "vital", "document_summary", "other"];
const CATEGORIES = ["health", "finance", "personal", "work", "document_summary", "other"];
const IMPORTANCE_LEVELS = ["critical", "high", "medium", "low"];
interface MemoryEditorProps {