1
This commit is contained in:
@@ -11,7 +11,7 @@ from core.basic.character import createCharacter
|
|||||||
from core.open.helper import get_user_info_by_id, get_user_info_by_role_id, get_user_list_by_id, getRoleJobCode
|
from core.open.helper import get_user_info_by_id, get_user_info_by_role_id, get_user_list_by_id, getRoleJobCode
|
||||||
from core.open.skillTree import get_skill_tree_info
|
from core.open.skillTree import get_skill_tree_info
|
||||||
from api.core.exception import ResponseException
|
from api.core.exception import ResponseException
|
||||||
from api.utils.skill_detail import normalize_skill_detail, skill_detail_for_level
|
from api.utils.skill_detail import SKILL_DETAIL_NORMALIZE_VERSION, normalize_skill_detail, skill_detail_for_level
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ async def get_skill_info(state: AltersDep, skillId: str, level: int, redis: Redi
|
|||||||
jobId = alter.split('.')[1]
|
jobId = alter.split('.')[1]
|
||||||
jobGrowId = alter.split('.')[2].replace('_carry', '')
|
jobGrowId = alter.split('.')[2].replace('_carry', '')
|
||||||
skill_info = {}
|
skill_info = {}
|
||||||
key = f'openapi:{jobId}:{jobGrowId}:{skillId}'
|
key = f'openapi:{SKILL_DETAIL_NORMALIZE_VERSION}:{jobId}:{jobGrowId}:{skillId}'
|
||||||
try:
|
try:
|
||||||
|
|
||||||
def get_skill_info():
|
def get_skill_info():
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from fastapi import APIRouter, Path, Query
|
|||||||
from api.core.Response import response
|
from api.core.Response import response
|
||||||
from api.core.Redis import get_redis_info
|
from api.core.Redis import get_redis_info
|
||||||
from api.dp import RedisDep
|
from api.dp import RedisDep
|
||||||
from api.utils.skill_detail import normalize_skill_detail, skill_detail_for_level
|
from api.utils.skill_detail import SKILL_DETAIL_NORMALIZE_VERSION, normalize_skill_detail, skill_detail_for_level
|
||||||
import re
|
import re
|
||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ async def get_cn_skill_info(
|
|||||||
level (int, optional): 技能等级,默认为None
|
level (int, optional): 技能等级,默认为None
|
||||||
"""
|
"""
|
||||||
skill_info = {}
|
skill_info = {}
|
||||||
key = f'openapi:{jobId}:{jobGrowId}:{skillId}'
|
key = f'openapi:{SKILL_DETAIL_NORMALIZE_VERSION}:{jobId}:{jobGrowId}:{skillId}'
|
||||||
try:
|
try:
|
||||||
|
|
||||||
def get_skill_info():
|
def get_skill_info():
|
||||||
|
|||||||
@@ -3,8 +3,12 @@ import re
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
PLACEHOLDER_PATTERN = re.compile(r'<(?:int|float\d*)[^>]*>')
|
# Only numeric data placeholders are normalized. Decorative Korean placeholders such as <소수1+>
|
||||||
|
# stay untouched and do not consume a value index.
|
||||||
|
DATA_PLACEHOLDER_PATTERN = re.compile(r'<(?:int|float\d*)[^>]*>')
|
||||||
|
DECORATIVE_KOREAN_PLACEHOLDER_PATTERN = re.compile(r'<[가-힣]+\d+\+>')
|
||||||
VALUE_PATTERN = re.compile(r'\{value\d+\}')
|
VALUE_PATTERN = re.compile(r'\{value\d+\}')
|
||||||
|
SKILL_DETAIL_NORMALIZE_VERSION = 'decorative-korean-placeholder-v1'
|
||||||
|
|
||||||
|
|
||||||
def replace_placeholders(template: str) -> str:
|
def replace_placeholders(template: str) -> str:
|
||||||
@@ -15,7 +19,15 @@ def replace_placeholders(template: str) -> str:
|
|||||||
idx += 1
|
idx += 1
|
||||||
return f'{{value{idx}}}'
|
return f'{{value{idx}}}'
|
||||||
|
|
||||||
return PLACEHOLDER_PATTERN.sub(repl, template)
|
protected = DECORATIVE_KOREAN_PLACEHOLDER_PATTERN.sub(lambda match: f'@@DDECORATIVE_{len(match.group(0))}_{match.start()}@@', template)
|
||||||
|
replacements = {
|
||||||
|
f'@@DDECORATIVE_{len(match.group(0))}_{match.start()}@@': match.group(0)
|
||||||
|
for match in DECORATIVE_KOREAN_PLACEHOLDER_PATTERN.finditer(template)
|
||||||
|
}
|
||||||
|
normalized = DATA_PLACEHOLDER_PATTERN.sub(repl, protected)
|
||||||
|
for token, placeholder in replacements.items():
|
||||||
|
normalized = normalized.replace(token, placeholder)
|
||||||
|
return normalized
|
||||||
|
|
||||||
|
|
||||||
def normalize_skill_detail(skill_data: dict[str, Any]) -> dict[str, Any]:
|
def normalize_skill_detail(skill_data: dict[str, Any]) -> dict[str, Any]:
|
||||||
|
|||||||
+1
-1
Submodule backend/openapi updated: 949f72da85...70c4c16040
Reference in New Issue
Block a user