居居
|
132331733e
|
feat(supply-chain): 限价流程同步改为服务器端可运行 + systemd 每日定时器
- sync-limit-workflows.mjs 路径参数化:新增 --out-dir/--initial-dir/--env-file/--skip-excel,
环境变量 LIMIT_SYNC_OUT_DIR / LIMIT_SYNC_INITIAL_DIR / LIMIT_SYNC_ENV_FILE / LIMIT_SYNC_SKIP_EXCEL / LIMIT_SYNC_HISTORY_KEEP;
默认目录改为应用根目录,不再写死 Mac 桌面
- 期初数据:优先显式目录,其次仓库自带 scripts/data/limit-sync/期初数据(首次部署可直接使用),
服务器上业务更新只需把新的「限价期初数据*.xlsx」放进 shared 目录
- 写库安全:校验 DATABASE_URL、打印目标库(不含密码)、DELETE+INSERT 包在单事务里,
失败自动回滚保留上一版限价/授权;Excel 导出失败不影响已提交的库数据
- 输出治理:输出目录自动创建;历史版本默认保留最近 20 份,避免服务器磁盘每天累积 30MB
- 新增 run-limit-workflow-sync-production.cjs:预检 shared/.env 变量(DATABASE_URL / JST_REPORT_DB_*)、
打印库目标、透传参数、30 分钟硬超时、失败写 job 日志
- 新增 install-limit-workflow-sync-timer.sh:照 marketing-sales 样板安装 systemd service+timer,
EnvironmentFile=$BASE/shared/.env,默认每天北京时间 07:30,输出/期初数据放 $BASE/shared/limit-workflow-sync
- 文档补充「正式站同步」章节;顺带修正 supply-chain-page-permissions 测试的菜单页数(新增限价管理后 27 页)
- 未改动 20261014/20261015 三个迁移目录(正式库已按现名建表)
|
2026-10-19 10:13:34 +08:00 |
|
居居
|
2fde21f5da
|
feat(supply-chain): 限价明细「是否有检测报告」接入素材平台检测报告接口
- 新增检测报告索引服务:GET {素材平台}/api/external/certificate-reports(X-API-Key),只认有报告文件的记录,按 SPU 汇总,进程内缓存 10 分钟
- 列取自 external 接口:限价页数据接口与「导出明细(含图片)」都带上 inspectionReport(有 / 无 / 空)
- 表头筛选接入:候选值「有 / 无」,筛选按报告 SPU 清单(接口未配置时不加条件、候选值为空)
- 配置:MATERIAL_LIBRARY_CERTIFICATE_REPORT_API_BASE_URL/API_KEY,不填复用 MATERIAL_LIBRARY_WHITE_BACKGROUND_API_*;未配置时该列显示为空
- 增补单测(解析/缓存/未配置/接口报错)与文档说明
|
2026-10-19 09:23:04 +08:00 |
|
居居
|
eca1d63842
|
feat(supply-chain): 限价管理的查看/导出/申诉权限统一由管理员配置
- 查看:页面与数据仍走「限价管理 · 可见」;导出改按「限价管理 · 下载」,申诉/审核/生成/导入改按「限价管理 · 操作」(原来是经营管理 edit)
- 服务端:下载中心 limit-export 任务与产品档案导出接口的 columnSet=limit 都按「限价管理 · 下载」鉴权
- 前端:无下载权限不展示导出入口(限价明细两个导出、破价订单导出当前筛选/乐捐明细);规则配置仍单独走 breachRuleConfig 节点
- 申诉保留兜底:破价单负责人本人即使无「操作」权限也可申诉本人订单,审核必须「操作」
- 测试:CustomTableView 补导出入口权限用例并修正过期的表头断言;文档补充权限章节
|
2026-10-19 09:23:04 +08:00 |
|
居居
|
f276164532
|
feat(supply-chain): 限价管理(限价明细 + 破价订单审核 + 规则配置 + 流程同步)
- 限价明细:抬头列/筛选/列宽/排序可配置,批量查询(商品编码/订单号/负责人等),筛选条件回显与一键清空
- 列取数口径:入库/代发按仓库名推导(含仓库配置覆盖)、产品标签取商品SABC打标、材质等级从「材质」识别 E0/E1/ENF
- 导出:导出明细 / 导出明细(含图片)改为全局下载中心后台生成,进度/取消/保存都在下载中心;页签名与文件名一致
- 破价订单审核:按天增量生成、链接级与订单级申诉、审核通过/驳回/二次申诉冲销乐捐、豁免(同价/活动)与证据凭证要求
- 规则配置页与权限:管理员开通后可编辑(权限节点 breachRuleConfig),无权限不可见
- 限价流程同步脚本:4 类钉钉限价流程 + 产品限价页面已确认限价 + 限价期初数据;流程/页面/期初优先级与「期初更新日期更新则以期初为准」
- 非负责人限价统一按最新口径派生(×1.05 且不低于 +10 元)
- 迁移:breach order review / breach rule config / limit flow sync
- 与 mainline 合并:保留字段权限(blockedFields)、负责人在职接管、限价目标 limitManagement 等新特性;
规则配置权限并入新的权限节点结构,档案列去掉重复的 opsPriceLimit 列,相关测试断言按当前口径更新
|
2026-10-19 09:23:03 +08:00 |
|
WuYongJie
|
5c899b4705
|
revert: 限价管理两个提交(类型检查不通过,待功能线程修复后重新提交)
|
2026-10-16 17:55:56 +08:00 |
|
居居
|
fbe276d4f6
|
feat(supply-chain): 限价管理的查看/导出/申诉权限统一由管理员配置
- 查看:页面与数据仍走「限价管理 · 可见」;导出改按「限价管理 · 下载」,申诉/审核/生成/导入改按「限价管理 · 操作」(原来是经营管理 edit)
- 服务端:下载中心 limit-export 任务与产品档案导出接口的 columnSet=limit 都按「限价管理 · 下载」鉴权
- 前端:无下载权限不展示导出入口(限价明细两个导出、破价订单导出当前筛选/乐捐明细);规则配置仍单独走 breachRuleConfig 节点
- 申诉保留兜底:破价单负责人本人即使无「操作」权限也可申诉本人订单,审核必须「操作」
- 测试:CustomTableView 补导出入口权限用例并修正过期的表头断言;文档补充权限章节
|
2026-10-16 17:46:01 +08:00 |
|
居居
|
4be4bd1e09
|
feat(supply-chain): 限价管理(限价明细 + 破价订单审核 + 规则配置 + 流程同步)
- 限价明细:抬头列/筛选/列宽/排序可配置,批量查询(商品编码/订单号/负责人等),筛选条件回显与一键清空
- 列取数口径:入库/代发按仓库名推导(含仓库配置覆盖)、产品标签取商品SABC打标、材质等级从「材质」识别 E0/E1/ENF
- 导出:导出明细 / 导出明细(含图片)改为全局下载中心后台生成,进度/取消/保存都在下载中心;页签名与文件名一致
- 破价订单审核:按天增量生成、链接级与订单级申诉、审核通过/驳回/二次申诉冲销乐捐、豁免(同价/活动)与证据凭证要求
- 规则配置页与权限:管理员开通后可编辑(权限节点 breachRuleConfig),无权限不可见
- 限价流程同步脚本:4 类钉钉限价流程 + 产品限价页面已确认限价 + 限价期初数据;流程/页面/期初优先级与「期初更新日期更新则以期初为准」
- 非负责人限价统一按最新口径派生(×1.05 且不低于 +10 元)
- 迁移:breach order review / breach rule config / limit flow sync
- 与 mainline 合并:保留字段权限(blockedFields)、负责人在职接管、限价目标 limitManagement 等新特性;
规则配置权限并入新的权限节点结构,档案列去掉重复的 opsPriceLimit 列,相关测试断言按当前口径更新
|
2026-10-16 17:46:01 +08:00 |
|
WuYongJie
|
77c91bd689
|
fix(supply-chain): 产品全量档案 DF 条码成本价改为统一取 jst_sku.cost_price
- enrichment 价格补丁不再区分 DF/非 DF:purchasePrice 与 costPrice 均取 rpt.jst_sku(purchase_price / cost_price)
- 删除 dws_sn_sales_full_info_di.goods_cost 取价链路(dws-sales-goods-cost.repository.ts 整删,DWS_SALES_GOODS_COST 来源常量移除)
- 单测与《供应链产品全量档案字段来源对照表》同步更新
预期效果(部署后下一轮同步):约 1874 条 DF 成本价由空变有值、约 230 条由 dws 金额口径变为 jst 单价口径、约 4516 条数值不变、0 条丢值。
|
2026-10-16 16:27:31 +08:00 |
|
WuYongJie
|
92cd5f2903
|
docs: 删除已废弃的苹果风格视觉标准(验收只按白曜石工坊口径)
|
2026-10-12 11:08:32 +08:00 |
|
WuYongJie
|
7b9fd60f6e
|
feat(product-archive): 全量档案图片自动增量索引、换图失效与失败重试
|
2026-10-12 08:50:39 +08:00 |
|
apple
|
158995b71b
|
fix(docs): 恢复生产部署说明中被覆盖的 SABC 章节并重放停产收口章节
上一次提交把 deploy 文档替换成旧版本,误删了「商品 SABC 月度核算」等主线内容;本次恢复主线版本并仅追加「停产需求确认超时收口」章节。
|
2026-10-10 12:14:38 +08:00 |
|
apple
|
26ebec4c40
|
chore(production-stop-demands): 补齐超时自动收口定时器与部署说明
- 新增 scripts/install-production-stop-confirmation-finalize-timer.sh:systemd service+timer,每 10 分钟检查一次(Asia/Shanghai),失败 5 分钟后自动重试,日志进 journald
- 生产部署入口说明新增「停产需求确认超时收口」章节(脚本、systemd 名称、调度、日志、启用步骤与授权边界)
|
2026-10-10 12:13:28 +08:00 |
|
apple
|
eca96b3067
|
fix(logistics-arrival): 快照覆盖判定改用实际数据覆盖,修当天少算/导出缺单
看板/导出的快照覆盖判定此前只比对批次"声明窗口"(windowTo = 跑批当天),
但每天 03:00/05:30 跑批时当天还没签收完,数据只到跑批那一刻,于是把
"还没签收完的当天"误判成已覆盖:10-08 生成的批次只会算到 10-07(约 3.8 万),
当天签收的单(用户清单里那 5,820 条)整批缺失。
- 快照批次新增 dataThrough(该批真实最大签收时间),覆盖上限改为
min(windowTo - 1, dataThrough 当天):跑批当天永远不完整,只信任到前一天;
数据源本身滞后时再由 dataThrough 收窄。
- 生成任务逐片记录 dataThrough 并写回批次;旧批次缺值时按 windowTo - 1 兜底。
- 定时器默认 05:30 → 03:00;文档同步更新覆盖规则。
- migration: LogisticsArrivalSigningDurationSnapshotRun.dataThrough。
任务名:物流到货签收时长-deepseek
|
2026-10-09 17:16:12 +08:00 |
|
codex
|
d727421dca
|
fix(logistics-arrival): 经营维度点选不再自动滚到 09 订单明细
之前任何下钻(经营对象维度点选、经营总览异常卡片)都会把 09 订单明细 scrollIntoView 到视口顶部,
点平台/店铺等维度时会直接把页面翻到底,用户没法接着看其他维度、还得手动往上拉。
- 自动滚动只保留给经营总览的异常卡片(卡片写着"点击看明细")
- 经营对象维度(平台/店铺/发货仓/物流/采购/供应商/商品/签收日期)点选不再抢滚动条,
下钻筛选照常生效,09 明细在原位置更新
- 测试拆成两条:维度点选不滚动(且仍触发 /drilldown)、异常卡片仍滚动到明细锚点
|
2026-10-09 14:21:08 +08:00 |
|
WuYongJie
|
9996ee83b2
|
Merge origin/codex/xuxiake-mainline into codex/local-3001-integration (sync before video-flow board push)
|
2026-10-08 11:22:14 +08:00 |
|
WuYongJie
|
af378a9d00
|
feat(oa-board): 新品-视频进度(内容部)看板,钉钉内容视频流程独立接入
独立快照表 oa_video_flow_board_snapshot + 双驱动同步脚本 + 分页筛选接口 + 新 Tab;不进新品主链项目聚合/总状态/时效。阶段推进按表单字段推断(编导→摄像→剪辑→封面→验收/评分),节点名清单到位后可升级 activityId 映射。附数据字典 docs/数据字典/13-内容视频流程看板.md 供下游只读接入。
|
2026-10-08 11:20:48 +08:00 |
|
codex
|
e6241481aa
|
fix(logistics-arrival): 下钻/导出接口接受按字段分组的排除关键词
下钻和导出两个接口的 zod schema 还停留在 string | array,
而前端下发的是新的分组对象 { 字段: [词] },
于是点商品/店铺等对象下钻时 09 明细直接报"下钻条件格式不正确"(导出报"导出筛选条件格式不正确")。
- 两个接口的 excludeKeywords 都接受 对象 / `字段:词,词` 字符串 / 旧平铺数组
- 字符串形态改用 parseExcludeKeywords 解析(老链接按配置归位),不会把字段名当成关键词
- 新增两条路由单测:分组对象下钻/导出、字符串与平铺兼容、非法形态返回 400
|
2026-10-08 11:16:57 +08:00 |
|
codex
|
debdfb454b
|
fix(logistics-arrival): 修复订单明细"每页条数"选了没反应
BoardPagination 的下拉框在 onChange 里同时调了 onPageSizeChange(新值) 和 onPageChange(1)。
服务端分页(09 订单明细未下钻)这两次都会 router.push,而后一次是拿调用方当前的 filters
(pageSize 还是旧值)拼的 URL,把前一次覆盖掉——所以选 100/200 后又被拉回 50 条/页。
- BoardPagination 只通知"每页条数变了",回到第 1 页由调用方负责
- 本地分页(经营对象各维度表、发货仓/物流公司排名)在 setState 里带 page: 1
- 服务端分页继续用 href(1, { ...filters, pageSize })
- OrderDetailsBoard 测试补回归断言:切换每页条数只触发一次跳转
|
2026-10-07 14:35:46 +08:00 |
|
codex
|
7620e4bcb6
|
feat(logistics-arrival): 重置 / 恢复默认 / 清空排除 三个按钮语义拆开
过去三个按钮都只是"改输入、等用户点查询",而且重置只清日期+关键词、另两个只改排除词,
最终看起来结果一样。现在各自一件事,点下去立即查询:
- 重置:签收日期、关键词、排除关键词全部清空 → 没有任何筛选条件
(空日期仍由服务端兜底成本月 1 号~昨日;新增 dateRangeCleared 标记,
让输入框保持空白而不是被兜底值回填)
- 恢复默认:签收日期回到本月 1 号~昨日(显式填回输入框)+ 排除关键词恢复系统默认配置
- 清空排除:签收日期回到本月 1 号~昨日 + 排除关键词置空
配套:`logisticsArrivalSigningDurationDefaultRange()` 从过滤器规范化里抽出来共用(单一来源)、
按钮 hover 说明 + 筛选栏底部图例、去掉旧的"填好后点查询"提示、补视图层测试。
|
2026-10-07 11:05:35 +08:00 |
|
codex
|
eac3344e2d
|
perf(logistics-arrival): 看板冷启动从 7 秒降到 2 秒出头
整区间总览/环节目标原来 SELECT 全列,PG 只能对 900MB 堆表做 Seq Scan
(28 天区间 read=106409 页、6.3s);percentile_cont 又把 14 列宽的输入行
整行送进排序(两个分位数 4.3s,环节分位数叠加到分钟级);CTE 里的
CASE+EXTRACT 还会在每处引用被重复内联。
- 按用途收窄列集合:时间戳 / 时间戳+维度列,并新增覆盖索引
(snapshotDate, signTime) INCLUDE (payTime, sendTime, fetchTime,
warehouseName, platformName, shopName, logisticCompanyName) → Index Only Scan
- 分位数按列拆成独立语句、只投影一个浮点列,与计数语句并行下发
- measured / durations 改 AS MATERIALIZED,时长表达式只算一次
- 环节目标(上月平均 × 98%)接入 10 分钟内存缓存
实测(本机快照 648,689 行、冷启动):
28 天 7.3s→2.3s、10 天 4.4s→0.4s、2 天 1.7s→0.3s;
浏览器首屏出数 ~7-10s→2.7s。2 天区间与 JS 现算逐项对账一致。
|
2026-10-07 09:45:35 +08:00 |
|
居居
|
2be45f7a74
|
Merge branch 'codex/xuxiake-sabc-sync-20260929' into codex/xuxiake-mainline
|
2026-10-06 17:02:56 +08:00 |
|
居居
|
14a5e1c5f7
|
feat(supply-chain): 人员信息同步支持自动标记离职(方案B:抓取比对+钉钉确认)
|
2026-10-06 16:53:13 +08:00 |
|
codex
|
05007d3ae2
|
feat(logistics-arrival): 物流到货签收时长看板
- 看板:经营总览(平均到货时长 + 本月目标 + 目标达成率、异常单点击下钻)、
履约环节拆解(平均/中位/P90/目标/目标达成率,分栏可拖动)、发货→签收时效分布
- 经营对象问题排名:签收日期→平台→店铺→发货仓→物流→采购→供应商→商品→订单明细
逐级联动 + 独立翻页;经营对象带「目标 = 该对象上月平均 × 98%」与目标达成率
- 09 订单明细:看板内翻页、高度可拖动、下钻后自动滚动定位
- 排除关键词按字段分组(发货仓/物流公司/订单标签/买家留言/卖家备注),
选择器支持搜索、全部/已选项、全选/反选/清空、紧凑模式与按字段新增
- 每日订单明细快照:Prisma 模型与迁移、同步脚本、定时器安装脚本;
命中快照时整区间精确统计,超过规模上限回落均匀样本并如实标注
- 接入侧边菜单、标签页标题与权限映射(businessManagement),补充架构文档
|
2026-09-30 18:18:51 +08:00 |
|
居居
|
6eebb56ba0
|
feat(supply-chain): SABC 每月3日生成上月并冻结,执行核算仅管理员
|
2026-09-30 09:51:41 +08:00 |
|
居居
|
b976f075ff
|
Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into codex/xuxiake-sabc-sync-20260929
# Conflicts:
# furniture-3d-system/prisma/schema.prisma
# furniture-3d-system/src/server/repositories/supply-chain-product-archive-category-scale-row.repository.ts
# furniture-3d-system/src/server/repositories/supply-chain-product-archive-sales-period.repository.ts
|
2026-09-29 10:14:29 +08:00 |
|
居居
|
648b1eee8d
|
feat(supply-chain): 商品SABC打标(同步开发线前的本地快照)
|
2026-09-29 10:10:16 +08:00 |
|
WuYongJie
|
3dcdeb5cf1
|
docs(数据字典): 类目配置更新为单表合并结构(两表口径+取数方式+消费方)
|
2026-09-24 17:34:49 +08:00 |
|
WuYongJie
|
3d22d627fb
|
fix(auth): separate DingTalk login credentials from API credentials
|
2026-09-23 10:43:16 +08:00 |
|
居居
|
c0cc39a565
|
fix(supply-chain): complete personnel information source sync
|
2026-09-22 11:59:28 +08:00 |
|
WuYongJie
|
ce48ab7944
|
fix(1688): show zero for missing cost values
|
2026-09-21 11:42:05 +08:00 |
|
WuYongJie
|
4450ac5ce6
|
feat(supply-chain): add estimated freight to 1688 dropship data
Task: supply-chain-1688-freight-inclusive-unit-cost-20260918
|
2026-09-21 09:43:43 +08:00 |
|
WuYongJie
|
48871454e9
|
feat(bom-costing): BOM 预估 v2 —— 价格回退工具、case 级预估卡编排与预览页
- agent 工具:尺寸感知镜像检索 + 分类画像三级级联(包装 v1 回退链,导出纯函数复用)
- case 级编排:首批代表 SKU 自动精算,其余按需点算;结果持久缓存(新表 BomCostingAgentSkuEstimate,幂等迁移)
- EstimateCard 契约:代码侧聚合五行构成/区间包络/最小置信度/不确定点并集
- API:/api/bom-costing/cases/[id]/agent-estimate(GET 缓存卡 + POST 运行,复用模块鉴权)
- 预览页:/bom-costing/estimate(预估卡 + SKU 列表按需点算 + 竞品图片浏览,旁路不过闸门不设默认入口)
- Select 组件:透传 id/aria 到触发按钮;修复 skill 知识未注入循环的缺陷
- 基线工具:report:bom-agent-baseline(定价覆盖率 + shadow 聚合,含隧道重试)
- 设计文档:docs/架构设计/BOM成本预估v2-agent方案设计-20260916.md
|
2026-09-16 17:37:06 +08:00 |
|
伯阳
|
bc2104b169
|
test(supply-chain): verify merged 1688 entries and record integration checks
|
2026-09-12 18:32:24 +08:00 |
|
伯阳
|
dfdc3c3626
|
feat(supply-chain): integrate 1688 dropship analytics with shared daily sales
Preserve shared barcode/day facts and atomic synchronization; add DF sales, cost and operator enrichment, filters, trends, and module-scoped image access. Include additive migration and deployment/backfill handoff. Independent review: passed with warnings; existing master-data audit failures match baseline.
|
2026-09-12 18:29:16 +08:00 |
|
WuYongJie
|
149cf46b63
|
fix(store-accounts): align password status with plaintext storage
|
2026-09-09 11:01:42 +08:00 |
|
|
|
17daaee224
|
保持当前页分块读取限流额度 (#20)
|
2026-09-08 18:13:20 +08:00 |
|
|
|
4fd134f636
|
发布财务当前页批量读取店铺密码 (#16)
Co-authored-by: xuxiake <2644600472@qq.com>
Co-committed-by: xuxiake <2644600472@qq.com>
|
2026-09-08 17:21:32 +08:00 |
|
WuYongJie
|
9965c93c8d
|
feat(store-accounts): store password and bank account as plaintext
|
2026-09-08 15:07:35 +08:00 |
|
WuYongJie
|
494a1cf60f
|
feat(store-accounts): add audited finance password reveal
|
2026-09-08 05:59:19 +08:00 |
|
WuYongJie
|
33a13a8abb
|
Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into codex/wuyongjie-bom-estimate-agent-phase0
|
2026-09-03 15:38:14 +08:00 |
|
WuYongJie
|
4ceedf50ee
|
feat(bom-costing): 固定九折预估并精简工作台
|
2026-09-03 15:37:34 +08:00 |
|
WuYongJie
|
856522552f
|
chore: enforce operation log retention policy
|
2026-09-03 15:33:22 +08:00 |
|
WuYongJie
|
a2afbc40bb
|
chore: reconcile worktree snapshot before origin merge (local branch only)
|
2026-09-01 11:07:53 +08:00 |
|
WuYongJie
|
14915ef1f2
|
fix(supply-chain): resolve new-product images by barcode
|
2026-08-12 18:10:08 +08:00 |
|
WuYongJie
|
7558939482
|
feat(supply-chain): sync supplier regions
|
2026-08-11 17:19:29 +08:00 |
|
WuYongJie
|
b47f745b83
|
feat(supply-chain): persist archive enrichment and image cache
|
2026-08-11 10:31:12 +08:00 |
|
WuYongJie
|
cbbf2fbb21
|
feat(supply-chain): map archive prices by barcode
|
2026-08-10 17:21:51 +08:00 |
|
WuYongJie
|
ead86d523e
|
feat(bom-costing): add auditable dynamic company cost engine
|
2026-08-09 14:23:45 +08:00 |
|
WuYongJie
|
2bd31cc06b
|
feat(supply-chain): complete product archive data pipeline
|
2026-08-07 12:17:47 +08:00 |
|
WuYongJie
|
3ba508e8bb
|
docs: document product archive wide view contract
|
2026-08-06 13:20:47 +08:00 |
|