# SmartSilverCare **Repository Path**: shgm/smart-silver-care ## Basic Information - **Project Name**: SmartSilverCare - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-12 - **Last Updated**: 2026-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🛡️ 智护银龄 — 防诈骗 AI Agent > 2026小有可为 A向善创新挑战赛 · 普惠养老赛道 > 出题方:中国老龄事业发展基金会 ## 一句话介绍 **老人的AI防骗保镖 —— 电话打进来,骗子还没开口第二句,就被拦住了。** ## 核心能力 | 能力 | 说明 | |------|------| | 🧠 AI Agent | 基于 ReAct 框架自主推理,不是关键词匹配 | | 📞 实时防诈 | 通话中实时分析语义,识别诈骗立即语音警告 | | 📱 微信小程序 | 家属端实时查看预警、老人状态 | | 💬 AI助手 | 智能问答,解答防骗疑问 | | 🎮 防骗问答 | 三关挑战,测试防骗知识 | | 🗄️ MySQL 持久化 | 所有数据入库,支持历史查询与分析 | ## 系统架构 ``` ┌─────────────────────────────────────────────────────┐ │ 微信小程序 (miniapp/) │ │ 首页 · 预警 · AI助手 · 设置 · 防骗问答 │ └──────────────────────┬──────────────────────────────┘ │ HTTP API ┌──────────────────────┴──────────────────────────────┐ │ Flask API Server (backend/) │ │ 20+ REST 接口 · TTS 语音合成 · AI对话 │ └───────┬──────────────────────────┬──────────────────┘ │ │ ┌───────┴──────────┐ ┌────────┴─────────────┐ │ AI Agent 核心 │ │ MySQL 5.7 数据库 │ │ src/agent.py │ │ silver_shield │ │ src/tools.py │ │ │ │ src/memory.py │ │ 10张表: │ │ (ReAct 循环) │ │ elder_info · alerts │ │ │ │ quiz_records · ... │ └───────────────────┘ └──────────────────────┘ │ ┌───────┴──────────┐ │ 管理后台 (frontend/) │ │ Vue3 + Arco Design │ └───────────────────┘ ``` ## 项目结构 ``` yanglao/ ├── backend/ # 后端 API 服务 │ ├── server.py # Flask 主服务(763行) │ ├── models.py # 数据库模型(10张表) │ └── init_db.py # 数据库初始化 │ ├── frontend/ # 管理后台(Vue3) │ ├── src/ │ │ ├── views/ # 页面组件(Login, Layout, Elder, Alerts, Blacklist, Calls) │ │ ├── router/ # 路由配置 + 登录守卫 │ │ └── api/ # API 请求封装(Axios + Token拦截器) │ ├── package.json │ └── vite.config.js # Vite配置(端口8080,代理API) │ ├── miniapp/ # 微信小程序(家属端) │ ├── pages/ │ │ ├── index/ # 首页(老人状态总览) │ │ ├── alerts/ # 预警列表(TTS语音播报) │ │ ├── ai/ # AI防骗助手(智能问答) │ │ ├── quiz/ # 防骗问答(三关挑战) │ │ ├── settings/ # 设置(通知、风险等级) │ │ └── calls/ # 通话记录 │ ├── api/ # API 请求封装(wx.request) │ ├── images/ # Tab图标资源 │ └── utils/ # 工具函数(config, format, scenarios) │ ├── src/ # AI Agent 核心代码 │ ├── agent.py # Agent 核心(ReAct 循环,293行) │ ├── tools.py # 工具箱(5个工具,470行) │ ├── memory.py # 记忆系统(MySQL + JSON双模式) │ ├── config.py # 配置管理(词库、风险等级) │ ├── asr.py # 语音识别(FunASR实时转文字) │ └── tts.py # 语音合成(CosyVoice) │ ├── data/ # 数据库脚本与知识库 │ ├── init_database.sql # 初始化脚本(建库、建表、导入数据) │ └── knowledge_base.json # 知识库数据(7类35条) │ ├── docs/ # 项目文档 ├── tests/ # 测试资源(截图、视频) ├── demo.py # 演示脚本(5个诈骗场景) ├── requirements.txt # Python 依赖 ├── .env # 环境变量配置(不提交) ├── .env.example # 环境变量模板 └── README.md # 本文档 ``` --- ## 环境要求 | 组件 | 版本要求 | 说明 | |------|---------|------| | Python | 3.10+ | 后端运行环境 | | Node.js | 18+ | 前端运行环境 | | npm | 9+ | 前端包管理器 | | MySQL | 5.7+ | 数据持久化 | | 微信开发者工具 | 最新稳定版 | 小程序调试 | | 阿里云百炼 API Key | — | Qwen-Plus + TTS + FunASR | --- ## 快速开始 ### 1. 克隆项目 ```bash git clone cd D:\yanglao ``` ### 2. 后端环境配置 #### 2.1 安装 Python 依赖 ```bash pip install -r requirements.txt ``` **依赖说明:** - `dashscope>=1.20.0` — 阿里云百炼 SDK(Qwen + FunASR + TTS) - `flask` — Web框架 - `sqlalchemy>=1.4,<2.0` — ORM框架(兼容MySQL 5.7) - `pymysql>=1.0.0` — MySQL驱动 - `python-dotenv>=1.0.0` — 环境变量管理 - `pyaudio>=0.2.14` — 麦克风音频采集(ASR) - `colorama>=0.4.6` — 终端彩色输出 #### 2.2 配置环境变量 ```bash copy .env.example .env ``` 编辑 `.env`,填入阿里云百炼 API Key: ```env # 阿里云百炼 API Key(必填) DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx # 家属手机号(可选,用于短信通知) FAMILY_PHONE= # 企业微信/钉钉 Webhook(可选,用于群通知) FAMILY_WEBHOOK= ``` #### 2.3 初始化 MySQL 数据库 ```bash mysql -u root -p < D:\yanglao\data\init_database.sql ``` **数据库配置:** - 数据库名:`silver_shield` - 默认用户:`root` - 默认密码:`123456` - 字符集:`utf8mb4` #### 2.4 启动后端 API 服务 ```bash cd backend python server.py ``` 服务启动在 `http://localhost:5000` **API服务特性:** - Flask + CORS 跨域支持 - 20+ REST API 接口 - SQLAlchemy ORM 数据库操作 - TTS 语音合成接口 - AI 防骗问答接口 --- ### 3. 管理后台环境配置 #### 3.1 安装 Node.js 依赖 ```bash cd frontend npm install ``` **依赖说明:** - `vue@^3.4.0` — Vue3 框架 - `vue-router@^4.3.0` — 路由管理 - `axios@^1.7.0` — HTTP请求 - `@arco-design/web-vue@^2.57.0` — Arco Design UI组件库 - `vite@^5.4.0` — 构建工具 - `@vitejs/plugin-vue@^5.1.0` — Vite Vue插件 #### 3.2 启动开发服务器 ```bash npm run dev ``` 后台启动在 `http://localhost:8080` **Vite配置说明:** - 开发服务器端口:8080 - API代理:`/api` → `http://localhost:5000` - 支持热更新(HMR) #### 3.3 构建生产版本 ```bash npm run build ``` 构建产物输出到 `dist/` 目录。 --- ### 4. 微信小程序配置 1. 打开**微信开发者工具** 2. 导入项目,目录选择 `D:\yanglao\miniapp` 3. 勾选「不校验合法域名」 4. 编译运行 **小程序配置:** - AppID:在 `project.config.json` 中配置 - API地址:在 `miniapp/api/api.js` 中配置(默认 `http://localhost:5000`) - Tab栏:首页、预警、AI助手、设置 --- ## 功能模块 ### 微信小程序(家属端) | Tab | 功能 | 说明 | |-----|------|------| | 首页 | 老人状态 | 显示老人信息、风险统计、最近答题、每日防骗知识 | | 预警 | 风险预警 | 实时预警列表、TTS语音播报、筛选、标记已读 | | AI助手 | 智能问答 | 防骗知识问答、可疑信息分析、快捷提问 | | 设置 | 系统设置 | 通知设置、风险等级调节、绑定/解绑老人 | **其他页面:** - `calls/` — 通话记录(分页加载、统计) - `quiz/` — 防骗问答(三关挑战、语音播报成绩) ### 防骗问答游戏 - **三关挑战**:入门关 → 进阶关 → 高手关 - **每关5题**:选择题形式,共15道题 - **语音播报**:答题结束语音播报成绩 - **成绩记录**:自动保存到数据库 - **题库内容**:涵盖公检法诈骗、中奖诈骗、冒充亲友、投资理财等 ### AI防骗助手 - 回答防骗知识问题 - 分析可疑电话/短信 - 提供防骗建议 - 基于阿里云百炼 Qwen-Plus 模型 - 支持快捷提问按钮 ### 管理后台(Vue3) | 页面 | 功能 | |------|------| | 登录 | 管理员登录(admin/admin123) | | 老人信息 | 查看/编辑老人基本信息 | | 预警记录 | 查看/删除预警记录 | | 黑名单 | 添加/删除黑名单号码 | | 通话记录 | 查看通话记录列表 | --- ## 数据库设计 数据库名:`silver_shield`,共10张表: | 表名 | 说明 | 关键字段 | |------|------|---------| | `elder_info` | 老人信息 | name, phone, is_online | | `alerts` | 预警记录 | fraud_type, risk_level, caller_number, is_read | | `call_records` | 通话记录 | caller_number, duration, risk_level, fraud_type | | `settings` | 系统设置 | notify_alert, notify_call_end, risk_level | | `knowledge_categories` | 知识分类 | id, name, icon, description | | `knowledge_items` | 知识条目 | title, content, category_id, risk_level, tags | | `blacklist` | 黑名单 | phone_number(唯一), reason | | `whitelist` | 白名单 | phone_number(唯一), reason | | `fraud_history` | 诈骗历史 | fraud_type, phone_number, summary, risk_level | | `quiz_records` | 答题记录 | user_id, level, score, total_questions, correct_count | --- ## API 接口一览 基础路径:`http://localhost:5000` ### 老人信息接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/elder/info` | 获取老人信息 | | POST | `/api/elder/update` | 更新老人信息 | ### 风险统计接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/risk/stats` | 今日预警数、未读预警数 | | GET | `/api/risk/current` | 当前未处理的风险 | ### 预警接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/alerts` | 分页获取预警列表 | | GET | `/api/alerts/recent` | 获取最近预警 | | GET | `/api/alerts/` | 预警详情 | | POST | `/api/alerts` | 新增预警 | | POST | `/api/alerts//read` | 标记已读 | | DELETE | `/api/alerts/` | 删除预警 | ### 通话记录接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/calls` | 分页获取通话记录 | | GET | `/api/calls/` | 通话详情 | ### 设置接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/settings` | 获取设置 | | PUT | `/api/settings` | 更新设置 | ### 绑定接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/bind` | 绑定老人账号 | | POST | `/api/unbind` | 解绑老人账号 | ### 知识库接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/knowledge` | 知识列表(支持分类过滤、关键词搜索) | | GET | `/api/knowledge/categories` | 知识分类及条目数 | | GET | `/api/knowledge/random` | 随机一条知识 | ### Agent 回调接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/notify` | 接收 Agent 预警通知 | | POST | `/api/call/report` | 接收通话报告 | ### TTS 接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/tts/synthesize` | 语音合成(文本上限500字) | | GET | `/audio/` | 提供音频文件访问 | ### AI 助手接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/ai/chat` | AI防骗问答对话 | ### 管理后台接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/admin/login` | 管理员登录(admin/admin123, test/test123) | | POST | `/api/admin/logout` | 退出登录 | ### 答题记录接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/quiz/record` | 保存答题记录 | | GET | `/api/quiz/records` | 获取答题记录 | | GET | `/api/quiz/stats` | 答题统计 | ### 黑名单接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/blacklist` | 黑名单列表 | | POST | `/api/blacklist` | 添加黑名单 | | DELETE | `/api/blacklist/` | 删除黑名单 | ### 诈骗历史接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/fraud-history` | 诈骗历史记录 | --- ## Agent 工具箱 | 工具 | 说明 | |------|------| | 🔧 `analyze_fraud` | 深度分析通话内容,判断诈骗类型和风险等级 | | 🔧 `alert_elder` | 向老人发出语音警告(TTS 播报) | | 🔧 `notify_family` | 通知家属(推送预警到小程序) | | 🔧 `check_number` | 查询/添加黑名单白名单 | | 🔧 `save_call_report` | 通话结束后保存安全分析报告 | --- ## 配置说明 所有配置通过环境变量或 `.env` 文件管理: | 变量 | 默认值 | 说明 | |------|-------|------| | `DASHSCOPE_API_KEY` | — | 阿里云百炼 API Key(必填) | | `FAMILY_PHONE` | — | 家属手机号(可选) | | `FAMILY_WEBHOOK` | — | 企业微信/钉钉 Webhook(可选) | | `DB_HOST` | `localhost` | MySQL 主机地址 | | `DB_PORT` | `3306` | MySQL 端口 | | `DB_USER` | `root` | MySQL 用户名 | | `DB_PASSWORD` | `123456` | MySQL 密码 | | `DB_NAME` | `silver_shield` | 数据库名 | --- ## 技术栈 | 组件 | 技术 | 用途 | |------|------|------| | 推理引擎 | Qwen-Plus (百炼) | Agent 推理 + 诈骗分析 | | 语音识别 | FunASR paraformer-realtime-v2 | 实时通话转文字 | | 语音合成 | CosyVoice cosyvoice-v1 | 警告语音 TTS | | Agent 框架 | 自研 ReAct | 工具调用 + 决策循环 | | 后端服务 | Flask + SQLAlchemy | REST API + ORM | | 管理后台 | Vue3 + Vite5 + Arco Design | Web管理界面 | | 数据库 | MySQL 5.7 | 数据持久化(10张表) | | 小程序 | 微信原生 | 家属端界面 | --- ## 运行模式 ### Agent 演示模式 ```bash # 运行所有5个演示场景 python demo.py --all # 运行指定场景 python demo.py --scene 2 # 交互模式(手动输入对话) python demo.py --interactive # 麦克风实时模式 python demo.py --microphone ``` ### 演示场景 | 场景 | 诈骗类型 | 预期结果 | |------|---------|---------| | 场景1 | 虚假养老项目 | 🚨 高风险 → 立即警告 | | 场景2 | 以房养老骗局 | 🚨 高风险 → 立即警告 | | 场景3 | 假冒基金公司 | 🚨 高风险 → 立即警告 | | 场景4 | 高回报理财 | 🚨 高风险 → 立即警告 | | 场景5 | 正常通话(对照组) | 🟢 安全 → 不干预 | --- ## 常见问题 **Q: 小程序连不上 API?** A: 微信开发者工具中勾选「不校验合法域名」,确保 API 服务已启动在 `localhost:5000`。 **Q: AI 助手不可用?** A: 检查阿里云百炼账号是否欠费,以及 API Key 是否正确配置。 **Q: 答题记录没有显示?** A: 确保后端服务已重启,且数据库 quiz_records 表已创建。 **Q: 管理后台无法登录?** A: 默认账号:admin/admin123 或 test/test123。 **Q: MySQL连接失败?** A: 检查MySQL服务是否启动,用户名密码是否正确(默认root/123456)。 --- **项目定位:** AI Agent,不是脚本 **核心能力:** 自主推理、工具调用、记忆系统、数据持久化 **目标:** 让独居老人远离电信诈骗