API连接问题修复报告.md 2.8 KB

API 连接问题修复报告

问题描述

FilamentAdmin 访问时出现以下错误:

  1. TypeError: FilamentManager::getUserName() 返回 null 而不是 string
  2. ConnectionException: 无法连接到 127.0.0.1:5015 (Question Bank API)

修复内容

1. User 模型 TypeError 修复

文件: /Volumes/T9/code/math/apis/FilamentAdmin/app/Models/User.php

问题: User 表使用 full_name 字段,但 Filament 尝试访问 name 字段返回 null

解决方案:

  • 导入 HasName 接口
  • 让 User 类实现 FilamentUser, HasName 接口
  • 添加 getFilamentName() 方法

    class User extends Authenticatable implements FilamentUser, HasName
    {
    public function getFilamentName(): string
    {
        return $this->full_name ?: $this->username ?: $this->email ?: 'Unknown User';
    }
    }
    

2. Question Bank API 端口修复

文件: /Volumes/T9/code/math/apis/docker-compose.microservices.yml

问题: api-question-bank 服务没有暴露外部端口 5015

解决方案:

  • 添加端口映射: "5015:5015"

3. Question Bank Service 端口修复

文件: /Volumes/T9/code/math/apis/QuestionBankService/Dockerfile

问题: 容器内应用运行在 6001 端口,但外部访问需要 5015 端口

解决方案:

  • 修改端口配置: EXPOSE 5015--port 5015

4. Knowledge API 端口修复

文件: /Volumes/T9/code/math/apis/docker-compose.microservices.yml

问题: api-knowledge 服务没有暴露外部端口 5011

解决方案:

  • 添加端口映射: "5011:5011"

5. Nginx 依赖修复

文件: /Volumes/T9/code/math/apis/docker-compose.microservices.yml

问题: nginx 服务依赖 filament-admin,但该服务已禁用

解决方案:

  • 注释掉 nginx 服务配置

服务状态验证

所有 API 服务现在正常工作:

✅ Question Bank API (5015): HTTP 200
   GET http://127.0.0.1:5015/health
   GET http://127.0.0.1:5015/questions?page=1&per_page=5

✅ Knowledge API (5011): HTTP 200
   GET http://127.0.0.1:5011/health

✅ MathRecSys API (5010): HTTP 200
   GET http://127.0.0.1:5010/health

容器状态

api-question-bank     0.0.0.0:5015->5015/tcp
api-knowledge         0.0.0.0:5011->5011/tcp
mathrecsys-api        0.0.0.0:5010->5010/tcp
mathrecsys-frontend   0.0.0.0:3000->3000/tcp

测试步骤

  1. 清理 Laravel 缓存:

    cd /Volumes/T9/code/math/apis/FilamentAdmin
    php artisan config:clear
    php artisan cache:clear
    
  2. 访问 FilamentAdmin:

    http://fa.test/admin
    
  3. 验证 API 连接:

    curl http://127.0.0.1:5015/health
    curl http://127.0.0.1:5011/health
    curl http://127.0.0.1:5010/health
    

修复时间

2025-11-17 13:10

修复人

Claude Code