v0.2.0: relations preview, item shop, abilities, overlay recommend, GSI enhancements
- Add relations/item/abilities preview (serve_relations.py + web/relations/) - Add fetch scripts: hero_items, item_shop, items_meta, hero_abilities, ability_videos, patches, stratz, matchups, portraits - Add overlay.py (role tags + Top-3 cyan marks), recommend.py - Add http_utils.py, loc_format.py, hero_tags.py, item_fears.py - GSI: full payload JSONL dump, foreground window detection - Drop real template library; CDN-only matching - Update docs: CHANGELOG 0.2.0, DESIGN config table, AGENTS module table - .gitignore: exclude large regenerable assets (icons/portraits/videos)
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": "2.14",
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "bi8Au",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"name": "Frame",
|
||||
"clip": true,
|
||||
"width": 800,
|
||||
"height": 600,
|
||||
"fill": "#FFFFFF",
|
||||
"layout": "none"
|
||||
}
|
||||
],
|
||||
"fileToken": "9ee8cb48-01d0-49e3-8fab-391005f1e905"
|
||||
}
|
||||
@@ -0,0 +1,598 @@
|
||||
{
|
||||
"version": "2.14",
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "bi8Au",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"name": "Recommend Overlay Mock",
|
||||
"width": 1440,
|
||||
"fill": "$bg",
|
||||
"layout": "vertical",
|
||||
"gap": 28,
|
||||
"padding": [
|
||||
40,
|
||||
48
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "sExuu",
|
||||
"name": "Header",
|
||||
"width": "fill_container",
|
||||
"layout": "vertical",
|
||||
"gap": 8,
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "XG5C0",
|
||||
"name": "Title",
|
||||
"fill": "$text",
|
||||
"content": "Climperor 选将推荐叠层 · Top 3",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 28,
|
||||
"fontWeight": "700"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "bbWgo",
|
||||
"name": "Subtitle",
|
||||
"fill": "$muted",
|
||||
"content": "左上角青色方标 + 名次 1/2/3;本局只推荐 3 个英雄,不做避用标",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 15,
|
||||
"fontWeight": "normal"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "FmRJX",
|
||||
"name": "Legend",
|
||||
"width": "fill_container",
|
||||
"fill": "$panel",
|
||||
"cornerRadius": 12,
|
||||
"gap": 24,
|
||||
"padding": [
|
||||
16,
|
||||
20
|
||||
],
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "BU5qu",
|
||||
"gap": 10,
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "f6dWX",
|
||||
"width": 26,
|
||||
"height": 26,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 6,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "b2q6TZ",
|
||||
"fill": "#0B1220",
|
||||
"content": "1",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "a97jY",
|
||||
"fill": "$text",
|
||||
"content": "Climperor Top 3:左上青方标 + 名次 1 / 2 / 3",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "normal"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "IZA48",
|
||||
"gap": 8,
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "QBCeV",
|
||||
"width": 26,
|
||||
"height": 26,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 6,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "jLbkL",
|
||||
"fill": "#0B1220",
|
||||
"content": "2",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "qSBVg",
|
||||
"width": 26,
|
||||
"height": 26,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 6,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "QhcbJ",
|
||||
"fill": "#0B1220",
|
||||
"content": "3",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "Q1OX0h",
|
||||
"fill": "$muted",
|
||||
"content": "仅此三种标记",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "normal"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "X9AZ3",
|
||||
"name": "Grid Panel",
|
||||
"width": "fill_container",
|
||||
"fill": "$panel",
|
||||
"cornerRadius": 16,
|
||||
"layout": "vertical",
|
||||
"gap": 16,
|
||||
"padding": 24,
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "GrQG6",
|
||||
"fill": "$text",
|
||||
"content": "英雄选择网格(示意 · 优势路候选)",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 16,
|
||||
"fontWeight": "600"
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "QZD02",
|
||||
"name": "Hero Row",
|
||||
"width": "fill_container",
|
||||
"gap": 16,
|
||||
"children": [
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "rbYlg",
|
||||
"name": "Card 幻影刺客",
|
||||
"width": 160,
|
||||
"height": 220,
|
||||
"fill": "$card",
|
||||
"cornerRadius": 10,
|
||||
"stroke": "$border",
|
||||
"strokeWidth": 1,
|
||||
"layout": "none",
|
||||
"children": [
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "xgqyq",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"name": "Art",
|
||||
"fill": "#3D4F6F",
|
||||
"width": 160,
|
||||
"height": 150
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "qaeDN",
|
||||
"x": 0,
|
||||
"y": 110,
|
||||
"name": "Fade",
|
||||
"fill": {
|
||||
"type": "gradient",
|
||||
"gradientType": "linear",
|
||||
"enabled": true,
|
||||
"rotation": 180,
|
||||
"size": {
|
||||
"height": 1
|
||||
},
|
||||
"colors": [
|
||||
{
|
||||
"color": "#00000000",
|
||||
"position": 0
|
||||
},
|
||||
{
|
||||
"color": "#0B1220CC",
|
||||
"position": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"width": 160,
|
||||
"height": 40
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "VV5Ui",
|
||||
"x": 10,
|
||||
"y": 158,
|
||||
"name": "HeroName",
|
||||
"fill": "$text",
|
||||
"content": "幻影刺客",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "600"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "iqSKY",
|
||||
"x": 10,
|
||||
"y": 182,
|
||||
"name": "Note",
|
||||
"fill": "$muted",
|
||||
"content": "第 1 推荐",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 11,
|
||||
"fontWeight": "normal"
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "oednb",
|
||||
"layoutPosition": "absolute",
|
||||
"x": 8,
|
||||
"y": 8,
|
||||
"name": "ClimperorMark",
|
||||
"width": 28,
|
||||
"height": 28,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 7,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "kgwBF",
|
||||
"fill": "#0B1220",
|
||||
"content": "1",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "DH12d",
|
||||
"name": "Card 敌法师",
|
||||
"width": 160,
|
||||
"height": 220,
|
||||
"fill": "$card",
|
||||
"cornerRadius": 10,
|
||||
"stroke": "$border",
|
||||
"strokeWidth": 1,
|
||||
"layout": "none",
|
||||
"children": [
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "i5t4a8",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"name": "Art",
|
||||
"fill": "#354866",
|
||||
"width": 160,
|
||||
"height": 150
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "MCGHt",
|
||||
"x": 0,
|
||||
"y": 110,
|
||||
"name": "Fade",
|
||||
"fill": {
|
||||
"type": "gradient",
|
||||
"gradientType": "linear",
|
||||
"enabled": true,
|
||||
"rotation": 180,
|
||||
"size": {
|
||||
"height": 1
|
||||
},
|
||||
"colors": [
|
||||
{
|
||||
"color": "#00000000",
|
||||
"position": 0
|
||||
},
|
||||
{
|
||||
"color": "#0B1220CC",
|
||||
"position": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"width": 160,
|
||||
"height": 40
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "vQU4Q",
|
||||
"x": 10,
|
||||
"y": 158,
|
||||
"name": "HeroName",
|
||||
"fill": "$text",
|
||||
"content": "敌法师",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "600"
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "eyCpo",
|
||||
"layoutPosition": "absolute",
|
||||
"x": 8,
|
||||
"y": 8,
|
||||
"name": "ClimperorMark",
|
||||
"width": 28,
|
||||
"height": 28,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 7,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "MkueZ",
|
||||
"fill": "#0B1220",
|
||||
"content": "2",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "Z8HgB",
|
||||
"x": 10,
|
||||
"y": 182,
|
||||
"name": "Note",
|
||||
"fill": "$muted",
|
||||
"content": "第 2 推荐",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 11,
|
||||
"fontWeight": "normal"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "Ens5N",
|
||||
"name": "Card 冥魂大帝",
|
||||
"width": 160,
|
||||
"height": 220,
|
||||
"fill": "$card",
|
||||
"cornerRadius": 10,
|
||||
"stroke": "$border",
|
||||
"strokeWidth": 1,
|
||||
"layout": "none",
|
||||
"children": [
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "s76D2",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"name": "Art",
|
||||
"fill": "#2F415C",
|
||||
"width": 160,
|
||||
"height": 150
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "I2m5Ki",
|
||||
"x": 0,
|
||||
"y": 110,
|
||||
"name": "Fade",
|
||||
"fill": {
|
||||
"type": "gradient",
|
||||
"gradientType": "linear",
|
||||
"enabled": true,
|
||||
"rotation": 180,
|
||||
"size": {
|
||||
"height": 1
|
||||
},
|
||||
"colors": [
|
||||
{
|
||||
"color": "#00000000",
|
||||
"position": 0
|
||||
},
|
||||
{
|
||||
"color": "#0B1220CC",
|
||||
"position": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"width": 160,
|
||||
"height": 40
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "UmROf",
|
||||
"x": 10,
|
||||
"y": 158,
|
||||
"name": "HeroName",
|
||||
"fill": "$text",
|
||||
"content": "冥魂大帝",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "600"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "sKaLN",
|
||||
"x": 10,
|
||||
"y": 182,
|
||||
"name": "Note",
|
||||
"fill": "$muted",
|
||||
"content": "第 3 推荐",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 11,
|
||||
"fontWeight": "normal"
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "LrTjT",
|
||||
"layoutPosition": "absolute",
|
||||
"x": 8,
|
||||
"y": 8,
|
||||
"name": "ClimperorMark",
|
||||
"width": 28,
|
||||
"height": 28,
|
||||
"fill": "$climperorCyan",
|
||||
"cornerRadius": 7,
|
||||
"justifyContent": "center",
|
||||
"alignItems": "center",
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "gJtg2",
|
||||
"fill": "#0B1220",
|
||||
"content": "3",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 14,
|
||||
"fontWeight": "700"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "frame",
|
||||
"id": "t5uLoK",
|
||||
"name": "Footer Notes",
|
||||
"width": "fill_container",
|
||||
"fill": "$panel",
|
||||
"cornerRadius": 10,
|
||||
"layout": "vertical",
|
||||
"gap": 6,
|
||||
"padding": [
|
||||
12,
|
||||
16
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "j40a2",
|
||||
"fill": "$climperorCyan",
|
||||
"content": "设计要点(已确认)",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "700"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "lDu4I",
|
||||
"fill": "$muted",
|
||||
"content": "1. 只推荐 3 个英雄:左上角青方标显示名次 1 / 2 / 3。",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "normal"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "z1sDyw",
|
||||
"fill": "$muted",
|
||||
"content": "2. 颜色固定青色 #2EC4B6;不做琥珀避用标,也不复刻 Plus 三角。",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "normal"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "K2l2Bt",
|
||||
"fill": "$muted",
|
||||
"content": "3. 按本局分路过滤候选,再按对位分取 Top 3;已选/禁用不画标。",
|
||||
"fontFamily": "Inter",
|
||||
"fontSize": 13,
|
||||
"fontWeight": "normal"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"variables": {
|
||||
"bg": {
|
||||
"type": "color",
|
||||
"value": "#0B1220"
|
||||
},
|
||||
"panel": {
|
||||
"type": "color",
|
||||
"value": "#151D2E"
|
||||
},
|
||||
"card": {
|
||||
"type": "color",
|
||||
"value": "#1E2A40"
|
||||
},
|
||||
"cardMuted": {
|
||||
"type": "color",
|
||||
"value": "#121826"
|
||||
},
|
||||
"text": {
|
||||
"type": "color",
|
||||
"value": "#E8EEF7"
|
||||
},
|
||||
"muted": {
|
||||
"type": "color",
|
||||
"value": "#8B9BB4"
|
||||
},
|
||||
"plusGreen": {
|
||||
"type": "color",
|
||||
"value": "#22C55E"
|
||||
},
|
||||
"plusRed": {
|
||||
"type": "color",
|
||||
"value": "#EF4444"
|
||||
},
|
||||
"climperorCyan": {
|
||||
"type": "color",
|
||||
"value": "#2EC4B6"
|
||||
},
|
||||
"climperorAmber": {
|
||||
"type": "color",
|
||||
"value": "#F4A261"
|
||||
},
|
||||
"border": {
|
||||
"type": "color",
|
||||
"value": "#2A3650"
|
||||
}
|
||||
},
|
||||
"fileToken": "7e7a24d3-c148-402b-a09b-4592822f3745"
|
||||
}
|
||||
Reference in New Issue
Block a user