Commit f4b55d54 authored by 郭阔's avatar 郭阔

feat(panel): schedule board — 06:00 editorial deadline line

Blue dashed deadline marker at 06:00 on every timeline (交付线 label) +
intro copy; multi-time sources show 每日N次 badge. Editorial schedule
applied: 02:30 nikkei-world / 03:00 reuters-business / 03:30 bloomberg /
04:00 ft / 04:30 wsj / 05:00+17:00 nikkei-markets (12h interval), all
finishing ~35min before the 06:00 deadline.
parent 0c6460f5
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
.tl .dot.next { background:#e8c34a; box-shadow:0 0 7px #e8c34a; } .tl .dot.next { background:#e8c34a; box-shadow:0 0 7px #e8c34a; }
.tl .dot.dis { background:#5a5f6e; } .tl .dot.dis { background:#5a5f6e; }
.tl .now { position:absolute; top:-2px; bottom:-2px; width:2px; background:#e05555; z-index:2; } .tl .now { position:absolute; top:-2px; bottom:-2px; width:2px; background:#e05555; z-index:2; }
.tl .deadline { position:absolute; top:-3px; bottom:-3px; width:0; border-left:2px dashed #6b9ef1; z-index:2; }
.tl .deadline .dlbl { position:absolute; top:-14px; left:3px; font-size:10px; color:#6b9ef1; white-space:nowrap; }
.tl .lbl { position:absolute; top:-12px; font-size:10px; color:#e8c34a; transform:translateX(-50%); white-space:nowrap; } .tl .lbl { position:absolute; top:-12px; font-size:10px; color:#e8c34a; transform:translateX(-50%); white-space:nowrap; }
.hourbar { display:flex; justify-content:space-between; color:#666; font-size:10px; margin-top:2px; } .hourbar { display:flex; justify-content:space-between; color:#666; font-size:10px; margin-top:2px; }
.time-input { width:110px; background:#1a1d27; border:1px solid #2a2d37; border-radius:4px; color:#d4d4d4; padding:3px 6px; font-family:monospace; } .time-input { width:110px; background:#1a1d27; border:1px solid #2a2d37; border-radius:4px; color:#d4d4d4; padding:3px 6px; font-family:monospace; }
...@@ -20,10 +22,11 @@ ...@@ -20,10 +22,11 @@
<h1>调度中心</h1> <h1>调度中心</h1>
<p style="color:#666;font-size:13px"> <p style="color:#666;font-size:13px">
<strong style="color:#6b9ef1">┄ 06:00 编辑部交付线</strong>:所有晨间采集在其之前完成(蓝色虚线);
每源一行:24 小时时间轴上标出全部触发时刻(<span style="color:#3f7d52">●</span>), 每源一行:24 小时时间轴上标出全部触发时刻(<span style="color:#3f7d52">●</span>),
<span style="color:#e8c34a">黄色高亮</span>为下次触发,红色竖线为当前时刻,按下次触发排序。 <span style="color:#e8c34a">黄色高亮</span>为下次触发,红色竖线为当前时刻,按下次触发排序。
每日汇总 digest:{{ digest_times|join(', ') if digest_times else '未排' }}{% if digest_next %},下次 {{ digest_next.strftime('%m-%d %H:%M') }}{% endif %}。 每日汇总 digest:{{ digest_times|join(', ') if digest_times else '未排' }}{% if digest_next %},下次 {{ digest_next.strftime('%m-%d %H:%M') }}{% endif %}。
时间格式 HH:MM,多个用逗号分隔(如 09:00,14:30);删除仅移除调度,技能源与历史保留。 时间格式 HH:MM,多个用逗号分隔(如 05:00,17:00 = 每日两次);删除仅移除调度,技能源与历史保留。
</p> </p>
{% with messages = get_flashed_messages() %} {% with messages = get_flashed_messages() %}
...@@ -49,6 +52,7 @@ ...@@ -49,6 +52,7 @@
{% if r.times %} {% if r.times %}
<div class="tl"> <div class="tl">
<div class="h" style="left:25%"></div><div class="h" style="left:50%"></div><div class="h" style="left:75%"></div> <div class="h" style="left:25%"></div><div class="h" style="left:50%"></div><div class="h" style="left:75%"></div>
<div class="deadline" style="left:25%"><span class="dlbl">06:00 交付线</span></div>
{% for t in r.times %} {% for t in r.times %}
{% set h = t.split(':')[0]|int %}{% set m = t.split(':')[1]|int %} {% set h = t.split(':')[0]|int %}{% set m = t.split(':')[1]|int %}
{% set pct = ((h*60+m)/1440*100)|round(2) %} {% set pct = ((h*60+m)/1440*100)|round(2) %}
...@@ -62,7 +66,7 @@ ...@@ -62,7 +66,7 @@
<span style="color:#666">— 未排程 —</span> <span style="color:#666">— 未排程 —</span>
{% endif %} {% endif %}
</td> </td>
<td><code>{{ r.times|join(', ') if r.times else '—' }}</code></td> <td><code>{{ r.times|join(', ') if r.times else '—' }}</code>{% if r.times|length > 1 %} <span class="badge ok">每日{{ r.times|length }}次</span>{% endif %}</td>
<td class="next-cell"> <td class="next-cell">
{% if r.next_in_min is not none %} {% if r.next_in_min is not none %}
{{ r.next }}<br><span class="in">{{ r.next_in_min }} 分钟后</span> {{ r.next }}<br><span class="in">{{ r.next_in_min }} 分钟后</span>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment