# rtmianshi **Repository Path**: wellxy_admin/rtmianshi ## Basic Information - **Project Name**: rtmianshi - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: feature/i18n-mysql-doctors-api - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-07 - **Last Updated**: 2026-02-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 面试要求 Fork当前项目到你自己的github账号,并在自己的账号下完成以下操作 ## 新增功能说明 ### 1. 首页中英文切换功能 - ✅ 使用 vue-i18n 实现国际化 - ✅ 页面右上角添加语言切换下拉菜单(中文 / English) - ✅ 语言资源文件保存在 `web/qa-web/src/locales/` 目录 - ✅ 支持首页所有内容的中英文切换 - ✅ 语言选择保存到 localStorage,刷新后保持 **技术实现:** - 安装 vue-i18n@9 - 创建 `src/locales/zh.ts` 和 `src/locales/en.ts` 语言文件 - 创建 `src/i18n.ts` 配置文件 - 更新 AppHeader.vue 添加语言切换组件 - 更新 Home.vue 使用国际化文本 ### 2. 医生数据由 JSON 迁移至 MySQL **迁移内容:** - ✅ 前端 JSON 数据迁移到 MySQL 数据库 - ✅ 创建 doctors 表(包含 id, name, title, department, hospital, avatar_url, description 等字段) - ✅ 使用 Docker Compose 管理 MySQL 和 phpMyAdmin - ✅ 后端提供 RESTful API(GET /api/doctors) - ✅ 前端通过 axios 调用 API 获取医生数据 **数据库配置:** - 数据库:qa_db - 表名:doctors - 访问地址:http://localhost:3306 - phpMyAdmin:http://localhost:8080 ## 技术要求 ### 分支要求 创建特性分支,自己命名这个分支,在分支内完成以下编码/测试/文档编写过程。并在完成后将分支推送到你自己代码库。 ### 编码要求 1. 给web端的首页添加中英文切换能力,在页面右上角添加语言切换下拉菜单,在用户选择 **中文/English** 选项时动态切换页面显示内容到对应语言。中英文语言资源文件需要保存在 `web/qa-web/src/locales` 目录中。只需要处理首页本身,无需处理其他页面。 2. 当前应用的数据全部使用json文件的方式在前端项目中存储,请将医生相关的数据使用mysql数据库存储。具体要求如下: - 创建 docker-compose.yml 用于创建mysql数据库,并挂接phpmyadmin作为数据库服务器管理界面 - 在 qa-service-user 服务中创建可以支持前端 [医生页面](web/qa-web/src/views/Doctors.vue) 显示医生列表所需要的api - 完成前后端联调 ### 测试要求 1. 使用 curl 构建对于以上医生列表页面的 api 的测试用例脚本 2. 提供 API_TEST.md 用于说明以上 api 测试的执行 ### 文档要求 1. 生成 /docs/api.md 文档,用于对 qa-service-user 服务中的所有api测试进行说明 ## 面试流程要求 针对以上 **技术要求** 部分完成对应的代码编写,测试编写和文档编写;以上所有内容需要全部使用AI Coding提示词的方式完成,不得直接编码(可以对AI生成的代码/文档进行手工调整)。完成以上编码后,基于你的分支创建指向main分支的PR,并发送PR链接。 完成以上代码编写过程后,请联系我并演示你的 AI Coding 编码过程,演示过程中需要你从main分支拉取新的分支,基于新的分支输入提示词,重现整个 编码/测试/文档 的生成过程。 面试时间要求:面试者需要在2天内完成以上面试流程。 --- ## 运行说明 ### 环境要求 - **Node.js**: v18+ - **Java**: 17+ - **Maven**: 3.8+ - **Docker**: 20.10+ (用于运行 MySQL) - **Docker Compose**: 2.0+ ### 1. MySQL 与 phpMyAdmin 启动说明 #### 方式一:使用 Docker Compose(推荐) ```bash # 进入 server 目录 cd server # 启动 MySQL 和 phpMyAdmin docker-compose up -d # 查看运行状态 docker-compose ps # 停止服务 docker-compose down # 查看日志 docker-compose logs -f mysql ``` **访问地址:** - MySQL:localhost:3306 - phpMyAdmin:http://localhost:8080 - 用户名:root - 密码:123456 **初始化:** - 首次启动会自动执行 `init-sql/init.sql` 初始化数据库和数据 #### 方式二:使用远程数据库 如果已有 MySQL 服务器,修改 `server/qa-service-user/src/main/resources/application.properties`: ```properties spring.datasource.url=jdbc:mysql://192.168.139.100:3306/qa_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456 ``` ### 2. 后端服务启动方式 ```bash # 进入后端项目目录 cd server/qa-service-user # 方式一:使用 Maven Wrapper(推荐) ./mvnw clean install ./mvnw spring-boot:run # 方式二:使用系统 Maven mvn clean install mvn spring-boot:run # 方式三:直接运行 JAR ./mvnw clean package java -jar target/qa-service-user-0.0.1-SNAPSHOT.jar ``` **验证后端服务:** ```bash # 健康检查 curl http://localhost:8080/actuator/health # 获取医生列表 curl http://localhost:8080/api/doctors ``` **后端服务端口:** 8080 ### 3. 前端服务启动方式 ```bash # 进入前端项目目录 cd web/qa-web # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build # 预览生产版本 npm run preview ``` **访问地址:** http://localhost:5173 **配置环境变量(可选):** 创建 `.env` 文件(已提供默认值): ```env VITE_API_BASE_URL=http://localhost:8080 ``` ### 4. API 测试方式 #### 方式一:使用测试脚本(推荐) ```bash # 进入 server 目录 cd server # 给脚本添加执行权限 chmod +x test-api.sh # 运行测试 ./test-api.sh # 指定 API 地址 API_BASE_URL=http://localhost:8080 ./test-api.sh ``` #### 方式二:手动测试 详见 [API_TEST.md](server/API_TEST.md) ### 5. 接口文档查看方式 查看完整 API 文档: ```bash # 打开文档 cat docs/api.md # 或使用 Markdown 查看器 ``` **文档位置:** [docs/api.md](docs/api.md) **在线文档包含:** - 所有 API 端点说明 - 请求/返回示例 - 错误码说明 - 数据库结构 - 技术栈信息 ### 6. 完整启动流程 ```bash # 1. 启动 MySQL 和 phpMyAdmin cd server docker-compose up -d # 2. 启动后端服务 cd qa-service-user ./mvnw spring-boot:run & # 等待后端启动完成(约 30 秒) # 3. 启动前端服务 cd ../../web/qa-web npm run dev # 4. 访问应用 # 前端:http://localhost:5173 # 后端:http://localhost:8080 # phpMyAdmin:http://localhost:8080 ``` ### 常见问题 **1. 后端无法连接数据库** - 检查 Docker 容器是否运行:`docker-compose ps` - 检查数据库是否初始化:`docker-compose logs mysql` - 确认 application.properties 配置正确 **2. 前端无法获取医生数据** - 检查后端是否启动:`curl http://localhost:8080/actuator/health` - 检查 API 地址配置:确认 `.env` 文件中的 `VITE_API_BASE_URL` - 检查浏览器控制台错误信息 **3. phpMyAdmin 无法访问** - 检查 phpMyAdmin 容器状态:`docker-compose ps` - 确认端口 8080 未被占用 - 检查防火墙设置 --- ## 项目结构 ``` rtmainshi/ ├── docs/ # 文档目录 │ └── api.md # API 文档 ├── server/ # 后端服务 │ ├── docker-compose.yml # Docker Compose 配置 │ ├── init-sql/ # 数据库初始化脚本 │ │ └── init.sql # 建表和插入数据 │ ├── test-api.sh # API 测试脚本 │ ├── API_TEST.md # API 测试文档 │ ├── mysql-config-example.yml # MySQL 配置示例 │ ├── qa-service-question/ # 问答服务 │ ├── qa-service-user/ # 用户服务(医生 API) │ └── qa-service-statistic/ # 统计服务 └── web/ # 前端项目 └── qa-web/ # Vue 3 + TypeScript ├── src/ │ ├── api/ # API 调用 │ │ └── doctor.ts # 医生 API │ ├── components/ # 组件 │ │ └── AppHeader.vue # 头部导航(含语言切换) │ ├── locales/ # 语言资源 │ │ ├── zh.ts # 中文 │ │ └── en.ts # 英文 │ ├── views/ # 页面 │ │ ├── Home.vue # 首页 │ │ └── Doctors.vue # 医生列表页 │ ├── i18n.ts # i18n 配置 │ └── main.ts # 入口文件 ├── package.json └── .env # 环境变量 ``` --- ## 技术栈 ### 前端 - **框架**: Vue 3.5.10 (Composition API) - **语言**: TypeScript 5.5.3 - **构建工具**: Vite 5.4.8 - **UI 库**: Ant Design Vue 4.2.6 - **路由**: Vue Router 4.6.3 - **国际化**: vue-i18n 9.14.5 - **HTTP 客户端**: axios ### 后端 - **框架**: Spring Boot 3.5.7 - **语言**: Java 17 - **构建工具**: Maven - **数据访问**: Spring Data JPA - **数据库**: MySQL 8.0 - **监控**: Spring Boot Actuator ### 基础设施 - **容器化**: Docker + Docker Compose - **数据库管理**: phpMyAdmin