# windsurf_exam **Repository Path**: impwang/windsurf_exam ## Basic Information - **Project Name**: windsurf_exam - **Description**: 一个用windsurf + Claud 3.5 sonnet生成的网站 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-27 - **Last Updated**: 2025-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Medical Exam AI Assistant ## 项目介绍 这是一个基于Spring Cloud的微服务架构项目,为医药分析师提供AI辅助考试复习工具。系统能够根据考试科目自动分析历年真题考点,并结合教材章节生成个性化的学习卡片,帮助考生进行高效的针对性复习。 ### 产品亮点 - 智能考点提取:运用AI技术自动分析历年真题,提取关键考点 - 知识关联分析:自动将考点与教材章节关联,构建完整知识体系 - 个性化学习:根据考生学习进度和薄弱点,生成定制化的复习计划 - 直观的知识展示:以卡片形式呈现知识点,便于理解和记忆 ### 目标用户 - 医药相关专业考生 - 执业医师资格考试考生 - 医药分析师认证考生 - 医学继续教育学习者 ## 技术栈 ### 后端技术栈 #### 微服务框架 - Spring Cloud Alibaba - Spring Boot 3.x - Spring Cloud Gateway - Nacos:服务注册与配置中心 - Sentinel:服务熔断与限流 - Seata:分布式事务 #### 存储层 - PostgreSQL:核心业务数据存储 - Redis:缓存与分布式会话 - Elasticsearch:全文检索引擎 - Neo4j:知识图谱存储 - MinIO:文件存储系统 #### AI与算法 - TensorFlow/PyTorch:深度学习框架 - Scikit-learn:机器学习算法 - HuggingFace Transformers:NLP模型 - FastText:文本分类 - Word2Vec:词向量模型 #### 中间件 - RabbitMQ:消息队列 - XXL-Job:分布式任务调度 - Prometheus + Grafana:监控系统 - ELK Stack:日志收集分析 ### 前端技术栈 #### 核心框架 - Vue 3:前端框架 - TypeScript:类型系统 - Vite:构建工具 #### UI组件 - Element Plus:UI组件库 - ECharts:数据可视化 - D3.js:知识图谱可视化 - Vue Flow:流程图展示 #### 状态管理 - Pinia:状态管理 - Vue Router:路由管理 #### 工具库 - Axios:HTTP客户端 - Day.js:时间处理 - Lodash:工具函数 ### 开发与运维 #### 开发工具 - Maven:项目构建工具 - Git:版本控制 - Docker:容器化部署 - Kubernetes:容器编排 #### 质量保证 - JUnit:单元测试 - Mockito:测试模拟 - SonarQube:代码质量检测 - Swagger:API文档 #### 监控运维 - Skywalking:分布式追踪 - Arthas:Java诊断工具 - Jenkins:持续集成部署 - Ansible:自动化运维 ## 认证模块 (medical-auth) ### 已实现功能 #### 1. 基础认证功能 - [x] JWT令牌生成与验证 - [x] 用户登录与注销 - [x] 分布式Session管理 - [x] 密码加密与验证 - [x] Token黑名单机制 #### 2. 权限管理 - [x] 基于RBAC的权限模型 - [x] 角色管理 - [x] 权限分配 - [x] 权限验证 #### 3. 安全特性 - [x] 密码策略配置 - [x] 登录失败处理 - [x] 认证异常处理 - [x] 访问拒绝处理 - [x] 图片验证码 - [x] 接口限流(令牌桶算法) - [x] 登录日志记录 #### 4. 测试与文档 - [x] 单元测试(UserService, AuthService) - [x] API文档(Swagger) - [x] 代码注释 ### 待开发功能 #### 1. 高级认证 - [ ] OAuth2集成 - [ ] 第三方登录(微信、支付宝) - [ ] 单点登录(SSO) - [ ] 多因素认证(MFA) #### 2. 安全增强 - [ ] IP限流 - [ ] 滑动验证码 - [ ] 短信验证码 - [ ] 登录设备管理 - [ ] 异常登录检测 - [ ] 账户锁定机制 #### 3. 审计与监控 - [ ] 操作日志审计 - [ ] 安全事件监控 - [ ] 实时告警 - [ ] 风险评估 #### 4. 测试与优化 - [ ] 集成测试 - [ ] 性能测试 - [ ] 压力测试 - [ ] 代码优化 ## 网关模块 (medical-gateway) ### 已实现功能 #### 1. 路由管理 - [x] 动态路由配置 - [x] 服务自动发现 - [x] 负载均衡 - [x] 路由断言(Predicates) #### 2. 安全防护 - [x] 全局认证过滤 - [x] XSS防护 - [x] 统一异常处理 - [x] 跨域(CORS)支持 #### 3. 流量控制 - [x] 基于Redis的分布式限流 - [x] 自定义限流规则 - [x] 限流监控 - [x] 友好的限流响应 #### 4. 可观测性 - [x] 请求日志记录 - [x] Prometheus监控集成 - [x] 自定义监控指标 - [x] 性能指标收集 #### 5. 熔断降级 - [x] Sentinel集成 - [x] 熔断规则配置 - [x] 服务降级处理 - [x] 自定义降级响应 ### 待开发功能 #### 1. 高级路由 - [ ] 灰度发布 - [ ] 流量染色 - [ ] A/B测试支持 - [ ] 请求重写 #### 2. 安全增强 - [ ] SQL注入防护 - [ ] 敏感信息过滤 - [ ] 防重放攻击 - [ ] 请求加密 #### 3. 高级限流 - [ ] 动态限流规则 - [ ] 多维度限流 - [ ] 黑白名单 - [ ] 自适应限流 #### 4. 监控告警 - [ ] 自定义告警规则 - [ ] 多渠道告警通知 - [ ] 告警级别管理 - [ ] 告警事件处理 #### 5. 运维支持 - [ ] 动态配置刷新 - [ ] 服务熔断统计 - [ ] 网关性能优化 - [ ] 运维管理接口 ## 需求分析 ### 1. 核心功能需求 #### A. 考试科目管理 - 支持多种医药相关考试科目的管理 - 科目的分类与层级管理(如基础医学、临床医学等) - 科目基础信息维护(考试时间、考试形式、分值分布等) - 考试大纲版本管理 #### B. 真题考点分析 - 历年真题的收集、整理与数字化 - AI自动提取考点,形成考点库 - 考点的分类与标签化管理 - 考点出现频率统计与趋势分析 - 考点难度的智能评估系统 #### C. 课程章节关联 - 教材章节体系的数字化管理 - AI自动关联考点与教材章节 - 知识点之间的依赖关系分析 - 章节重要性的智能评估 - 知识体系的可视化展示 #### D. 学习卡片生成 - 基于AI的知识卡片智能生成 - 卡片包含考点、相关章节、典型例题 - 支持多种卡片展示形式(文本、图表、脑图等) - 卡片的难度分级系统 - 知识卡片的个性化推荐 ### 2. 用户体验需求 #### A. 交互设计 - 简洁直观的科目选择界面 - 层次化的考点展示方式 - 清晰的知识体系导航结构 - 流畅的卡片浏览机制 - 便捷的搜索和筛选功能 #### B. 个性化功能 - 个人学习进度跟踪 - 重点考点标记系统 - 个人笔记添加与管理 - 智能复习计划生成 - 学习数据统计与分析 ### 3. 技术需求 #### A. AI能力 - 自然语言处理能力 - 文本分类与聚类算法 - 知识图谱构建技术 - 智能推荐算法 - 机器学习模型训练与优化 #### B. 数据处理 - 历年真题数据库建设 - 教材知识库构建 - 考点关系图谱维护 - 用户学习数据分析 - 实时数据更新机制 ### 4. 性能需求 - AI分析响应时间控制在3秒内 - 支持1000+并发用户访问 - 数据实时更新能力 - 系统99.9%可用性保障 - 接口响应时间<500ms ### 5. 安全需求 - 用户数据加密存储 - 内容版权保护机制 - 基于RBAC的访问控制 - 数据定期备份机制 - 敏感信息脱敏处理 ### 6. 运营需求 #### A. 内容管理 - 考题库定期更新维护 - 知识点专家审核机制 - 用户反馈快速处理 - 内容质量评估体系 - 错误内容纠正流程 #### B. 数据分析 - 用户学习行为分析 - 考点热度实时统计 - 系统使用情况监控 - 学习效果评估报告 - 运营数据可视化 ### 7. 潜在风险 #### A. 技术风险 - AI分析的准确性问题 - 知识关联的完整性挑战 - 系统扩展性的限制 - 数据更新的及时性 - 服务稳定性保障 #### B. 业务风险 - 考试政策变化的影响 - 教材版本更新的适配 - 用户需求变化的应对 - 竞品功能迭代的压力 - 商业模式的可持续性 ### 8. 后续扩展方向 #### A. 功能扩展 - 智能模拟测试生成 - 错题重点训练系统 - 群组学习互动功能 - 专家在线答疑平台 - 个性化学习路径规划 #### B. 场景扩展 - 移动端产品适配 - 多端数据实时同步 - 离线学习模式支持 - 社交分享功能集成 - 直播课程系统对接 ### 9. 模块设计 #### 9.1 考试科目管理模块 ##### 9.1.1 功能概述 考试科目管理模块是系统的基础模块之一,负责管理所有考试科目的基本信息、分类、大纲、分值规则和考试时间安排。该模块为其他模块提供必要的科目信息支持。 ##### 9.1.2 核心功能 1. 科目分类管理 - 支持多级分类 - 灵活的分类层级 - 分类排序与展示 2. 科目基础信息 - 科目信息的增删改查 - 科目状态管理 - 难度等级设置 3. 考试大纲管理 - 大纲版本控制 - 生效期管理 - 大纲内容维护 4. 分值规则配置 - 题型配置 - 分值设置 - 总分控制 5. 考试时间管理 - 考试时间安排 - 报名时间设置 - 考试地点管理 ##### 9.1.3 数据库设计 ###### 表结构概述 - exam_category:考试类别表 - exam_subject:考试科目表 - exam_outline:考试大纲表 - exam_score_rule:分值规则表 - exam_time_arrangement:考试时间安排表 ###### 建表SQL ```sql -- 考试类别表 CREATE TABLE `med_exam_category` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `category_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类别名称', `category_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类别编码', `parent_id` bigint unsigned DEFAULT NULL COMMENT '父级ID', `category_level` tinyint unsigned NOT NULL COMMENT '层级', `sort_order` int unsigned DEFAULT '0' COMMENT '排序号', `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '描述', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_user_id` bigint unsigned NOT NULL COMMENT '创建人ID', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_user_id` bigint unsigned DEFAULT NULL COMMENT '修改人ID', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除 1-已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_category_code` (`category_code`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试类别表'; -- 考试科目表 CREATE TABLE `med_exam_subject` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `subject_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '科目名称', `subject_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '科目编码', `category_id` bigint unsigned NOT NULL COMMENT '所属类别ID', `credit_hours` smallint unsigned NOT NULL COMMENT '学时', `passing_score` smallint unsigned NOT NULL COMMENT '及格分数', `total_score` smallint unsigned NOT NULL COMMENT '总分', `exam_duration` smallint unsigned NOT NULL COMMENT '考试时长(分钟)', `difficulty_level` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '难度等级:EASY-简单 MEDIUM-中等 HARD-困难', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DRAFT' COMMENT '状态:DRAFT-草稿 PUBLISHED-已发布 ARCHIVED-已归档', `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '描述', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_user_id` bigint unsigned NOT NULL COMMENT '创建人ID', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_user_id` bigint unsigned DEFAULT NULL COMMENT '修改人ID', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除 1-已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_subject_code` (`subject_code`), KEY `idx_category_id` (`category_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试科目表'; -- 考试大纲表 CREATE TABLE `med_exam_outline` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `subject_id` bigint unsigned NOT NULL COMMENT '科目ID', `outline_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '大纲名称', `outline_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '大纲编码', `version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '版本号', `effective_date` date NOT NULL COMMENT '生效日期', `expiry_date` date DEFAULT NULL COMMENT '失效日期', `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '大纲内容', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DRAFT' COMMENT '状态:DRAFT-草稿 PUBLISHED-已发布 ARCHIVED-已归档', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_user_id` bigint unsigned NOT NULL COMMENT '创建人ID', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_user_id` bigint unsigned DEFAULT NULL COMMENT '修改人ID', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除 1-已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_outline_code_version` (`outline_code`, `version`), KEY `idx_subject_id` (`subject_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试大纲表'; -- 分值规则表 CREATE TABLE `med_exam_score_rule` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `subject_id` bigint unsigned NOT NULL COMMENT '科目ID', `question_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '题型:SINGLE_CHOICE-单选题 MULTIPLE_CHOICE-多选题 TRUE_FALSE-判断题', `score_per_question` decimal(5,2) unsigned NOT NULL COMMENT '每题分值', `question_count` smallint unsigned NOT NULL COMMENT '题目数量', `total_score` decimal(5,2) unsigned NOT NULL COMMENT '该题型总分', `sort_order` int unsigned DEFAULT '0' COMMENT '排序号', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_user_id` bigint unsigned NOT NULL COMMENT '创建人ID', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_user_id` bigint unsigned DEFAULT NULL COMMENT '修改人ID', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除 1-已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_subject_question_type` (`subject_id`, `question_type`), KEY `idx_subject_id` (`subject_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分值规则表'; -- 考试时间安排表 CREATE TABLE `med_exam_time_arrangement` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `subject_id` bigint unsigned NOT NULL COMMENT '科目ID', `exam_date` date NOT NULL COMMENT '考试日期', `start_time` time NOT NULL COMMENT '开始时间', `end_time` time NOT NULL COMMENT '结束时间', `registration_start` date NOT NULL COMMENT '报名开始日期', `registration_end` date NOT NULL COMMENT '报名结束日期', `exam_location` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '考试地点', `max_candidates` smallint unsigned DEFAULT NULL COMMENT '最大考生人数', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'PENDING' COMMENT '状态:PENDING-待开始 ONGOING-进行中 COMPLETED-已完成 CANCELLED-已取消', `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '备注', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_user_id` bigint unsigned NOT NULL COMMENT '创建人ID', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_user_id` bigint unsigned DEFAULT NULL COMMENT '修改人ID', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除 1-已删除', PRIMARY KEY (`id`), KEY `idx_subject_id` (`subject_id`), KEY `idx_exam_date` (`exam_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试时间安排表'; ``` ###### 表结构说明 1. exam_category(考试类别表) - 支持多级分类 - 使用parent_id实现层级关系 - 包含排序字段便于展示 2. exam_subject(考试科目表) - 核心科目信息 - 包含难度等级和状态 - 关联考试类别 3. exam_outline(考试大纲表) - 支持版本控制 - 包含生效和失效日期 - 存储完整大纲内容 4. exam_score_rule(分值规则表) - 支持多种题型 - 记录每种题型的分值和数量 - 确保总分准确性 5. exam_time_arrangement(考试时间安排表) - 完整的考试时间信息 - 包含报名时间段 - 支持多个考试地点 所有表都包含: - 主键使用BIGINT类型 - 创建和更新信息审计字段 - 逻辑删除字段 - 适当的唯一约束和索引优化 ## 版本规划 ### V1.0 核心功能版(预计2025Q2发布) #### 1. 基础框架搭建 - [x] 微服务架构搭建 - [x] 认证授权体系 - [x] 网关服务 - [ ] 基础设施配置(Redis、PostgreSQL、Elasticsearch) - [ ] 开发规范制定 #### 2. 考试科目管理(medical-exam) - [ ] 科目基础信息管理(增删改查) - [ ] 考试大纲管理 - [ ] 考试时间配置 - [ ] 分值分布设置 - [ ] 科目分类管理 #### 3. 知识库建设(medical-knowledge) - [ ] 教材章节体系管理 - [ ] 知识点录入与管理 - [ ] 基础知识图谱构建 - [ ] 知识点关联关系管理 - [ ] 知识点标签体系 #### 4. 考点分析(medical-content) - [ ] 历年真题数据库建设 - [ ] 基础文本分析能力 - [ ] 考点提取算法V1.0 - [ ] 考点与章节手动关联 - [ ] 考点难度评估体系 #### 5. 学习卡片(medical-content) - [ ] 基础卡片生成 - [ ] 卡片内容模板 - [ ] 卡片展示页面 - [ ] 卡片管理功能 - [ ] 基础学习记录 #### 6. 用户体验 - [ ] 统一UI设计 - [ ] 响应式布局 - [ ] 基础数据可视化 - [ ] 用户操作日志 - [ ] 系统反馈机制 ### 后续版本规划 #### V1.1 AI增强版(预计2025Q3) - AI模型训练与优化 - 智能考点提取 - 自动知识关联 - 个性化推荐系统 - 学习路径规划 #### V1.2 交互优化版(预计2025Q4) - 知识图谱可视化 - 高级数据分析 - 学习进度跟踪 - 错题本功能 - 移动端适配 #### V2.0 社区版(预计2026Q1) - 用户社区 - 专家问答 - 群组学习 - 学习资料分享 - 在线考试模块 ### V1.0版本技术选型 #### 1. 基础设施 - Spring Cloud Alibaba:微服务基础框架 - PostgreSQL:核心数据存储 - Redis:缓存与会话管理 - Elasticsearch:全文检索 - MinIO:文件存储 #### 2. 后端技术 - Spring Boot 3.x:应用开发框架 - MyBatis Plus:ORM框架 - Spring Security:安全框架 - Swagger:API文档 - JUnit:单元测试 #### 3. 前端技术 - Vue 3:前端框架 - TypeScript:类型系统 - Vite:构建工具 #### 4. 运维支持 - Docker:容器化部署 - Jenkins:CI/CD - Prometheus:监控 - ELK Stack:日志管理 ### V1.0版本交付标准 1. 核心功能可用性验证 2. 单元测试覆盖率>80% 3. 接口响应时间<500ms 4. 系统可用性>99% 5. 核心功能操作手册 6. 基础运维文档 7. 开发文档完善 8. 安全漏洞清零