- 人工确认履约:管理员/财务/运营可传 fundAccountId / creditOwnerAdminUserId 指定客服备用金/积分账户;客服仍强制本人账户 - 新增迁移 112:finance_accounts / journal_entries / journal_lines / periods / reconciliations / reconciliation_items,种子 11 个科目 - 影子总账:销售事实按日生成收入/退款/成本凭证,支持手工凭证、试算平衡; 不接管钱包余额;总账同步接入定时任务与退款重算 - 期间关账/反关账:关账先补凭证并校验试算平衡,closed 期间禁止新增凭证 - 平台对账:JSON 账单导入,按 provider + platform_order_id 匹配订单/退款, 标记 matched/amount_mismatch/missing_order/missing_refund/duplicate - 平台退款:快手行业(91)同意退款 API 接入,成功后落 source=platform; 抖音/拼多多返回 501,保留手工退款 - 新增后台「财务 → 总账与对账」页面(总账/期间/对账三个 Tab) - 集成测试扩展到代录、总账平衡、关账阻断、手工凭证、对账匹配 验证:backend check 844(840 pass / 4 skip);frontend check 172 + build; 迁移 112 在 scratch 库全量执行并重跑幂等;本地生产副本已升级到 112, 销售事实同步 56 条凭证,借贷合计 1,885,351,864 = 1,885,351,864。
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { Router } from 'express'
|
|
|
|
import authRouter from './admin/auth.js'
|
|
import auditLogsRouter from './admin/audit-logs.js'
|
|
import costCenterRouter from './admin/cost-center.js'
|
|
import dashboardRouter from './admin/dashboard.js'
|
|
import devMockRouter from './admin/dev-mock.js'
|
|
import douyinMashidaRouter from './admin/douyin-mashida.js'
|
|
import financeRouter from './admin/finance.js'
|
|
import financeLedgerRouter from './admin/finance-ledger.js'
|
|
import fundRouter from './admin/fund.js'
|
|
import filesRouter from './admin/files.js'
|
|
import kuaishouIndustryRouter from './admin/kuaishou-industry.js'
|
|
import ordersRouter from './admin/orders.js'
|
|
import notificationsRouter from './admin/notifications.js'
|
|
import realtimeRouter from './admin/realtime.js'
|
|
import rbacRouter from './admin/rbac.js'
|
|
import platformConfigRouter from './admin/platform-config.js'
|
|
import { requireAdminSession } from './admin/session.js'
|
|
import tasksRouter from './admin/tasks.js'
|
|
import usersRouter from './admin/users.js'
|
|
import workerPlatformRouter from './admin/worker-platform.js'
|
|
import { buildNotFoundPayload } from '../utils/http.js'
|
|
|
|
const router = Router()
|
|
|
|
router.use(authRouter)
|
|
router.use(requireAdminSession)
|
|
router.use(filesRouter)
|
|
router.use(dashboardRouter)
|
|
router.use(financeRouter)
|
|
router.use(financeLedgerRouter)
|
|
router.use(costCenterRouter)
|
|
router.use(fundRouter)
|
|
router.use(usersRouter)
|
|
router.use(rbacRouter)
|
|
router.use(auditLogsRouter)
|
|
router.use(platformConfigRouter)
|
|
router.use(kuaishouIndustryRouter)
|
|
router.use(douyinMashidaRouter)
|
|
router.use(ordersRouter)
|
|
router.use(notificationsRouter)
|
|
router.use(realtimeRouter)
|
|
router.use(tasksRouter)
|
|
router.use(workerPlatformRouter)
|
|
router.use(devMockRouter)
|
|
|
|
router.use((req, res) => {
|
|
res.status(404).json(buildNotFoundPayload(req))
|
|
})
|
|
|
|
export default router
|