refresh: 2026-05-21 — 37 files

This commit is contained in:
Ruslan Vasilyev 2026-05-21 02:35:44 +03:00
parent c1d7815598
commit c71e4db64b

View File

@ -6,95 +6,97 @@
<style> <style>
* { box-sizing: border-box; } * { box-sizing: border-box; }
body { font-family: "Montserrat", -apple-system, "Segoe UI", Roboto, sans-serif; body { font-family: "Montserrat", -apple-system, "Segoe UI", Roboto, sans-serif;
max-width: 1400px; margin: 0 auto; padding: 24px; color: #1B1B1B; background: #FFFFFF; } max-width: 1400px; margin: 0 auto; padding: 24px; color: #1E1B4B; background: #FFFFFF; }
h1 { color: #3C3C3B; border-bottom: 3px solid #3C3C3B; padding-bottom: 12px; h1 { background: linear-gradient(135deg, #1E1B4B, #4338CA);
font-weight: 600; letter-spacing: -0.02em; margin-top: 0; } -webkit-background-clip: text; -webkit-text-fill-color: transparent;
background-clip: text; border-bottom: 3px solid #4338CA;
padding-bottom: 12px; font-weight: 700; letter-spacing: -0.02em; margin-top: 0; }
.brand-h1 { display: flex; align-items: center; gap: 4px; } .brand-h1 { display: flex; align-items: center; gap: 4px; }
.brand-h1 img { display: inline-block; } .brand-h1 img { display: inline-block; }
.brand-h1-text { font-size: 0.82em; color: #1B1B1B; letter-spacing: -0.01em; } .brand-h1-text { font-size: 0.82em; color: #1E1B4B; letter-spacing: -0.01em; }
h2 { color: #1B1B1B; font-weight: 600; letter-spacing: -0.01em; h2 { color: #1E1B4B; font-weight: 600; letter-spacing: -0.01em;
border-left: 4px solid #3C3C3B; padding-left: 12px; margin-top: 36px; } border-left: 4px solid #4338CA; padding-left: 12px; margin-top: 36px; }
h3 { color: #1B1B1B; font-size: 16px; text-transform: uppercase; h3 { color: #1E1B4B; font-size: 16px; text-transform: uppercase;
letter-spacing: 0.05em; margin-top: 24px; font-weight: 600; } letter-spacing: 0.05em; margin-top: 24px; font-weight: 600; }
section { margin-bottom: 32px; } section { margin-bottom: 32px; }
.counter { color: #9E9E9E; font-size: 14px; font-weight: 400; text-transform: none; .counter { color: #6B7280; font-size: 14px; font-weight: 400; text-transform: none;
letter-spacing: 0; margin-left: 12px; } letter-spacing: 0; margin-left: 12px; }
.kpi-row { display: flex; gap: 16px; flex-wrap: wrap; margin: 20px 0; } .kpi-row { display: flex; gap: 16px; flex-wrap: wrap; margin: 20px 0; }
.kpi { flex: 1; min-width: 200px; background: #F7F4EC; .kpi { flex: 1; min-width: 200px; background: #F5F3FF;
padding: 18px 22px; border-radius: 4px; border-left: 3px solid #3C3C3B; } padding: 18px 22px; border-radius: 4px; border-left: 3px solid #4338CA; }
.kpi-label { font-size: 11px; color: #9E9E9E; text-transform: uppercase; .kpi-label { font-size: 11px; color: #6B7280; text-transform: uppercase;
letter-spacing: 0.08em; margin-bottom: 6px; } letter-spacing: 0.08em; margin-bottom: 6px; }
.kpi-val { font-size: 28px; font-weight: 600; color: #1B1B1B; line-height: 1; } .kpi-val { font-size: 28px; font-weight: 600; color: #1E1B4B; line-height: 1; }
.kpi-sub { font-size: 12px; color: #9E9E9E; margin-top: 6px; } .kpi-sub { font-size: 12px; color: #6B7280; margin-top: 6px; }
table.grid { width: 100%; border-collapse: collapse; background: #FFFFFF; table.grid { width: 100%; border-collapse: collapse; background: #FFFFFF;
margin-top: 16px; border: 1px solid #CCCCCC; } margin-top: 16px; border: 1px solid #E0E7FF; }
table.grid th { background: #1B1B1B; color: #FFFFFF; text-align: left; table.grid th { background: #1E1B4B; color: #FFFFFF; text-align: left;
padding: 10px 14px; font-size: 11px; text-transform: uppercase; padding: 10px 14px; font-size: 11px; text-transform: uppercase;
letter-spacing: 0.08em; font-weight: 600; } letter-spacing: 0.08em; font-weight: 600; }
table.grid td { padding: 10px 14px; border-top: 1px solid #CCCCCC; font-size: 14px; } table.grid td { padding: 10px 14px; border-top: 1px solid #E0E7FF; font-size: 14px; }
table.grid tr.elny { background: #FDFAE1; } table.grid tr.elny { background: #EEF2FF; }
table.grid tr.elny td b { color: #3C3C3B; } table.grid tr.elny td b { color: #4338CA; }
table.grid .num { text-align: right; font-variant-numeric: tabular-nums; } table.grid .num { text-align: right; font-variant-numeric: tabular-nums; }
.muted { color: #9E9E9E; } .muted { color: #6B7280; }
code { background: #F7F4EC; padding: 2px 6px; border-radius: 3px; code { background: #F5F3FF; padding: 2px 6px; border-radius: 3px;
font-family: "Consolas", monospace; font-size: 12px; color: #1B1B1B; } font-family: "Consolas", monospace; font-size: 12px; color: #1E1B4B; }
.file-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); .file-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 10px; margin-top: 12px; } gap: 10px; margin-top: 12px; }
.file { background: #FFFFFF; border: 1px solid #CCCCCC; .file { background: #FFFFFF; border: 1px solid #E0E7FF;
padding: 12px 14px; border-radius: 4px; display: flex; align-items: center; padding: 12px 14px; border-radius: 4px; display: flex; align-items: center;
gap: 10px; font-size: 13px; } gap: 10px; font-size: 13px; }
.file.fresh { border-left: 3px solid #5C8A5C; } .file.fresh { border-left: 3px solid #10B981; }
.file.ok { border-left: 3px solid #A8895E; } .file.ok { border-left: 3px solid #F59E0B; }
.file.stale { border-left: 3px solid #A04545; background: #F7F4EC; } .file.stale { border-left: 3px solid #EF4444; background: #F5F3FF; }
.file.missing { border-left: 3px solid #A04545; background: #F7F4EC; color: #9E9E9E; } .file.missing { border-left: 3px solid #EF4444; background: #F5F3FF; color: #6B7280; }
.file .status { font-size: 18px; line-height: 1; } .file .status { font-size: 18px; line-height: 1; }
.file.fresh .status { color: #5C8A5C; } .file.fresh .status { color: #10B981; }
.file.ok .status { color: #A8895E; } .file.ok .status { color: #F59E0B; }
.file.stale .status, .file.missing .status { color: #A04545; } .file.stale .status, .file.missing .status { color: #EF4444; }
.file .file-top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; } .file .file-top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.file .name { flex: 1; font-weight: 500; } .file .name { flex: 1; font-weight: 500; }
.file .meta { color: #9E9E9E; font-size: 11px; } .file .meta { color: #6B7280; font-size: 11px; }
.btn-row { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; } .btn-row { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.btn { display: inline-block; padding: 4px 10px; font-size: 11px; .btn { display: inline-block; padding: 4px 10px; font-size: 11px;
text-decoration: none; border-radius: 3px; border: 1px solid #CCCCCC; text-decoration: none; border-radius: 3px; border: 1px solid #E0E7FF;
cursor: pointer; background: #FFFFFF; color: #1B1B1B; font-family: inherit; cursor: pointer; background: #FFFFFF; color: #1E1B4B; font-family: inherit;
transition: background 0.1s; } transition: background 0.1s; }
.btn:hover { background: #F7F4EC; } .btn:hover { background: #F5F3FF; }
.btn-share { background: #3C3C3B; color: #FFFFFF; border-color: #3C3C3B; } .btn-share { background: #4338CA; color: #FFFFFF; border-color: #4338CA; }
.btn-share:hover { background: #1B1B1B; color: #FFFFFF; } .btn-share:hover { background: #1E1B4B; color: #FFFFFF; }
.btn-mail { background: #FDFAE1; } .btn-mail { background: #EEF2FF; }
.btn-disabled { color: #9E9E9E; background: #FFFFFF; cursor: not-allowed; .btn-disabled { color: #6B7280; background: #FFFFFF; cursor: not-allowed;
border-style: dashed; } border-style: dashed; }
.share-info { background: #FDFAE1; border-left: 3px solid #A8895E; .share-info { background: #EEF2FF; border-left: 3px solid #F59E0B;
padding: 10px 14px; margin: 12px 0; font-size: 12px; color: #1B1B1B; padding: 10px 14px; margin: 12px 0; font-size: 12px; color: #1E1B4B;
border-radius: 3px; line-height: 1.5; } border-radius: 3px; line-height: 1.5; }
.milestones { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); .milestones { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
gap: 8px; margin-top: 12px; } gap: 8px; margin-top: 12px; }
.ms { padding: 10px 14px; border-radius: 4px; display: flex; align-items: center; .ms { padding: 10px 14px; border-radius: 4px; display: flex; align-items: center;
gap: 10px; font-size: 14px; border: 1px solid #CCCCCC; } gap: 10px; font-size: 14px; border: 1px solid #E0E7FF; }
.ms.done { background: #FDFAE1; border-left: 3px solid #5C8A5C; } .ms.done { background: #EEF2FF; border-left: 3px solid #10B981; }
.ms.todo { background: #FFFFFF; border-left: 3px solid #CCCCCC; color: #9E9E9E; } .ms.todo { background: #FFFFFF; border-left: 3px solid #E0E7FF; color: #6B7280; }
.ms .icon { font-weight: 700; font-size: 16px; } .ms .icon { font-weight: 700; font-size: 16px; }
.ms.done .icon { color: #5C8A5C; } .ms.done .icon { color: #10B981; }
.ms.todo .icon { color: #9E9E9E; } .ms.todo .icon { color: #6B7280; }
.issue { background: #F7F4EC; padding: 14px 18px; margin: 10px 0; .issue { background: #F5F3FF; padding: 14px 18px; margin: 10px 0;
border-radius: 4px; border-left: 4px solid #CCCCCC; } border-radius: 4px; border-left: 4px solid #E0E7FF; }
.issue.err { border-left-color: #A04545; } .issue.err { border-left-color: #EF4444; }
.issue.warn { border-left-color: #A8895E; } .issue.warn { border-left-color: #F59E0B; }
.issue.muted { border-left-color: #9E9E9E; } .issue.muted { border-left-color: #6B7280; }
.issue-title { font-weight: 600; margin-bottom: 4px; color: #1B1B1B; } .issue-title { font-weight: 600; margin-bottom: 4px; color: #1E1B4B; }
.issue-body { font-size: 13px; color: #1B1B1B; line-height: 1.6; } .issue-body { font-size: 13px; color: #1E1B4B; line-height: 1.6; }
.log-list { list-style: none; padding: 0; margin: 8px 0 0 0; } .log-list { list-style: none; padding: 0; margin: 8px 0 0 0; }
.log-list li { padding: 8px 12px; background: #F7F4EC; margin-bottom: 4px; .log-list li { padding: 8px 12px; background: #F5F3FF; margin-bottom: 4px;
border-radius: 3px; font-size: 13px; } border-radius: 3px; font-size: 13px; }
.top-bar { display: flex; justify-content: space-between; align-items: center; .top-bar { display: flex; justify-content: space-between; align-items: center;
margin-bottom: 8px; font-size: 12px; color: #9E9E9E; } margin-bottom: 8px; font-size: 12px; color: #6B7280; }
.ok { color: #5C8A5C; } .ok { color: #10B981; }
@media (max-width: 720px) { .kpi { min-width: 100%; } .file-grid, .milestones { grid-template-columns: 1fr; } } @media (max-width: 720px) { .kpi { min-width: 100%; } .file-grid, .milestones { grid-template-columns: 1fr; } }
</style> </style>
</head><body> </head><body>
<div class="top-bar"> <div class="top-bar">
<span>Обновлено: 2026-05-21 01:52 RTZ 2 (зима)</span> <span>Обновлено: 2026-05-21 02:34 RTZ 2 (зима)</span>
<span>Авто-рефреш каждую минуту</span> <span>Авто-рефреш каждую минуту</span>
</div> </div>
<h1 class="brand-h1"><img src="data:image/png;base64,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" alt="ELNY" height="36" width="91" style="vertical-align:-8px;margin-right:12px"> <span class="brand-h1-text">· Статус проекта</span></h1> <h1 class="brand-h1"><img src="data:image/png;base64,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" alt="ELNY" height="36" width="91" style="vertical-align:-8px;margin-right:12px"> <span class="brand-h1-text">· Статус проекта</span></h1>
@ -102,18 +104,13 @@
<section><h2>Пайплайн парсинга</h2> <section><h2>Пайплайн парсинга</h2>
<div class="kpi-row"> <div class="kpi-row">
<div class="kpi"><div class="kpi-label">Последний снапшот</div><div class="kpi-val">2026-05-19</div><div class="kpi-sub">2 дн назад</div></div> <div class="kpi"><div class="kpi-label">Последний снапшот</div><div class="kpi-val">2026-05-21</div><div class="kpi-sub">сегодня</div></div>
<div class="kpi"><div class="kpi-label">Master.parquet</div><div class="kpi-val">12 554</div><div class="kpi-sub">строк · 2 снапшота</div></div> <div class="kpi"><div class="kpi-label">Master.parquet</div><div class="kpi-val">12 584</div><div class="kpi-sub">строк · 3 снапшота</div></div>
<div class="kpi"><div class="kpi-label">Снапшотов всего</div><div class="kpi-val">2</div><div class="kpi-sub">2026-05-11 → 2026-05-19</div></div> <div class="kpi"><div class="kpi-label">Снапшотов всего</div><div class="kpi-val">3</div><div class="kpi-sub">2026-05-11 → 2026-05-21</div></div>
<div class="kpi"><div class="kpi-label">Открытых вопросов</div><div class="kpi-val">2</div><div class="kpi-sub">см. ниже</div></div> <div class="kpi"><div class="kpi-label">Открытых вопросов</div><div class="kpi-val">2</div><div class="kpi-sub">см. ниже</div></div>
</div> </div>
<table class="grid"><thead><tr><th>Сайт</th><th>Файл</th><th>Размер</th><th>Обновлён</th><th>Строк</th></tr></thead><tbody> <table class="grid"><thead><tr><th>Сайт</th><th>Файл</th><th>Размер</th><th>Обновлён</th><th>Строк</th></tr></thead><tbody>
<tr><td><b>12storeez</b></td><td><code>data/2026-05-19/12storeez.parquet</code></td><td>9 KB</td><td class="muted">1 дн назад</td><td class="num">1</td></tr> <tr class="elny"><td><b>elny</b></td><td><code>data/2026-05-21/elny.parquet</code></td><td>27 KB</td><td class="muted">15 мин назад</td><td class="num">30</td></tr>
<tr><td><b>annapekun</b></td><td><code>data/2026-05-19/annapekun.parquet</code></td><td>100 KB</td><td class="muted">1 дн назад</td><td class="num">353</td></tr>
<tr><td><b>elis</b></td><td><code>data/2026-05-19/elis.parquet</code></td><td>707 KB</td><td class="muted">1 дн назад</td><td class="num">1035</td></tr>
<tr class="elny"><td><b>elny</b></td><td><code>data/2026-05-19/elny.parquet</code></td><td>333 KB</td><td class="muted">1 дн назад</td><td class="num">1375</td></tr>
<tr><td><b>emkashop</b></td><td><code>data/2026-05-19/emkashop.parquet</code></td><td>147 KB</td><td class="muted">1 дн назад</td><td class="num">1062</td></tr>
<tr><td><b>pompa</b></td><td><code>data/2026-05-19/pompa.parquet</code></td><td>168 KB</td><td class="muted">1 дн назад</td><td class="num">1438</td></tr>
</tbody></table> </tbody></table>
</section> </section>
<section><h2>Майлстоуны проекта <span class="counter">20 / 20 · 100%</span></h2> <section><h2>Майлстоуны проекта <span class="counter">20 / 20 · 100%</span></h2>
@ -189,7 +186,7 @@
</section> </section>
<section><h2>Открытые вопросы / известные ограничения</h2> <section><h2>Открытые вопросы / известные ограничения</h2>
<div class="issue warn"><div class="issue-title">12storeez — размеры не извлечены</div><div class="issue-body">Из 2041 карточек только 1 имеют размеры. Patched adapter с retry+refresh готов, но 12storeez сегодня нас троттлит. Запустить заново <code>python run.py snapshot --site 12storeez --delay 0.8</code>.</div></div> <div class="issue warn"><div class="issue-title">12storeez — размеры не извлечены</div><div class="issue-body">Из 2041 карточек только 1 имеют размеры. Patched adapter с retry+refresh готов, но 12storeez сегодня нас троттлит. Запустить заново <code>python run.py snapshot --site 12storeez --delay 0.8</code>.</div></div>
<div class="issue err"><div class="issue-title">ELNY — высокая доля OOS</div><div class="issue-body">1241 из 2750 (45%) товаров распроданы. Действие: аудит каждой OOS-карточки — архив / Sale-страница / допоставка.</div></div> <div class="issue err"><div class="issue-title">ELNY — высокая доля OOS</div><div class="issue-body">1245 из 2780 (45%) товаров распроданы. Действие: аудит каждой OOS-карточки — архив / Sale-страница / допоставка.</div></div>
</section> </section>
<section><h2>Месячный пайплайн</h2> <section><h2>Месячный пайплайн</h2>
<div class="kpi-row"> <div class="kpi-row">