迭代 ONE-OS 多原型:加氢记录/订单同源对账、租赁明细校验与月度损益、车辆与台账增强;新增客户回款与加氢站统计;补齐业务逻辑与对象存储发布规范,同步原型导航。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
王冕
2026-07-16 09:00:13 +08:00
parent aa6b9a7683
commit 47c223a666
130 changed files with 17507 additions and 4461 deletions

View File

@@ -7,6 +7,7 @@
* node scripts/publish-all-to-s3.mjs
* node scripts/publish-all-to-s3.mjs --dry-run
* node scripts/publish-all-to-s3.mjs --group prototypes
* node scripts/publish-all-to-s3.mjs --ids vehicle-management,oneos-prototype-nav
*/
import fs from 'node:fs';
import os from 'node:os';
@@ -26,6 +27,7 @@ function parseArgs(argv) {
adminOrigin: '',
dryRun: false,
group: 'all',
ids: [],
includeSource: true,
};
for (let i = 0; i < argv.length; i += 1) {
@@ -33,6 +35,9 @@ function parseArgs(argv) {
if (arg === '--project-id' && argv[i + 1]) args.projectId = argv[++i].trim();
else if (arg === '--admin-origin' && argv[i + 1]) args.adminOrigin = argv[++i].trim();
else if (arg === '--group' && argv[i + 1]) args.group = argv[++i].trim();
else if (arg === '--ids' && argv[i + 1]) {
args.ids = argv[++i].split(',').map((id) => id.trim()).filter(Boolean);
}
else if (arg === '--dry-run') args.dryRun = true;
else if (arg === '--no-source') args.includeSource = false;
}
@@ -69,8 +74,9 @@ function resolveObjectPrefix(entry, pathAliases = {}) {
if (alias) return String(alias).replace(/^\/+|\/+$/gu, '');
const normalized = entry.path.replace(/^\/+|\/+$/gu, '');
const prototypeMatch = normalized.match(/^(?:src\/)?prototypes\/(.+)$/u);
if (prototypeMatch?.[1]) return `prototypes/${prototypeMatch[1]}`;
const prototypeMatch = normalized.match(/^(?:src\/)?prototypes\/([^/]+)$/u);
// 与 Make 客户端「发布到对象存储」一致:/{prototype-id}/index.html不加 prototypes/ 前缀)
if (prototypeMatch?.[1]) return prototypeMatch[1];
const themeMatch = normalized.match(/^(?:src\/)?themes\/(.+)$/u);
if (themeMatch?.[1]) return `themes/${themeMatch[1]}`;
return entry.id;
@@ -227,7 +233,15 @@ async function main() {
const adminOrigin = resolveAdminOrigin(args.adminOrigin);
const s3Config = readS3Config();
const includeSource = args.includeSource && s3Config.includeSource;
const entries = await collectPublishEntries(adminOrigin, args.projectId, args.group, s3Config.pathAliases);
let entries = await collectPublishEntries(adminOrigin, args.projectId, args.group, s3Config.pathAliases);
if (args.ids.length > 0) {
const idSet = new Set(args.ids);
entries = entries.filter((entry) => idSet.has(entry.id));
const missing = args.ids.filter((id) => !entries.some((entry) => entry.id === id));
if (missing.length > 0) {
throw new Error(`未找到原型: ${missing.join(', ')}`);
}
}
console.log(`Admin: ${adminOrigin}`);
console.log(`Bucket: ${s3Config.bucket}`);

View File

@@ -23,8 +23,10 @@ const XLL_MODULES = [
/** 从 ONE-OS Web 合包拆出、由项目内手写 index 维护的独立原型 */
const STANDALONE_MODULES = [
{ slug: 'business-dept-ledger', title: '业务部台账', skipCodegen: true },
{ slug: 'customer-payment-collection', title: '客户回款情况', skipCodegen: true },
{ slug: 'vehicle-maintenance-ledger', title: '车辆维修明细', skipCodegen: true },
{ slug: 'oneos-web-h2-station-site', title: '站点信息', skipCodegen: true },
{ slug: 'oneos-web-h2-station-stats', title: '加氢站数量统计', skipCodegen: true },
{ slug: 'vehicle-return-settlement', title: '还车应结款', skipCodegen: true },
{ slug: 'vehicle-pickup-receivable', title: '提车应收款', skipCodegen: true },
];
@@ -55,7 +57,7 @@ const MODULES = [
{ slug: 'oneos-web-procurement', title: '采购管理', dir: '采购管理' },
{ slug: 'oneos-web-lease-contract', title: '车辆租赁合同', dir: '车辆租赁合同' },
{ slug: 'oneos-web-h2-station', title: '加氢站管理', dir: '加氢站管理', excludeDirs: ['export-tools', 'AI-加氢站站点信息-complete'], excludeFiles: ['站点信息.jsx'] },
{ slug: 'oneos-web-data-analysis', title: '数据分析', dir: '数据分析', excludeFiles: ['业务部台账.jsx'] },
{ slug: 'oneos-web-data-analysis', title: '数据分析', dir: '数据分析', excludeFiles: ['业务部台账.jsx', '客户回款情况.jsx'] },
{ slug: 'oneos-web-ledger-data', title: '台账数据', dir: '台账数据', excludeDirs: ['docs'], excludeFiles: ['车辆维修明细.jsx'] },
{ slug: 'oneos-web-business', title: '业务管理', dir: '业务管理', excludeDirs: ['文档', 'export-tools', 'AI-保险采购-complete'] },
{ slug: 'oneos-web-ops', title: '运维管理', dir: '运维管理' },