Object type mix: INTF, TABL, STRU, MSAG, exception tasks (harness G2, mutants, generator notes), balanced generator, kind-deficit job order, dashboard mix card
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ import time
|
||||
import urllib.request
|
||||
|
||||
from .adt_client import load_env
|
||||
from . import mix
|
||||
from .ledger import _env_budget, spent
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
@@ -242,6 +243,29 @@ def agg_table(title, evs, rows, key, note=""):
|
||||
% (E(title), E(key.replace("_", " ")), trs, "<div class=note>%s</div>" % E(note) if note else ""))
|
||||
|
||||
|
||||
def mix_table(rows, evs):
|
||||
kt = mix.accepted_task_counts()
|
||||
kr = {}
|
||||
for r, e in zip(rows, evs):
|
||||
k = mix.kind_of_task_dir(r["task"])
|
||||
a = kr.setdefault(k, [0, 0])
|
||||
a[0] += 1
|
||||
a[1] += e["accepted"]
|
||||
tt, tr = max(sum(kt.values()), 1), max(sum(v[1] for v in kr.values()), 1)
|
||||
ss = sum(mix.TYPE_SHARE.values())
|
||||
trs = ""
|
||||
for k, v in mix.TYPE_SHARE.items():
|
||||
tgt = 100.0 * v / ss
|
||||
pt, pr = 100.0 * kt.get(k, 0) / tt, 100.0 * kr.get(k, [0, 0])[1] / tr
|
||||
cls = "g" if abs(pt - tgt) < 4 else ("w" if abs(pt - tgt) < 10 else "r")
|
||||
trs += ("<tr><td>%s</td><td class=n>%.0f%%</td><td class=n>%d (%.0f%%)</td><td style='width:25%%'>%s</td>"
|
||||
"<td class=n>%d/%d (%.0f%%)</td></tr>" % (k, tgt, kt.get(k, 0), pt, bar(pt, max(tgt * 2, 1), cls),
|
||||
kr.get(k, [0, 0])[1], kr.get(k, [0, 0])[0], pr))
|
||||
return ("<div class=card><h2>Object type mix vs target</h2><div class=b><table><tr><th>kind</th><th class=n>target</th>"
|
||||
"<th class=n>tasks</th><th>vs target</th><th class=n>trajectories acc/runs</th></tr>%s</table></div>"
|
||||
"<div class=note>CLAS/INTF 35, CDS 25, FUNC 15, PROG 10, DDIC 10, MSAG + exception 5 (percent of accepted tasks).</div></div>" % trs)
|
||||
|
||||
|
||||
def gen_table(logs, key, title):
|
||||
agg = {}
|
||||
for l in logs:
|
||||
@@ -351,7 +375,7 @@ def render(d):
|
||||
E("\n".join(d["procs"]))))
|
||||
logc = "<div class=card><h2>Pipeline log</h2><div class=b><div class='log mono'>%s</div></div></div>" % E("\n".join(d["log_tail"]))
|
||||
body = (banner + "<div class=tiles>" + tiles + "</div><div class=grid>" + budget + prog + stops + sysc
|
||||
+ agg_table("Trajectories by category", evs, rows, "category") + agg_table("Trajectories by object type", evs, rows, "object_type")
|
||||
+ mix_table(rows, evs) + agg_table("Trajectories by category", evs, rows, "category") + agg_table("Trajectories by object type", evs, rows, "object_type")
|
||||
+ gen_table(logs, "category", "Task generation by category") + gen_table(logs, "object_type", "Task generation by object type")
|
||||
+ tok + recent + logc + "</div>")
|
||||
stamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(d["now"]))
|
||||
|
||||
Reference in New Issue
Block a user