XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWarframe

【WinUI】基于Warframe游戏本体的公开服务器以及安装器

公开
关注 0 Fork 0 Star 0
UTF-8
"""Record implementation evidence separately from the immutable upstream feature inventory.

Run after reviewing the linked sources. This does not infer game acceptance from test counts.
"""
import json
from pathlib import Path

ROOT = Path(__file__).resolve().parent.parent
path = ROOT / 'docs/openwf-frontend-inventory.json'
audit = json.loads(path.read_text(encoding='utf-8-sig'))
groups = {
    'account': ['Services/PlayerPortal.cs', 'Services/PlayerIdentity.cs'],
    'inventory': ['Services/AccountEditor.cs', 'Services/AccountEditorOperations.cs', 'Services/AccountEditorAcquisition.cs'],
    'equipment': ['Services/AccountEditorEquipment.cs', 'Services/AccountEditorLegacy.cs'],
    'evolution': ['Services/AccountEditorEquipment.cs', 'Services/AccountEditorOperations.cs'],
    'booster': ['Services/AccountEditor.cs', 'Services/AccountEditorEquipment.cs'],
    'quest': ['Services/AccountEditor.cs', 'Services/QuestManagement.cs', 'Services/ShipFeatureProgress.cs'],
    'mods': ['Services/AccountEditorAcquisition.cs', 'Services/AccountEditorOperations.cs', 'Services/ModApi.cs'],
    'riven': ['Services/RivenCalculator.cs', 'Services/RivenChallenges.cs', 'Services/AccountEditorAcquisition.cs'],
    'progress': ['Services/AccountEditorOperations.cs', 'Services/InventoryProgress.cs'],
    'settings': ['Services/AccountRules.cs', 'Services/ServerSettingsEditor.cs', 'Services/WorldEventSettings.cs'],
    'guild': ['Services/AccountEditorGuild.cs'],
    'import': ['Services/InventoryArchive.cs', 'Services/AccountEditorOperations.cs'],
    'common': ['Services/EditorPermissions.cs', 'Data/ItemCatalog.cs'],
    'admin': ['Services/Announcements.cs'],
}
partial = {
    'common.locale': ['8 种原版界面字典、原生页面标签及英文回退已接入;部分动态提示/服务器表单文字仍待逐项翻译与目测。15 种物品名称语言独立保留。'],
    'common.sync': ['库存/氏族编辑和服务器设置可检测外部修改、保留未保存输入、自动重连;游戏内库存/世界状态推送尚未实现。'],
    'inventory.browse': ['统一分类导航、已有/添加同页切换、分页、稀有度/瑕疵/异常/历史版本提示已接入;仍待所有物品的上游分支对照与游戏内实测。'],
    'runtime.connection': ['已实现真实本机 API、进程发现、连接重连、版本与目标服务器状态;运行中更换服务器、退出游戏账号尚未实现。'],
    'runtime.options': ['已实现品牌覆盖层和本地请求日志开关;原版伤害数字、任务倒计时、敏感词、暂停、幻影装置、FOV 等引擎选项尚未实现。'],
    'runtime.persistence': ['两个现有开关支持显式原子保存、备份、重启读取和保留未知字段;其余 Client Config 字段及热键/标签/元数据重载尚未实现。'],
    'runtime.logs': ['有界兼容组件日志、增量游标、清空缓冲和原生虚拟列表已实现;脚本日志、控制台开关及原版广播协议尚未实现。'],
    'runtime.metadata': ['提供当前进程工作集与托管内存诊断;引擎元数据读写、记录和有效 JSON 尚未实现。'],
}
missing = {'runtime.camera', 'runtime.teleport', 'runtime.scripts', 'runtime.updates', 'runtime.content'}
for feature in audit['features']:
    key = feature['id']
    feature['implementation'] = 'not-implemented' if key in missing else 'partial' if key in partial else 'implemented-awaiting-parity-validation'
    feature['verification'] = 'pending' if key in missing else 'automated-partial; game-pending'
    feature['remaining'] = partial.get(key, ['需要游戏引擎绑定、格式兼容与 D:\\Warframe 副本实测。'] if key in missing else ['尚未完成全部上游分支对照与游戏内实测。'])
    feature['implementationEvidence'] = ([
        'Client/XFEWarframe.Client/Runtime/RuntimeControlServer.cs',
        'Client/XFEWarframe.Player/ViewModels/RuntimePageViewModel.cs',
        'Client/Tests/XFEWarframe.Client.Tests/RuntimeControlTests.cs',
    ] if key.startswith('runtime.') and key not in missing else [] if key in missing else [
        'Server/XFEWarframe.Core/' + file for file in groups.get(key.split('.')[0], [])
    ])
    if key == 'settings.server':
        feature['description'] = feature['description'].replace('与运行时禁令', '')
    if key == 'quest.edit':
        feature['description'] = feature['description'].replace('重玩;', '重玩计数显示;')
        feature['implementationEvidence'].append('Server/Tests/XFEWarframe.Tests/InventoryPresentationTests.cs')
        feature['remaining'].append('原版页面显示重玩计数,未提供独立重玩按钮;重玩次数与阶段显示已测试,仍待游戏对照。')
    if key == 'common.locale':
        feature['implementationEvidence'] += ['Client/SharedUI/UiText.cs', 'Client/SharedUI/Localization/translations.json', 'Client/Tests/XFEWarframe.Client.Tests/UiLanguageTests.cs']
    if key == 'inventory.browse':
        feature['implementationEvidence'] += ['Client/SharedUI/InventoryNavigation.cs', 'Client/SharedUI/InventoryCatalogViewModel.cs', 'Server/Tests/XFEWarframe.Tests/InventoryPresentationTests.cs']

audit['progress'] = {
    'date': '2026-09-27', 'complete': False,
    'claim': '源码实现、自动验证和游戏验收分别记录,不以接口成功或编译通过替代功能等价。',
    'report': 'docs/OPENWF-IMPLEMENTATION-STATUS.md',
    'runtimeEvidence': '公开运行时源码和完整嵌入 UI/协议仍缺失;未加载原生 OpenWF DLL。',
}
for feature in audit['features']:
    for source in feature['implementationEvidence']:
        assert (ROOT / source).is_file(), source
path.write_text(json.dumps(audit, ensure_ascii=False, indent=2) + '\n', encoding='utf-8')