tju-yxq opened a new issue, #5396:
URL: https://github.com/apache/rocketmq-dashboard/issues/5396

   ## Problem
   
   The notification deliveries table's **"Delivered At" column lies for every 
record that was never delivered.** The column renders 
`formatUtcDateTime(record.deliveredAt ?? record.createdAt)`, so a FAILED, 
PENDING, SENDING or RETRY_WAIT record shows its **creation** timestamp under 
the "投递时间 / Delivered At" header — a webhook send that was rejected on the 
first attempt looks like it was delivered at the exact moment it was queued. An 
operator scanning the feed for "did anything actually go out?" gets a wrong 
answer from the table, then opens the detail drawer for the same record and 
sees `-` — the page contradicts itself.
   
   ## What did you do (steps to reproduce)?
   
   1. Trigger a notification that fails to deliver (e.g., a DingTalk webhook 
that rejects the request) and leave it in FAILED state.
   2. Open **Ops > Notification Deliveries**.
   3. The row shows the failure in the result column, but the "投递时间" column 
shows the record's creation time as if it had been delivered.
   4. Open the row's detail drawer: the "投递时间" field correctly shows `-` while 
"创建时间" shows the timestamp the table just presented as the delivery time.
   
   ## What did you expect to see?
   
   The column renders the `deliveredAt` field and shows `-` for records without 
one, exactly like the drawer.
   
   ## What did you see instead?
   
   The creation time masquerading as the delivery time for every undelivered 
record.
   
   ## Root cause
   
   `web/src/pages/ops/notificationDeliveries.tsx` line 222 (the table column):
   
   ```tsx
   render: (_, record) => formatUtcDateTime(record.deliveredAt ?? 
record.createdAt),
   ```
   
   The detail drawer for the same record (lines 392-393) has no fallback:
   
   ```tsx
   <Descriptions.Item label={t('deliveries.deliveredAt')}>
     {formatUtcDateTime(selectedDelivery.deliveredAt)}   // null renders '-'
   </Descriptions.Item>
   ```
   
   And the page's own result column (lines 206-217) distinguishes 已投递 
(delivered) from 下次重试 (next retry) — the page's model says an undelivered 
record has no delivery time. `formatUtcDateTime` already returns `'-'` for 
null, so the `?? record.createdAt` fallback is both unnecessary and wrong.
   
   ## Expected behavior
   
   - The "Delivered At" column renders `deliveredAt` alone; undelivered records 
show `-`.
   - Delivered records show their actual delivery timestamp (unchanged).
   - The drawer, filters, retry actions and every other column are unchanged.
   
   ## Acceptance criteria
   
   - [ ] Regression proof: on the current code, a FAILED record's Delivered At 
cell shows the formatted `createdAt`; with the fix it shows `-`.
   - [ ] A DELIVERED record's cell still shows the formatted `deliveredAt`.
   - [ ] The drawer's two timestamp fields are unchanged.
   - [ ] All existing deliveries-page tests stay green.
   
   ## Environment
   
   Branch `rocketmq-studio` at `6a68042f`; file: 
`web/src/pages/ops/notificationDeliveries.tsx`.
   
   ## Duplicate check
   
   Searched open and closed issues for `delivered at` and `delivery column`; 
the only adjacent item is #4964 (delivery bookkeeping timestamps written by the 
MySQL clock — a different, closed bug about timestamp sources). Nothing covers 
the creation-time substitution.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to