134 lines
12 KiB
JavaScript
134 lines
12 KiB
JavaScript
import { initDB, getDB } from './db.js';
|
|
import bcrypt from 'bcryptjs';
|
|
import crypto from 'crypto';
|
|
import 'dotenv/config';
|
|
|
|
await initDB();
|
|
const db = getDB();
|
|
const now = new Date().toISOString();
|
|
|
|
// 首次初始化密码由环境变量提供;未提供时生成一次性随机密码并打印。
|
|
const adminPassword = process.env.CMS_ADMIN_PASSWORD || crypto.randomBytes(12).toString('base64url');
|
|
const hash = bcrypt.hashSync(adminPassword, 10);
|
|
db.run(`INSERT OR IGNORE INTO admins (id, username, password_hash, created_at) VALUES (?, ?, ?, ?)`, ['admin-1', 'admin', hash, now]);
|
|
|
|
// 全局配置
|
|
db.get(`SELECT id FROM global_config WHERE id=1`, (err, row) => {
|
|
if (!row) {
|
|
db.run(`INSERT INTO global_config (id, site_title, slogan, seo_title, seo_desc, seo_keywords, hotline, contact_email, contact_address, cta_text, cta_link, updated_at) VALUES (1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
['阿美巴咨询|企业进化陪跑', '让企业进化被看见、被度量、被落地', '阿美巴咨询|企业进化陪跑 · 体系化增长落地', '以企业进化为主线,四大价值坐标与A/M/B状态坐标为观察系', '阿美巴,企业进化,四大价值,A/M/B', '400-XXX-XXXX', 'contact@aiameiba.com', '成都', '咨询获取方案', '/contact', now]);
|
|
}
|
|
});
|
|
// 首页板块
|
|
const sections = [
|
|
['home-hero', 'home-hero', '让企业进化被看见、被度量、被落地', '以企业进化为主线', '首屏主标题', 1, 100],
|
|
['home-ameba', 'home-ameba', '关于阿美巴', '克制理性的企业服务', '阿美巴摘要', 1, 90],
|
|
['home-evolution', 'home-evolution', '企业进化 · 观察坐标', '思想 → 价值 → 状态', '进化摘要', 1, 80],
|
|
['home-methods', 'home-methods', '方法与能力', '方法×能力×工具', '方法摘要', 1, 70],
|
|
['home-cases', 'home-cases', '实践案例', '9段固定插槽', '案例摘要', 1, 60],
|
|
['home-services', 'home-services', '产品服务 · 下一步行动', '禁止电商逻辑', '服务摘要', 1, 50],
|
|
['home-insights', 'home-insights', '认知观察', '持续观察与沉淀', '观察摘要', 1, 40],
|
|
];
|
|
sections.forEach(s => db.run(`INSERT OR IGNORE INTO home_sections (id, key, title, subtitle, summary, visible, sort_order, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [...s, now]));
|
|
|
|
const siteTexts = [
|
|
['home.eyebrow', '首页首屏眉题', '阿美巴 · 企业进化陪跑'],
|
|
['home.title', '首页首屏标题', '让企业进化\n被看见、被度量、被落地'],
|
|
['home.description', '首页首屏描述', '以“企业进化”为主线,以四大价值坐标与 A/M/B 状态坐标为观察系,陪跑企业构建可复制、可持续的增长经营体系。'],
|
|
['home.trust', '首页首屏信任说明', '30秒理解主张:进化思想 → 价值坐标 → 状态坐标 → 行动路径'],
|
|
['home.primary_cta', '首页主按钮', '开始企业进化诊断'],
|
|
['home.secondary_cta', '首页咨询按钮', '咨询获取方案'],
|
|
['home.light_cta', '首页轻量对照按钮', '轻量对照'],
|
|
['home.notice', '首页提示', '以真实业务内容为准,后台发布后前台即时生效。'],
|
|
['home.about_title', '首页关于标题', '我们是谁'],
|
|
['home.about_text', '首页关于描述', '围绕企业进化经营哲学,陪跑企业把战略、组织、机制与人的成长转化为可执行、可复盘的经营系统。'],
|
|
['home.cases_title', '首页案例标题', '实践案例'],
|
|
['home.services_title', '首页服务标题', '产品服务 · 下一步行动'],
|
|
['home.insights_title', '首页洞察标题', '认知观察'],
|
|
['global_cta.title', '全站行动标题', '下一步如何行动?'],
|
|
['global_cta.description', '全站行动描述', '任意页面均可直接发起咨询,选择轻量对照或深度陪跑路径。'],
|
|
['global_cta.primary', '全站主按钮', '咨询获取方案'],
|
|
['global_cta.secondary', '全站次按钮', '看看你的企业'],
|
|
['ameba.header_title', '阿美巴页标题', '阿美巴'],
|
|
['ameba.header_description', '阿美巴页简介', '以企业进化经营哲学为底色,坚持利他、务实、陪跑,帮助企业把方法落到经营现场。'],
|
|
['ameba.philosophy_title', '阿美巴哲学标题', '经营哲学'],
|
|
['ameba.practice_title', '阿美巴实践标题', '服务理念'],
|
|
['ameba.about_title', '阿美巴介绍标题', '我们是谁'],
|
|
['ameba.about_text', '阿美巴介绍正文', '围绕企业进化与体系化增长,提供长期、务实、可复盘的企业管理咨询服务。'],
|
|
['footer.note', '页脚说明', '内容以后台配置为准,持续更新。'],
|
|
];
|
|
siteTexts.forEach(([id, label, value]) => db.run(`INSERT OR IGNORE INTO site_texts (id, label, value, updated_at) VALUES (?, ?, ?, ?)`, [id, label, value, now]));
|
|
// 阿美巴页面
|
|
db.get(`SELECT id FROM ameba_page WHERE id=1`, (e, r) => {
|
|
if (!r) db.run(`INSERT INTO ameba_page (id, brand_position, mission, philosophy, practice, updated_at) VALUES (1, ?, ?, ?, ?, ?)`,
|
|
['以企业进化经营哲学为底色', '陪跑企业体系化增长落地', '利他、务实、陪跑', '十年以上实战沉淀', now]);
|
|
});
|
|
// evolution_thought
|
|
db.get(`SELECT id FROM evolution_thought WHERE id=1`, (e, r) => {
|
|
if (!r) db.run(`INSERT INTO evolution_thought (id, content, updated_at) VALUES (1, ?, ?)`, ['进化是持续迭代,而非一次性变革', now]);
|
|
});
|
|
// four_values
|
|
const fvs = [
|
|
['fv-1', 'value1', '战略价值坐标', '观察企业战略清晰度', '战略价值说明【占位】', 100],
|
|
['fv-2', 'value2', '组织价值坐标', '观察组织活力', '组织价值说明【占位】', 90],
|
|
['fv-3', 'value3', '经营价值坐标', '观察经营机制', '经营价值说明【占位】', 80],
|
|
['fv-4', 'value4', '人的价值坐标', '观察人的成长', '人的价值说明【占位】', 70],
|
|
];
|
|
fvs.forEach(f => db.run(`INSERT OR IGNORE INTO four_values (id, key, name, definition, description, sort_order, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)`, [...f, now]));
|
|
// amb_states 固定说明
|
|
const ambs = [
|
|
['amb-A', 'A', 'A 状态|自进化', '具备自驱动', 'A状态说明【占位】', 'A/M/B不绑定企业规模的说明文案固定:同一企业不同价值维度可处不同状态', 100],
|
|
['amb-M', 'M', 'M 状态|待突破', '存在卡点', 'M状态说明【占位】', '同上固定说明', 90],
|
|
['amb-B', 'B', 'B 状态|待构建', '基础待构建', 'B状态说明【占位】', '同上固定说明', 80],
|
|
];
|
|
ambs.forEach(a => db.run(`INSERT OR IGNORE INTO amb_states (id, key, name, definition, description, fixed_note, sort_order, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [...a, now]));
|
|
// ten_systems
|
|
for (let i = 1; i <= 10; i++) {
|
|
db.run(`INSERT OR IGNORE INTO ten_systems (id, name, description, sort_order, updated_at) VALUES (?, ?, ?, ?, ?)`, [`sys-${i}`, `系统${i}`, `第${i}系统说明【占位】`, 100 - i * 5, now]);
|
|
}
|
|
db.get(`SELECT id FROM evolution_process WHERE id=1`, (e, r) => {
|
|
if (!r) db.run(`INSERT INTO evolution_process (id, steps, scenarios, description, updated_at) VALUES (1, ?, ?, ?, ?)`, ['步骤1→步骤2→步骤3', '适用场景【占位】', '企业进化梳理说明', now]);
|
|
});
|
|
db.get(`SELECT id FROM self_check WHERE id=1`, (e, r) => {
|
|
if (!r) db.run(`INSERT INTO self_check (id, guide, questions, logic_text, next_guide, updated_at) VALUES (1, ?, ?, ?, ?, ?)`, ['轻量自我对照引导文案', JSON.stringify([{q:"战略是否清晰?",options:["A","M","B"]}]), '归位逻辑文案【占位】', '下一步引导:预约咨询', now]);
|
|
});
|
|
// 诊断配置
|
|
db.get(`SELECT id FROM diagnosis_config WHERE id=1`, (e, r) => {
|
|
if (!r) db.run(`INSERT INTO diagnosis_config (id, weights, thresholds, templates, share_expire_days, updated_at) VALUES (1, ?, ?, ?, ?, ?)`, [
|
|
JSON.stringify({value1:1, value2:1, value3:1, value4:1}),
|
|
JSON.stringify({B_max:2.5, M_max:3.8}),
|
|
JSON.stringify({
|
|
disclaimer:"本报告基于企业自填信息的初步分析,仅供参考,不替代人工咨询,不做绝对化结论与收益预测。",
|
|
intro:"基于四大价值坐标与A/M/B状态坐标的初步进化分析"
|
|
}),
|
|
30, now
|
|
]);
|
|
});
|
|
// 诊断问卷 16题(每维度4题,单选/量表)
|
|
const diagQuestions = [
|
|
// 价值创造
|
|
['dq-1','value1','价值创造','single','公司未来3年战略方向是否清晰且全员认同?', JSON.stringify([{label:'非常清晰',score:5},{label:'较清晰',score:4},{label:'一般',score:3},{label:'较模糊',score:2},{label:'非常模糊',score:1}]), 100],
|
|
['dq-2','value1','价值创造','scale','战略目标分解到季度/月度的颗粒度', JSON.stringify([{label:'1分',score:1},{label:'2分',score:2},{label:'3分',score:3},{label:'4分',score:4},{label:'5分',score:5}]), 95],
|
|
['dq-3','value1','价值创造','single','是否定期进行战略复盘与迭代?', JSON.stringify([{label:'每月',score:5},{label:'每季度',score:4},{label:'每半年',score:3},{label:'每年',score:2},{label:'很少',score:1}]), 90],
|
|
['dq-4','value1','价值创造','single','核心产品/服务的差异化优势是否明确?', JSON.stringify([{label:'非常明确',score:5},{label:'较明确',score:4},{label:'一般',score:3},{label:'较模糊',score:2},{label:'无',score:1}]), 85],
|
|
// 价值传递
|
|
['dq-5','value2','价值传递','single','组织架构是否支撑战略落地?', JSON.stringify([{label:'非常支撑',score:5},{label:'较支撑',score:4},{label:'一般',score:3},{label:'较不支撑',score:2},{label:'完全不支撑',score:1}]), 80],
|
|
['dq-6','value2','价值传递','scale','跨部门协同效率自评', JSON.stringify([{label:'1分',score:1},{label:'2分',score:2},{label:'3分',score:3},{label:'4分',score:4},{label:'5分',score:5}]), 75],
|
|
['dq-7','value2','价值传递','single','人才梯队与关键岗位备份情况', JSON.stringify([{label:'非常完善',score:5},{label:'较完善',score:4},{label:'一般',score:3},{label:'较薄弱',score:2},{label:'无',score:1}]), 70],
|
|
['dq-8','value2','价值传递','single','企业文化与价值观落地程度', JSON.stringify([{label:'高度落地',score:5},{label:'较好',score:4},{label:'一般',score:3},{label:'较弱',score:2},{label:'无',score:1}]), 65],
|
|
// 价值交付
|
|
['dq-9','value3','价值交付','single','核心业务流程是否标准化且可复制?', JSON.stringify([{label:'高度标准化',score:5},{label:'较标准化',score:4},{label:'部分',score:3},{label:'较弱',score:2},{label:'无',score:1}]), 60],
|
|
['dq-10','value3','价值交付','scale','经营数据(产销存/财务)透明度', JSON.stringify([{label:'1分',score:1},{label:'2分',score:2},{label:'3分',score:3},{label:'4分',score:4},{label:'5分',score:5}]), 55],
|
|
['dq-11','value3','价值交付','single','目标→执行→复盘→改进闭环完整度', JSON.stringify([{label:'非常完整',score:5},{label:'较完整',score:4},{label:'一般',score:3},{label:'较不完整',score:2},{label:'无闭环',score:1}]), 50],
|
|
['dq-12','value3','价值交付','single','客户交付质量与一致性', JSON.stringify([{label:'非常高',score:5},{label:'较高',score:4},{label:'一般',score:3},{label:'较低',score:2},{label:'很低',score:1}]), 45],
|
|
// 价值支持
|
|
['dq-13','value4','价值支持','single','激励机制与价值创造的关联度', JSON.stringify([{label:'高度关联',score:5},{label:'较关联',score:4},{label:'一般',score:3},{label:'较弱',score:2},{label:'无关联',score:1}]), 40],
|
|
['dq-14','value4','价值支持','scale','员工成长与学习机制完善度', JSON.stringify([{label:'1分',score:1},{label:'2分',score:2},{label:'3分',score:3},{label:'4分',score:4},{label:'5分',score:5}]), 35],
|
|
['dq-15','value4','价值支持','single','信息化/数字化工具对经营的支持', JSON.stringify([{label:'非常强',score:5},{label:'较强',score:4},{label:'一般',score:3},{label:'较弱',score:2},{label:'无',score:1}]), 30],
|
|
['dq-16','value4','价值支持','single','企业抗风险与持续改进能力', JSON.stringify([{label:'非常强',score:5},{label:'较强',score:4},{label:'一般',score:3},{label:'较弱',score:2},{label:'很弱',score:1}]), 25],
|
|
];
|
|
diagQuestions.forEach(q=> db.run(`INSERT OR IGNORE INTO diagnosis_questions (id, group_key, group_name, type, title, options, sort_order, status, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, 'published', ?, ?)`, [...q, now, now]));
|
|
console.log('seed done');
|
|
console.log(`admin username: admin\nadmin password: ${adminPassword}`);
|
|
setTimeout(() => process.exit(0), 800);
|