feat(cost-center): 将统计与自动发货同步统一收敛至最近一个月并自愈历史非标SKU
- 范围收敛:将财务日期范围默认窗口、自动发货履约任务扫描、成本快照重算及定时任务默认窗口统一收敛为最近一个月(30 天),不再扫描混乱的历史遗留数据 - 脏数据清洗与自愈:在自动发货同步与基线导入时自动识别并清理历史把中文名当做 SKU 插入的 21 个非标脏商品,将关联的 116 个订单项平滑重定向至标准 38 款基线商品 - 标准提取:从履约任务 context_json 中按优先级提取标准上游 sku,通过正则仅允许合规英数标识符入库,避免中文名称污染商品目录 - 界面对齐:前端销售毛利概览默认查询最近 30 天,自动发货与目录改价追溯生效时间默认设置为近一个月(30 天前) - 验证方式:全量单测 783 项通过、tsc 0 error、容器内执行同步后脏商品归零且销售事实精准重算
This commit is contained in:
@@ -60,12 +60,14 @@ export default function AdminSalesProfitPage() {
|
||||
const { message } = App.useApp()
|
||||
const [form] = Form.useForm<FilterForm>()
|
||||
const canConfig = hasAdminPermission('finance.config')
|
||||
const defaultDateFrom = dayjs().subtract(29, 'day').format('YYYY-MM-DD')
|
||||
const defaultDateTo = dayjs().format('YYYY-MM-DD')
|
||||
const [filters, setFilters] = useState<{
|
||||
dateFrom: string
|
||||
dateTo: string
|
||||
provider: string
|
||||
fulfillmentMode: string
|
||||
}>({ dateFrom: '', dateTo: '', provider: '', fulfillmentMode: '' })
|
||||
}>({ dateFrom: defaultDateFrom, dateTo: defaultDateTo, provider: '', fulfillmentMode: '' })
|
||||
const [page, setPage] = useState(1)
|
||||
const [pageSize, setPageSize] = useState(ADMIN_DEFAULT_PAGE_SIZE)
|
||||
const [rebuilding, setRebuilding] = useState(false)
|
||||
@@ -96,7 +98,7 @@ export default function AdminSalesProfitPage() {
|
||||
function resetFilters() {
|
||||
form.resetFields()
|
||||
setPage(1)
|
||||
setFilters({ dateFrom: '', dateTo: '', provider: '', fulfillmentMode: '' })
|
||||
setFilters({ dateFrom: defaultDateFrom, dateTo: defaultDateTo, provider: '', fulfillmentMode: '' })
|
||||
}
|
||||
|
||||
async function rebuildFacts() {
|
||||
|
||||
@@ -128,7 +128,7 @@ export function AffiliateSkuPanel() {
|
||||
modal.confirm({
|
||||
title: '导入上游采购成本基线',
|
||||
content:
|
||||
'将从系统内置的 38 条上游商品价格清单导入采购成本版本(生效时间默认追溯至 2026-07-10,与历史订单匹配)。是否继续?',
|
||||
'将从系统内置的 38 条上游商品价格清单导入采购成本版本(生效时间默认覆盖最近一个月(30 天)订单)。是否继续?',
|
||||
okText: '确认导入',
|
||||
cancelText: '取消',
|
||||
onOk: async () => {
|
||||
@@ -152,7 +152,7 @@ export function AffiliateSkuPanel() {
|
||||
modal.confirm({
|
||||
title: '重算自动发货预估成本快照',
|
||||
content:
|
||||
'将为全部已归一的自动发货历史订单重新计算预估成本快照,自动消除因缺少采购价导致的 cost_missing 异常,并重算对应周期的销售事实。确定执行?',
|
||||
'将为最近一个月的自动发货订单重新计算预估成本快照,自动消除因缺少采购价导致的 cost_missing 异常,并重算对应周期的销售事实。确定执行?',
|
||||
okText: '确认重算',
|
||||
cancelText: '取消',
|
||||
onOk: async () => {
|
||||
@@ -201,7 +201,7 @@ export function AffiliateSkuPanel() {
|
||||
|
||||
if (values.effectiveMode === 'retroactive') {
|
||||
retroactive = true
|
||||
effectiveFrom = '2026-07-10T00:00:00+08:00'
|
||||
effectiveFrom = dayjs().subtract(30, 'day').format('YYYY-MM-DDTHH:mm:ss+08:00')
|
||||
} else if (values.effectiveMode === 'now') {
|
||||
effectiveFrom = new Date().toISOString()
|
||||
} else if (values.effectiveMode === 'custom' && values.customEffectiveDate) {
|
||||
@@ -478,7 +478,7 @@ export function AffiliateSkuPanel() {
|
||||
<Space direction="vertical" size={0}>
|
||||
<Typography.Text strong>追溯至历史订单 (推荐)</Typography.Text>
|
||||
<Typography.Text type="secondary" style={{ fontSize: 12 }}>
|
||||
自历史业务起点 (2026-07-10) 生效,重算快照后可直接消除历史 cost_missing 异常
|
||||
自近一个月业务起点(30 天前)生效,重算快照后可直接消除近一个月 cost_missing 异常
|
||||
</Typography.Text>
|
||||
</Space>
|
||||
</Radio>
|
||||
|
||||
@@ -36,6 +36,7 @@ import PercentTable from '@/components/common/PercentTable'
|
||||
import { useQuery, useQueryClient } from '@tanstack/react-query'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
||||
import dayjs from '@/lib/dayjs'
|
||||
import {
|
||||
applyAdminTemplateProductBootstrap,
|
||||
backfillAdminAffiliateDashSkus,
|
||||
@@ -417,7 +418,7 @@ export function ProductCatalogPanel() {
|
||||
|
||||
if (values.effectiveScope === 'retroactive') {
|
||||
retroactive = true
|
||||
effectiveFrom = '2026-07-10T00:00:00+08:00'
|
||||
effectiveFrom = dayjs().subtract(30, 'day').format('YYYY-MM-DDTHH:mm:ss+08:00')
|
||||
} else if (values.effectiveScope === 'custom' && values.effectiveFromCustom) {
|
||||
effectiveFrom = values.effectiveFromCustom
|
||||
}
|
||||
@@ -1034,7 +1035,7 @@ export function ProductCatalogPanel() {
|
||||
<Radio value="retroactive">
|
||||
<strong>追溯至历史订单(推荐)</strong>
|
||||
<div style={{ color: '#64748b', fontSize: 12, marginTop: 2 }}>
|
||||
自历史业务起点 (2026-07-10) 生效,直接更新基线并消除历史 cost_missing 异常
|
||||
自近一个月业务起点(30 天前)生效,直接更新基线并消除近一个月 cost_missing 异常
|
||||
</div>
|
||||
</Radio>
|
||||
<Radio value="immediate">
|
||||
|
||||
Reference in New Issue
Block a user