2061 Commits

Author SHA1 Message Date
WuYongJie
ed339ceb3f merge: sync latest xuxiake before password status release
# Conflicts:
#	furniture-3d-system/docs/integrations/finance-store-account-password-reveal.md
2026-09-09 11:02:18 +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
2224112c29 保持当前页分块读取限流额度 (#19) 2026-09-08 18:11:34 +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
caa960d70a 支持财务当前页批量读取店铺密码 (#18) 2026-09-08 17:19:01 +08:00
WuYongJie
9965c93c8d feat(store-accounts): store password and bank account as plaintext 2026-09-08 15:07:35 +08:00
WuYongJie
811926e67b feat(store-accounts): store password and bank account as plaintext 2026-09-08 15:06:43 +08:00
WuYongJie
c9d2f37ead feat(product-archive): add select-all to header filter option lists 2026-09-08 14:44:26 +08:00
WuYongJie
4deea6518a feat(product-archive): add select-all to header filter option lists 2026-09-08 14:43:37 +08:00
WuYongJie
0b4311a882 feat(store-accounts): show password and bank account in plaintext in list 2026-09-08 14:07:06 +08:00
WuYongJie
ecfd596ad0 feat(store-accounts): show password and bank account in plaintext in list 2026-09-08 14:05:44 +08:00
WuYongJie
df9c0ad67f feat(intake): add product abandon action to the product list
the product list rows gain an abandon action next to edit/copy/delete for admins and product owners (operations brand / spu / appearance / structure / purchase / merchandiser / planner / space owners matched by name); abandoning sets projectStatus to rejected which makes every workspace read-only and the existing daily todo push already skips rejected products, so abandoned products drop out of daily pushes automatically; the server enforces the same permission via a new POST abandon endpoint. Abandoned rows keep the restore action to come back.
2026-09-08 12:27:26 +08:00
WuYongJie
d2f71b3723 feat(intake): add product abandon action to the product list
the product list rows gain an abandon action next to edit/copy/delete for admins and product owners (operations brand / spu / appearance / structure / purchase / merchandiser / planner / space owners matched by name); abandoning sets projectStatus to rejected which makes every workspace read-only and the existing daily todo push already skips rejected products, so abandoned products drop out of daily pushes automatically; the server enforces the same permission via a new POST abandon endpoint. Abandoned rows keep the restore action to come back.
2026-09-08 12:26:44 +08:00
WuYongJie
5754172787 fix(product-development-todo): route missing purchaser reminders and use plain text 2026-09-08 10:31:22 +08:00
WuYongJie
ee8172c724 fix(product-development-todo): route missing purchaser reminders and use plain text 2026-09-08 10:21:19 +08:00
WuYongJie
7139f40c8d feat(oa-board): make workflow link cells clickable to open product detail
workflow link cells on the oa board detail table now render as anchors when the value is an http(s) url, opening the linked product detail in a new tab with platform link styling and hover underline; empty or non-url text still renders the dash placeholder.
2026-09-08 09:02:51 +08:00
WuYongJie
54bf9107fb Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into codex/local-3001-integration 2026-09-08 09:01:57 +08:00
WuYongJie
41e962da37 feat(oa-board): make workflow link cells clickable to open product detail
workflow link cells on the oa board detail table now render as anchors when the value is an http(s) url, opening the linked product detail in a new tab with platform link styling and hover underline; empty or non-url text still renders the dash placeholder.
2026-09-08 09:01:37 +08:00
WuYongJie
22cede9ed0 merge(main): publish finance store password reveal 2026-09-08 06:22:23 +08:00
c1dd4e666e Merge pull request 'feat(store-accounts): 财务专用按需密码读取、审计与安全状态' (#17) from codex/wuyongjie-store-accounts-finance-reveal into codex/xuxiake-mainline 2026-09-08 06:21:56 +08:00
WuYongJie
494a1cf60f feat(store-accounts): add audited finance password reveal 2026-09-08 05:59:19 +08:00
WuYongJie
f5a8ec1c05 feat(intake): add product factory workbook export and import by sku code
the product factory workspace gains export/import template buttons (purchase/merchandiser already hold node download grants): the export brings out the sku code, set count and every factory fillable field, splitting set count 2 rows into their A/B package codes; the import matches rows by sku code, enforces a header layout identical to the exported template, validates supplier names against the supplier directory, warehouses against the warehouse directory, enum fields against system options and number/date formats, collapses or splits A/B packages when the imported set count changes, and rejects confirmed rows - any row error aborts the whole import with per-row line numbers and reasons. Size, color and material columns are reference only.
2026-09-07 17:14:07 +08:00
WuYongJie
e9f83b16ee feat(intake): add product factory workbook export and import by sku code
the product factory workspace gains export/import template buttons (purchase/merchandiser already hold node download grants): the export brings out the sku code, set count and every factory fillable field, splitting set count 2 rows into their A/B package codes; the import matches rows by sku code, enforces a header layout identical to the exported template, validates supplier names against the supplier directory, warehouses against the warehouse directory, enum fields against system options and number/date formats, collapses or splits A/B packages when the imported set count changes, and rejects confirmed rows - any row error aborts the whole import with per-row line numbers and reasons. Size, color and material columns are reference only.
2026-09-07 17:12:59 +08:00
WuYongJie
416e22754a 供应商新品推荐:新增采购数据看板与PK榜
看板双视图(明细数据/采购看板,仅采购与管理可见看板);按月聚合采购推荐SKU/涉及工厂/被选款/被选率;路径行明细支持工厂勾选后跳转明细数据;被选款数量卡片跳转已选明细;PK榜爬山形态铺满全屏,管理员可配置主题/总金额/层级门槛与金额/规则说明(存 SystemConfig,无迁移)。
2026-09-07 16:40:49 +08:00
WuYongJie
d4d26c43bf 供应商新品推荐:新增采购数据看板与PK榜
看板双视图(明细数据/采购看板,仅采购与管理可见看板);按月聚合采购推荐SKU/涉及工厂/被选款/被选率;路径行明细支持工厂勾选后跳转明细数据;被选款数量卡片跳转已选明细;PK榜爬山形态铺满全屏,管理员可配置主题/总金额/层级门槛与金额/规则说明(存 SystemConfig,无迁移)。
2026-09-07 16:39:38 +08:00
WuYongJie
8fb872a3f9 feat(intake): open sample measurement and pricing template access with spec name column
measurement and pricing nodes now default downloads for pricing/purchase/merchandiser subjects so non-admin owners see the export/import template buttons; both workbook exports add a spec name reference column after the barcode (imports stay barcode-keyed and ignore it); the pricing node also grants merchandiser download parity with purchase owners.
2026-09-07 11:48:18 +08:00
WuYongJie
f8ba4f1e25 feat(intake): open sample measurement and pricing template access with spec name column
measurement and pricing nodes now default downloads for pricing/purchase/merchandiser subjects so non-admin owners see the export/import template buttons; both workbook exports add a spec name reference column after the barcode (imports stay barcode-keyed and ignore it); the pricing node also grants merchandiser download parity with purchase owners.
2026-09-07 11:47:40 +08:00
WuYongJie
39d7fc02f6 feat(finished-product-progress): auto-import factory-confirmed SKUs on sample completion 2026-09-07 11:17:21 +08:00
WuYongJie
8ea6a54eaa feat(finished-product-progress): auto-import factory-confirmed SKUs on sample completion 2026-09-07 11:15:01 +08:00
WuYongJie
667438447a fix(intake): move import rowNumber off the shared sku export row type
the optional numeric rowNumber on NonIntegratedSkuExportRow broke the dynamic template column writes (string vs never) in the production build type check; import rows now use a dedicated NonIntegratedSkuImportRow type that extends the export row with a required rowNumber.
2026-09-05 12:26:25 +08:00
WuYongJie
092036786c fix(barcode-print): restore Sofia certificate row pitch 2026-09-05 11:55:52 +08:00
WuYongJie
4a574041a9 fix(barcode-print): restore Sofia certificate row pitch 2026-09-05 11:53:55 +08:00
WuYongJie
2dbb214006 fix(intake): move import rowNumber off the shared sku export row type
the optional numeric rowNumber on NonIntegratedSkuExportRow broke the dynamic template column writes (string vs never) in the production build type check; import rows now use a dedicated NonIntegratedSkuImportRow type that extends the export row with a required rowNumber.
2026-09-04 17:59:40 +08:00
WuYongJie
e926a5a990 fix(intake): replace unsafe cast in sku export empty row builder
adding the optional rowNumber field to NonIntegratedSkuExportRow made the Object.fromEntries cast insufficient for the production build type check; build the empty import row explicitly instead.
2026-09-04 17:49:57 +08:00
WuYongJie
4f6510271f fix(intake): replace unsafe cast in sku export empty row builder
adding the optional rowNumber field to NonIntegratedSkuExportRow made the Object.fromEntries cast insufficient for the production build type check; build the empty import row explicitly instead.
2026-09-04 17:49:31 +08:00
WuYongJie
fccf9485b7 feat(intake): validate sku import skuCode spu prefix
standard sku workbook import now rejects rows whose skuCode does not start with the product spu in uppercase (lowercase codes are reported as needing uppercase); rows with an empty skuCode still pass and get auto-generated on save; the whole import is rejected with per-row line numbers and reasons. barcodes are skipped since they derive from the sku code.
2026-09-04 17:40:11 +08:00
WuYongJie
f4712cd1a2 feat(intake): validate sku import skuCode spu prefix
standard sku workbook import now rejects rows whose skuCode does not start with the product spu in uppercase (lowercase codes are reported as needing uppercase); rows with an empty skuCode still pass and get auto-generated on save; the whole import is rejected with per-row line numbers and reasons. barcodes are skipped since they derive from the sku code.
2026-09-04 17:39:35 +08:00
WuYongJie
e27e4fe67e feat(sample-progress): add daily due-date reminder notifications 2026-09-04 16:15:44 +08:00
WuYongJie
4843e16124 feat(sample-progress): add daily due-date reminder notifications 2026-09-04 16:14:51 +08:00
WuYongJie
f41e87373b fix(barcode-print): normalize Sofia certificate row spacing 2026-09-04 15:27:09 +08:00
WuYongJie
d32988dde6 fix(barcode-print): normalize Sofia certificate row spacing 2026-09-04 15:26:23 +08:00
WuYongJie
b30e5e5850 fix(barcode-print): tune Sofia certificate field positions 2026-09-04 12:27:39 +08:00
WuYongJie
bbb35a44f3 fix(barcode-print): tune Sofia certificate field positions 2026-09-04 12:25:32 +08:00
WuYongJie
56f3a7fe3f fix(supply-chain): show feedback as timed toast 2026-09-04 11:27:55 +08:00
WuYongJie
d3dee58b2b fix(supply-chain): default batch selection operator 2026-09-04 11:27:55 +08:00
WuYongJie
3df9bf08b1 fix(supply-chain): show feedback as timed toast 2026-09-04 11:25:31 +08:00
WuYongJie
d08a244fcb fix(supply-chain): default batch selection operator 2026-09-04 11:23:54 +08:00
WuYongJie
b488e6084c fix(finished-product-progress): enforce first-due-date protection on import updates
Import rows must not bypass the confirmed-first-due-date protection. Drop the allowDueDateChanges flag from the import update path so first-due-date changes are rejected and weekly due-date changes still require a reason, matching manual edits. Legacy rows without an order-placed date keep their free-correction path.
2026-09-04 10:59:29 +08:00
WuYongJie
99f004a593 fix(finished-product-progress): enforce first-due-date protection on import updates
Import rows must not bypass the confirmed-first-due-date protection. Drop the allowDueDateChanges flag from the import update path so first-due-date changes are rejected and weekly due-date changes still require a reason, matching manual edits. Legacy rows without an order-placed date keep their free-correction path.
2026-09-04 10:55:55 +08:00