修正 ERP 边界与资产页面一致性(05-30-fix-erp-boundary-asset-consistency)

这个提交包含在:
2026-05-30 23:06:02 +08:00
父节点 16fd9bdf52
当前提交 f299ceeb74
共修改 47 个文件,包含 476 行新增和 1633 行删除
@@ -158,7 +158,7 @@ function renderMarkdown(report) {
lines.push("- 阻塞 3:");
lines.push("");
lines.push("## 下周调整");
lines.push("- 是否继续隐藏考勤、采购、差旅、预算、AP、ERP、AI 等备用模块:");
lines.push("- 是否继续隐藏考勤、采购、差旅、预算、AP、AI 等备用模块:");
lines.push("- 是否需要补充培训、公告提醒或管理员代配置:");
lines.push("- 是否达到试点预期:是 / 否");
return `${lines.join("\n")}\n`;
-7
查看文件
@@ -255,13 +255,6 @@ const DEFAULT_FEATURE_FLAGS = [
department_ids: [],
note: "bootstrap default: force_off",
},
{
flag_key: "erp_sync",
override_mode: "force_off",
rollout_type: "global",
department_ids: [],
note: "bootstrap default: force_off",
},
{
flag_key: "invoice_verification",
override_mode: "force_off",
+24 -26
查看文件
@@ -317,7 +317,6 @@ async function ensureWorkspaceSetting(prisma) {
paymentBatches: "admin",
apOperations: "admin",
cutover: "admin",
erpIntegrations: "admin",
},
};
@@ -344,7 +343,6 @@ async function ensureEmployee(prisma, payload) {
const employee = await prisma.employee.update({
where: { id: existing.id },
data: {
employee_no: payload.employeeNo,
name: payload.name,
phone: payload.phone,
department_id: payload.departmentId,
@@ -480,8 +478,8 @@ async function main() {
}
const ceo = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_CEO_EMPLOYEE_NO ?? "E0001",
name: "CEO",
employeeNo: process.env.SEED_CEO_EMPLOYEE_NO ?? "HYD000001",
name: "张总",
phone: process.env.SEED_CEO_PHONE ?? "13900000000",
email: process.env.SEED_CEO_EMAIL ?? "[email protected]",
password: process.env.SEED_CEO_PASSWORD ?? "CeoPassword1234",
@@ -494,8 +492,8 @@ async function main() {
});
const admin = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_ADMIN_EMPLOYEE_NO ?? "E0000",
name: "Admin",
employeeNo: process.env.SEED_ADMIN_EMPLOYEE_NO ?? "HYD000006",
name: "王顺利",
phone: process.env.SEED_ADMIN_PHONE ?? "13800000000",
email: process.env.SEED_ADMIN_EMAIL ?? "[email protected]",
password: process.env.SEED_ADMIN_PASSWORD ?? "AdminPassword1234",
@@ -508,8 +506,8 @@ async function main() {
});
const manager = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_MANAGER_EMPLOYEE_NO ?? "E0100",
name: "Manager",
employeeNo: process.env.SEED_MANAGER_EMPLOYEE_NO ?? "HYD000002",
name: "李研发",
phone: process.env.SEED_MANAGER_PHONE ?? "13700000000",
email: process.env.SEED_MANAGER_EMAIL ?? "[email protected]",
password: process.env.SEED_MANAGER_PASSWORD ?? "ManagerPassword1234",
@@ -522,8 +520,8 @@ async function main() {
});
const employee = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_EMPLOYEE_EMPLOYEE_NO ?? "E0101",
name: "Employee",
employeeNo: process.env.SEED_EMPLOYEE_EMPLOYEE_NO ?? "HYD000003",
name: "陈工程",
phone: process.env.SEED_EMPLOYEE_PHONE ?? "13600000000",
email: process.env.SEED_EMPLOYEE_EMAIL ?? "[email protected]",
password: process.env.SEED_EMPLOYEE_PASSWORD ?? "EmployeePassword1234",
@@ -536,8 +534,8 @@ async function main() {
});
const finance = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_FINANCE_EMPLOYEE_NO ?? "E0200",
name: "Finance",
employeeNo: process.env.SEED_FINANCE_EMPLOYEE_NO ?? "HYD000004",
name: "赵财务",
phone: process.env.SEED_FINANCE_PHONE ?? "13500000000",
email: process.env.SEED_FINANCE_EMAIL ?? "[email protected]",
password: process.env.SEED_FINANCE_PASSWORD ?? "FinancePassword1234",
@@ -550,8 +548,8 @@ async function main() {
});
const financeMgr = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_FINANCE_MGR_EMPLOYEE_NO ?? "E0201",
name: "Finance Manager",
employeeNo: process.env.SEED_FINANCE_MGR_EMPLOYEE_NO ?? "HYD000005",
name: "钱主管",
phone: process.env.SEED_FINANCE_MGR_PHONE ?? "13400000000",
email: process.env.SEED_FINANCE_MGR_EMAIL ?? "[email protected]",
password: process.env.SEED_FINANCE_MGR_PASSWORD ?? "FinanceMgrPassword1234",
@@ -564,8 +562,8 @@ async function main() {
});
const hr = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_HR_EMPLOYEE_NO ?? "E0300",
name: "HR",
employeeNo: process.env.SEED_HR_EMPLOYEE_NO ?? "HYD000007",
name: "孙人事",
phone: process.env.SEED_HR_PHONE ?? "13300000000",
email: process.env.SEED_HR_EMAIL ?? "[email protected]",
password: process.env.SEED_HR_PASSWORD ?? "HrPassword1234",
@@ -578,8 +576,8 @@ async function main() {
});
const administration = await ensureEmployee(prisma, {
employeeNo: process.env.SEED_ADMINISTRATION_EMPLOYEE_NO ?? "E0400",
name: "Administration",
employeeNo: process.env.SEED_ADMINISTRATION_EMPLOYEE_NO ?? "HYD000008",
name: "周行政",
phone: process.env.SEED_ADMINISTRATION_PHONE ?? "13200000000",
email: process.env.SEED_ADMINISTRATION_EMAIL ?? "[email protected]",
password: process.env.SEED_ADMINISTRATION_PASSWORD ?? "AdministrationPassword1234",
@@ -664,21 +662,21 @@ async function main() {
// eslint-disable-next-line no-console
console.log("Seeded dev users:");
// eslint-disable-next-line no-console
console.log(`- CEO: ${ceo.email} / ${process.env.SEED_CEO_PASSWORD ?? "CeoPassword1234"}`);
console.log(`- 负责人: ${ceo.email} / ${process.env.SEED_CEO_PASSWORD ?? "CeoPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Admin: ${admin.email} / ${process.env.SEED_ADMIN_PASSWORD ?? "AdminPassword1234"}`);
console.log(`- 管理员: ${admin.email} / ${process.env.SEED_ADMIN_PASSWORD ?? "AdminPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Manager: ${manager.email} / ${process.env.SEED_MANAGER_PASSWORD ?? "ManagerPassword1234"}`);
console.log(`- 研发负责人: ${manager.email} / ${process.env.SEED_MANAGER_PASSWORD ?? "ManagerPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Employee: ${employee.email} / ${process.env.SEED_EMPLOYEE_PASSWORD ?? "EmployeePassword1234"}`);
console.log(`- 员工: ${employee.email} / ${process.env.SEED_EMPLOYEE_PASSWORD ?? "EmployeePassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Finance: ${finance.email} / ${process.env.SEED_FINANCE_PASSWORD ?? "FinancePassword1234"}`);
console.log(`- 财务: ${finance.email} / ${process.env.SEED_FINANCE_PASSWORD ?? "FinancePassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Finance Manager: ${financeMgr.email} / ${process.env.SEED_FINANCE_MGR_PASSWORD ?? "FinanceMgrPassword1234"}`);
console.log(`- 财务主管: ${financeMgr.email} / ${process.env.SEED_FINANCE_MGR_PASSWORD ?? "FinanceMgrPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- HR: ${hr.email} / ${process.env.SEED_HR_PASSWORD ?? "HrPassword1234"}`);
console.log(`- 人事: ${hr.email} / ${process.env.SEED_HR_PASSWORD ?? "HrPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Administration: ${administration.email} / ${process.env.SEED_ADMINISTRATION_PASSWORD ?? "AdministrationPassword1234"}`);
console.log(`- 行政: ${administration.email} / ${process.env.SEED_ADMINISTRATION_PASSWORD ?? "AdministrationPassword1234"}`);
// eslint-disable-next-line no-console
console.log(`- Legal Entity: ${legalEntity.code} / ${legalEntity.name}`);
// eslint-disable-next-line no-console
+2 -5
查看文件
@@ -24,7 +24,6 @@ const DEFAULT_FORCE_ON_FLAGS = Object.freeze([
]);
const OPTIONAL_FORCE_ON_FLAGS = new Set([
"erp_sync",
"budget_precheck_v1",
"payment_batch_v1",
"workflow_definition_admin_v1",
@@ -164,7 +163,6 @@ async function ensureWorkspaceSetting(prisma) {
paymentBatches: "admin",
apOperations: "admin",
cutover: "admin",
erpIntegrations: "admin",
},
},
});
@@ -199,7 +197,6 @@ async function ensureWorkspaceSetting(prisma) {
paymentBatches: "admin",
apOperations: "admin",
cutover: "admin",
erpIntegrations: "admin",
},
},
});
@@ -326,8 +323,8 @@ async function main() {
email: adminEmail,
phone: adminPhone,
password: adminPassword || null,
employeeNo: process.env.TRIALRUN_ADMIN_EMPLOYEE_NO ?? "T0000",
name: process.env.TRIALRUN_ADMIN_NAME ?? "Trialrun Admin",
employeeNo: process.env.TRIALRUN_ADMIN_EMPLOYEE_NO ?? "HYD000006",
name: process.env.TRIALRUN_ADMIN_NAME ?? "王顺利",
title: process.env.TRIALRUN_ADMIN_TITLE ?? "系统管理员",
departmentId: management.id,
hireDate: new Date(process.env.TRIALRUN_ADMIN_HIRE_DATE ?? "2020-01-01"),