refactor: route calc through service layer

This commit is contained in:
2026-06-04 19:44:32 +08:00
parent ffa9d1c2bd
commit 234df937a7
4 changed files with 24 additions and 3 deletions
+2 -3
View File
@@ -2,7 +2,7 @@ from api.core.Gzip import register_gzip_request
from fastapi import APIRouter, Body from fastapi import APIRouter, Body
from api.core.Response import response from api.core.Response import response
from api.dp import AltersDep from api.dp import AltersDep
from core.basic.character import createCharacter from services.calc_service import calculate
router = APIRouter() router = APIRouter()
@@ -11,5 +11,4 @@ register_gzip_request(router)
@router.post('/calc') @router.post('/calc')
async def calc(state: AltersDep, config=Body(None)): async def calc(state: AltersDep, config=Body(None)):
character = createCharacter(state.alter, state.equVersion) return response(data=calculate(state, config))
return response(data=character.calc(config))
+1
View File
@@ -0,0 +1 @@
"""Application services for backend API orchestration."""
+10
View File
@@ -0,0 +1,10 @@
from typing import Any
from api.core.Auth import AlterState
from core.basic.character import createCharacter
def calculate(state: AlterState, config: dict[str, Any] | None) -> dict[str, Any]:
safe_config = config or {}
character = createCharacter(state.alter, state.equVersion)
return character.calc(safe_config)
+11
View File
@@ -0,0 +1,11 @@
from api.core.Auth import AlterState
from services.calc_service import calculate
def test_calculate_returns_character_calc_result(minimal_calc_config):
state = AlterState('GF.swordman_male.weapon_master', 'token', {}, '0', 0)
result = calculate(state, minimal_calc_config)
assert isinstance(result, dict)
assert set(['uuid', 'skills', 'info', 'suits', 'buffer']).issubset(result)