feat: Initial commit of Clutch-IQ project

This commit is contained in:
xunyulin230420
2026-02-05 23:26:03 +08:00
commit a355239861
66 changed files with 12922 additions and 0 deletions

10
tools/README.md Normal file
View File

@@ -0,0 +1,10 @@
# tools/
放置一次性脚本与调试工具,不参与主流程依赖。
## debug/
- debug_bomb.py解析 demo 的炸弹相关事件plant/defuse/explode
- debug_round_end.py用于排查回合结束事件与结果字段
- debug_fields.py用于快速查看事件/字段结构,辅助 ETL 与建表

26
tools/debug/debug_bomb.py Normal file
View File

@@ -0,0 +1,26 @@
from demoparser2 import DemoParser
import os
import pandas as pd
demo_path = os.path.join(os.getcwd(), "data", "demos", "furia-vs-falcons-m1-inferno.dem")
parser = DemoParser(demo_path)
print("Listing events related to bomb...")
# Check events
# parse_events returns a list of tuples or dicts? Or a DataFrame?
# The previous error said 'list' object has no attribute 'head', so it returns a list of tuples/dicts?
# Wait, usually it returns a DataFrame. Let's check type.
events = parser.parse_events(["bomb_planted", "bomb_defused", "bomb_exploded", "round_start", "round_end"])
print(f"Type of events: {type(events)}")
if isinstance(events, list):
print(events[:5])
# Try to convert to DF
try:
df = pd.DataFrame(events)
print(df.head())
print(df['event_name'].value_counts())
except:
pass
else:
print(events.head())

View File

@@ -0,0 +1,19 @@
from demoparser2 import DemoParser
import os
demo_path = os.path.join(os.getcwd(), "data", "demos", "furia-vs-falcons-m1-inferno.dem")
parser = DemoParser(demo_path)
potential_fields = ["account", "m_iAccount", "balance", "money", "cash", "score", "mvps"]
print(f"Checking fields in {demo_path}...")
for field in potential_fields:
try:
df = parser.parse_ticks([field], ticks=[1000]) # Check tick 1000
if not df.empty and field in df.columns:
print(f"[SUCCESS] Found field: {field}")
else:
print(f"[FAILED] Field {field} returned empty or missing column")
except Exception as e:
print(f"[ERROR] Field {field} failed: {e}")

View File

@@ -0,0 +1,13 @@
from demoparser2 import DemoParser
import pandas as pd
demo_path = "data/demos/furia-vs-falcons-m3-train.dem"
parser = DemoParser(demo_path)
# Check round_end events
events = parser.parse_events(["round_end"])
for name, df in events:
if name == "round_end":
print("Columns:", df.columns)
print(df.head())