period.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { FunnelPeriod } from '../../api/types';
  2. /** Default period selected on first load: 单日(默认昨日,T+1)。 */
  3. export const DEFAULT_PERIOD: FunnelPeriod = 'day';
  4. /** The fixed 5-step funnel (display name + event key), in fixed order. */
  5. export const FIXED_FUNNEL_STEPS: { name: string; event_key: string }[] = [
  6. { name: '启动', event_key: 'start' },
  7. { name: '曝光', event_key: 'show' },
  8. { name: '拼团详情', event_key: 'detail' },
  9. { name: '下单', event_key: 'order' },
  10. { name: '成功', event_key: 'paid' },
  11. ];
  12. /** Format a "yyyyMMdd" snapshot day as "yyyy-MM-dd" for display. */
  13. export function formatSnapshotDt(dt: string): string {
  14. if (/^\d{8}$/.test(dt)) {
  15. return `${dt.slice(0, 4)}-${dt.slice(4, 6)}-${dt.slice(6, 8)}`;
  16. }
  17. return dt;
  18. }
  19. /** Local-midnight `Date` for yesterday — the latest selectable / queryable day (data is T+1). */
  20. export function yesterday(): Date {
  21. const d = new Date();
  22. d.setHours(0, 0, 0, 0);
  23. d.setDate(d.getDate() - 1);
  24. return d;
  25. }
  26. /** Format a local `Date` as request `snapshot_dt` ("yyyy-MM-dd"). */
  27. export function toSnapshotParam(d: Date): string {
  28. const y = d.getFullYear();
  29. const m = String(d.getMonth() + 1).padStart(2, '0');
  30. const day = String(d.getDate()).padStart(2, '0');
  31. return `${y}-${m}-${day}`;
  32. }