feat(t224): add incremental freight sync

This commit is contained in:
QiuSW
2026-07-29 00:26:05 +08:00
parent 433db45100
commit c69879650e
35 changed files with 2085 additions and 156 deletions
@@ -11,7 +11,7 @@
<div class="title-row">
<div>
<h1>导入 ERP 货运</h1>
<p class="subtitle">使用 ERP 页面“全部单号”中的完整单号</p>
<p class="subtitle">按完整单号导入,或按创建日期发现新增货运</p>
</div>
<a class="button" href="/freight">返回列表</a>
</div>
@@ -20,6 +20,10 @@
<section class="detail-section" aria-labelledby="sync-result-title">
<h2 id="sync-result-title">同步状态</h2>
<dl class="detail-grid">
<div><dt>方式</dt><dd>{{if eq .Sync.Mode "CREATED_RANGE"}}创建日期{{else}}完整单号{{end}}</dd></div>
{{if eq .Sync.Mode "CREATED_RANGE"}}
<div><dt>查询范围</dt><dd>{{.Sync.CreatedFrom}} 至 {{.Sync.CreatedTo}}</dd></div>
{{end}}
<div><dt>状态</dt><dd>{{.Sync.Status}}</dd></div>
<div><dt>货运单</dt><dd>{{.Sync.OrderCount}}</dd></div>
<div><dt>商品明细</dt><dd>{{.Sync.ItemCount}}</dd></div>
@@ -30,15 +34,49 @@
{{end}}
</section>
{{end}}
{{if .Watermark}}
<section class="detail-section" aria-labelledby="watermark-title">
<h2 id="watermark-title">增量同步水位</h2>
<dl class="detail-grid">
<div><dt>已成功同步至</dt><dd><time datetime="{{machineTime .Watermark.LastSuccessfulTo}}">{{displayTime .Watermark.LastSuccessfulTo}}</time></dd></div>
<div><dt>最近成功任务</dt><dd>{{.Watermark.LastSuccessfulRunID}}</dd></div>
</dl>
</section>
{{else}}
<div class="notice" role="status">尚无日期同步水位,“同步至现在”将从今天开始。</div>
{{end}}
<form class="form-panel" method="post" action="/freight/import" data-loading-form>
<input type="hidden" name="csrf_token" value="{{.Page.CSRFToken}}">
<input type="hidden" name="idempotency_key" value="{{.IdempotencyKey}}">
<input type="hidden" name="mode" value="ORDER_NUMBER">
<h2>按完整单号</h2>
<div class="field">
<label for="order-number">完整单号</label>
<input id="order-number" name="order_number" value="{{.OrderNumber}}"
maxlength="128" autocomplete="off" required>
</div>
<button class="button primary" type="submit" data-loading-label="正在创建…">开始同步</button>
<button class="button primary" type="submit" data-loading-label="正在创建…">同步此单号</button>
</form>
<form class="form-panel" method="post" action="/freight/import" data-loading-form>
<input type="hidden" name="csrf_token" value="{{.Page.CSRFToken}}">
<input type="hidden" name="idempotency_key" value="{{.IdempotencyKey}}">
<input type="hidden" name="mode" value="CREATED_RANGE">
<h2>按创建日期</h2>
<div class="date-range-fields">
<div class="field">
<label for="created-from">开始日期</label>
<input id="created-from" name="created_from" type="date" value="{{.CreatedFrom}}" required>
</div>
<div class="field">
<label for="created-to">结束日期</label>
<input id="created-to" name="created_to" type="date" value="{{.CreatedTo}}" required>
</div>
</div>
<div class="button-row">
<button class="button primary" type="submit" data-loading-label="正在创建…">同步日期范围</button>
<button class="button" type="submit" name="sync_to_now" value="true"
formnovalidate data-loading-label="正在创建…">同步至现在</button>
</div>
</form>
</main>
</body>