diff --git a/addons/official/view/web/official_product/list_e.html b/addons/official/view/web/official_product/list_e.html
index b9d3ede..0920c3d 100644
--- a/addons/official/view/web/official_product/list_e.html
+++ b/addons/official/view/web/official_product/list_e.html
@@ -5,6 +5,9 @@
{if input('param.pid') == 19 || (isset($res['name']) && strpos($res['name'],'服务') !== false)}
{include file="web/official_product/service_page" /}
+{elseif input('param.pid') == 22 || (isset($res['name']) && strpos($res['name'],'产品') !== false) /}
+
+ {include file="web/official_product/product_page" /}
{else/}
diff --git a/addons/official/view/web/official_product/product_page.html b/addons/official/view/web/official_product/product_page.html
new file mode 100644
index 0000000..cb1646f
--- /dev/null
+++ b/addons/official/view/web/official_product/product_page.html
@@ -0,0 +1,446 @@
+
+
+
+
+
+
+
+ 商业重器
+
+
积厚流光成重器 · 矩阵赋能拓坦途
+
+ 历经千万级真实交易峰值淬炼的标准化工业级成熟商业软件资产,涵盖全场景商城、智能收银、全链路进销存与云原生 SaaS 底座,支持公有云订阅与专有私有化源码买断。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
全场景商城系统
+
+ 面向品牌自营、多商户联营及供应链分销场景的现代化电商交易系统。融合微信小程序生态、社交裂变分销、会员等级权益与全渠道订单履约中枢,平稳支撑秒杀大促交易峰值。
+
+
+ -
+
+ B2B2C / S2B2C 多商户独立入驻结算
+
+ -
+
+ 二级分销、拼团、砍价与营销矩阵
+
+ -
+
+ 微信/H5/App 三端订单与购物车无缝互通
+
+ -
+
+ 供应商自动账单对账与灵活分账结算
+
+
+
+
+
+
+
+
+
+
+
智能商业收银系统
+
+ 专为连锁商超、新零售门店及现代餐饮打造的软硬一体化智能收银解决方案。毫秒级聚合扫码付,深度支持断网离线离线记账与网络恢复自动回传,彻底杜绝掉单死机。
+
+
+ -
+
+ 聚合微信/支付宝/银联云闪付秒级结算
+
+ -
+
+ 极端断网断电离线记账 · 联网零丢失回传
+
+ -
+
+ 双屏客显互动 · 会员人脸/扫码精准核销
+
+ -
+
+ 条码秤、扫码盒、热敏小票机即插即用驱动
+
+
+
+
+
+
+
+
+
+
+
全链路进销存系统
+
+ 实现采购、销售、多级仓储调拨与财务收支一体化穿透。通过批次批号与保质期精细化管理、智能动态补货建议模型与库存实时盘点,助力供应链大幅降低呆滞物料积压。
+
+
+ -
+
+ 批次批号追溯 · 临期保质期智能预警
+
+ -
+
+ 多级仓库异地调拨与 PDA 扫码动态盘点
+
+ -
+
+ 应收应付账期管理 · 实时自动生成毛利报表
+
+ -
+
+ AI 智能安全库存与自动化补货采购建议
+
+
+
+
+
+
+
+
+
+
+
云原生 SaaS 平台
+
+ 企业级多租户商业云原生技术底座。金融级多租户数据逻辑与物理隔离,开箱即用,免运维部署。提供细粒度 RBAC 权限控制引擎与标准 OpenAPI,伴随业务规模无限弹性扩容。
+
+
+ -
+
+ 多租户严密物理/逻辑隔离 · 保证数据主权
+
+ -
+
+ 微服务弹性容器集群 · 自动故障转移 99.99%
+
+ -
+
+ 标准开放 OpenAPI 与第三方业务生态无缝打通
+
+ -
+
+ 多维度租户计量计费与资源配额动态监管
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 对比维度 / 核心特性 |
+ 标准版 (Standard) |
+ 专业版 (Professional) |
+ 旗舰版 (Enterprise) |
+ 专有定制版 (Custom) |
+
+
+
+
+ | 适用客群定位 |
+ 单店/初创型商户 |
+ 成长型自营与连锁 |
+ 集团级全渠道运营 |
+ 大型政企/专网行业龙头 |
+
+
+ | 支持并发日单量 |
+ ≤ 3,000 单/天 |
+ ≤ 20,000 单/天 |
+ 100,000+ 单/天 |
+ 千万级无上限集群弹性扩容 |
+
+
+ | 全渠道商城与分销 |
+ 单店基础小程序 |
+ 多级分销裂变与多商户 |
+ B2B2C/S2B2C 全渠道覆盖 |
+ 按需定制专属交易逻辑与结算 |
+
+
+ | 智能收银与硬件对接 |
+ 基础扫码支付 |
+ 离线记账+主流外设兼容 |
+ 软硬一体全兼容+双屏异显 |
+ 定制工控机与物联网设备对接 |
+
+
+ | 业财进销存与批次追溯 |
+ 基础进出库流水 |
+ 多仓协同+智能补货模型 |
+ 批次批号追溯+业财全自动穿透 |
+ 深度打通集团已有 SAP/用友 ERP |
+
+
+ | 云原生 SaaS 租户隔离 |
+ 逻辑共享隔离 |
+ 多租户独立资源配额 |
+ 金融级逻辑+独立数据库隔离 |
+ 100% 物理专有内网信创隔离 |
+
+
+ | 源码移交与自主二开 |
+ − 不提供 |
+ − 不提供 |
+ √ 开放核心拓展模块 |
+ √ 100% 全量源码工程买断移交 |
+
+
+ | 技术支持与 SLA 维保 |
+ 工作日工单响应 |
+ 7×12 小时技术协助 |
+ 7×24 小时极速响应 |
+ 专属系统架构师 1 对 1 驻场/专线 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 零初始服务器硬件与网络宽带采购投入
+
+ -
+
+ 按年灵活订阅,支持随门店与业务规模平滑升级
+
+ -
+
+ 纳海川官方运维团队全天候守护与自动备份
+
+ -
+
+ 免费享受持续迭代的功能更新与系统性能调优
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 100% 移交规范注释工程源码与全部数据库字典
+
+ -
+
+ 数据完全在客户专有内网封闭存储,零合规外泄风险
+
+ -
+
+ 自研技术团队拥有无限二次开发、扩展与定制权限
+
+ -
+
+ 首年享专属架构师技术维保与技术团队赋能培训
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
即刻体验
+
申请成熟产品沙箱在线演示
+
+ 我们为企业决策人准备了全功能在线演示沙箱环境,涵盖商城前台多端、门店智能收银台及进销存中央管理后台,您可即时获取体验账号,亲测系统流畅度与业务契合度。
+
+
+
+
+
真实业务数据模拟,体验秒级聚合扫码与进销存扣减
+
+
+
+
支持预约资深架构师进行 1 对 1 专属业务流程联调演示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
商业咨询
+
准备好用成熟工业级产品矩阵驱动业务跃升了吗?
+
+ 纳海川解决方案专家团队随时待命,为您提供深度业务选型评估、专属架构建议与商务方案,24 小时内快速响应对接。
+
+
+
+
+
+
+
diff --git a/public/assets/addons/official/css/modern_nhc.css b/public/assets/addons/official/css/modern_nhc.css
index d436bad..00bb336 100644
--- a/public/assets/addons/official/css/modern_nhc.css
+++ b/public/assets/addons/official/css/modern_nhc.css
@@ -2173,3 +2173,339 @@ img {
background: var(--primary-hover);
box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25);
}
+
+/* ==========================================================================
+ 产品独立页专有样式 (Products Page Modern Style)
+ ========================================================================== */
+
+/* 产品矩阵全景板块 */
+.nhc-product-matrix-section {
+ padding: 90px 0;
+}
+
+.nhc-product-matrix-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 32px;
+}
+
+.nhc-product-full-card {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 40px;
+ box-shadow: var(--shadow-subtle);
+ transition: all 0.3s ease;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.nhc-product-full-card:hover {
+ border-color: rgba(37, 99, 235, 0.35);
+ box-shadow: 0 16px 36px -10px rgba(15, 23, 42, 0.08);
+ transform: translateY(-2px);
+}
+
+.nhc-product-card-header {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ margin-bottom: 20px;
+}
+
+.nhc-product-icon-wrap {
+ width: 48px;
+ height: 48px;
+ border-radius: 8px;
+ background: var(--primary-light);
+ color: var(--primary);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 16px;
+}
+
+.nhc-product-card-title {
+ font-family: var(--font-serif);
+ font-size: 24px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 12px;
+}
+
+.nhc-product-card-desc {
+ font-size: 14px;
+ line-height: 1.8;
+ color: var(--text-secondary);
+ margin-bottom: 24px;
+}
+
+.nhc-product-module-list {
+ list-style: none;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 10px;
+ margin-bottom: 28px;
+ border-top: 1px dashed #E2E8F0;
+ padding-top: 20px;
+}
+
+.nhc-product-module-item {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 13px;
+ color: var(--text-primary);
+}
+
+.nhc-product-module-item svg {
+ color: var(--primary);
+ flex-shrink: 0;
+}
+
+.nhc-product-card-footer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-top: 1px solid #F1F5F9;
+ padding-top: 18px;
+}
+
+.nhc-product-deploy-type {
+ font-size: 12px;
+ color: var(--text-muted);
+}
+
+/* 版本选型对比表格 */
+.nhc-editions-section {
+ padding: 90px 0;
+ background-color: var(--bg-secondary);
+ border-top: 1px solid var(--border-color);
+ border-bottom: 1px solid var(--border-color);
+}
+
+.nhc-table-container {
+ overflow-x: auto;
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ box-shadow: var(--shadow-subtle);
+}
+
+.nhc-editions-table {
+ width: 100%;
+ border-collapse: collapse;
+ text-align: left;
+ font-size: 14px;
+}
+
+.nhc-editions-table th,
+.nhc-editions-table td {
+ padding: 18px 24px;
+ border-bottom: 1px solid var(--border-color);
+ border-right: 1px solid #F1F5F9;
+}
+
+.nhc-editions-table th:last-child,
+.nhc-editions-table td:last-child {
+ border-right: none;
+}
+
+.nhc-editions-table thead th {
+ background: #F8FAFC;
+ font-family: var(--font-serif);
+ font-size: 16px;
+ font-weight: 700;
+ color: var(--text-primary);
+}
+
+.nhc-editions-table thead th.featured {
+ background: #EFF6FF;
+ color: var(--primary);
+ border-top: 2px solid var(--primary);
+}
+
+.nhc-editions-table tbody tr:hover td {
+ background: #FAFAFA;
+}
+
+.nhc-editions-table tbody tr:hover td.featured {
+ background: #F0F7FF;
+}
+
+.nhc-editions-table td.featured {
+ background: #F8FAFC;
+}
+
+.nhc-check-yes {
+ color: #10B981;
+ font-weight: 700;
+}
+
+.nhc-check-no {
+ color: #CBD5E1;
+}
+
+/* 部署模式与商业授权板块 */
+.nhc-pricing-section {
+ padding: 90px 0;
+}
+
+.nhc-pricing-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 32px;
+ max-width: 960px;
+ margin: 0 auto;
+}
+
+.nhc-pricing-card {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 40px;
+ box-shadow: var(--shadow-subtle);
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.nhc-pricing-card.featured {
+ border-color: var(--primary);
+ box-shadow: 0 12px 30px -8px rgba(37, 99, 235, 0.15);
+}
+
+.nhc-pricing-card.featured::before {
+ content: "推荐方案";
+ position: absolute;
+ top: -12px;
+ right: 24px;
+ background: var(--primary);
+ color: #FFFFFF;
+ font-size: 11px;
+ padding: 2px 10px;
+ border-radius: 12px;
+ font-weight: 600;
+}
+
+.nhc-pricing-header {
+ margin-bottom: 24px;
+ padding-bottom: 20px;
+ border-bottom: 1px solid #F1F5F9;
+}
+
+.nhc-pricing-title {
+ font-family: var(--font-serif);
+ font-size: 22px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 8px;
+}
+
+.nhc-pricing-subtitle {
+ font-size: 13px;
+ color: var(--text-secondary);
+}
+
+.nhc-pricing-features {
+ list-style: none;
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ margin-bottom: 32px;
+ font-size: 14px;
+}
+
+.nhc-pricing-feature-item {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ color: var(--text-primary);
+}
+
+.nhc-pricing-feature-item svg {
+ color: var(--primary);
+ flex-shrink: 0;
+}
+
+/* 预约演示沙箱板块 */
+.nhc-demo-section {
+ padding: 80px 0;
+ background-color: var(--bg-secondary);
+ border-top: 1px solid var(--border-color);
+}
+
+.nhc-demo-box {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 48px;
+ max-width: 880px;
+ margin: 0 auto;
+ box-shadow: var(--shadow-subtle);
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 40px;
+ align-items: center;
+}
+
+.nhc-demo-info h3 {
+ font-family: var(--font-serif);
+ font-size: 26px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 14px;
+}
+
+.nhc-demo-info p {
+ font-size: 14px;
+ line-height: 1.8;
+ color: var(--text-secondary);
+ margin-bottom: 20px;
+}
+
+.nhc-demo-badges {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.nhc-demo-badge-item {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 13px;
+ color: var(--text-primary);
+}
+
+.nhc-demo-badge-item svg {
+ color: #10B981;
+}
+
+/* 响应式微调 */
+@media (max-width: 1024px) {
+ .nhc-product-matrix-grid {
+ grid-template-columns: 1fr;
+ }
+ .nhc-pricing-grid {
+ grid-template-columns: 1fr;
+ }
+ .nhc-demo-box {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (max-width: 768px) {
+ .nhc-product-full-card {
+ padding: 24px;
+ }
+ .nhc-product-module-list {
+ grid-template-columns: 1fr;
+ }
+ .nhc-demo-box {
+ padding: 24px;
+ }
+}
diff --git a/tests/ProductsPageTest.php b/tests/ProductsPageTest.php
new file mode 100644
index 0000000..7e1051a
--- /dev/null
+++ b/tests/ProductsPageTest.php
@@ -0,0 +1,137 @@
+htmlContent = '';
+ if (file_exists($productFile)) {
+ $this->htmlContent .= file_get_contents($productFile) . "\n";
+ }
+ if (file_exists($listFile)) {
+ $this->htmlContent .= file_get_contents($listFile) . "\n";
+ }
+ if (file_exists($cssFile)) {
+ $this->cssContent = file_get_contents($cssFile);
+ }
+ }
+
+ public function run()
+ {
+ echo "=== 开始执行产品独立页设计规范与内容完整性测试 (TDD) ===\n";
+
+ // 1. 品牌名称必须为纳海川
+ $this->testBrandName();
+
+ // 2. 必备四大产品线
+ $this->testProductLines();
+
+ // 3. 必备板块测试:矩阵、功能、版本、定价、演示 (AGENTS.md 规范)
+ $this->testEssentialSections();
+
+ // 4. 去除 AI 味道:真实具体的业务参数与商业能力
+ $this->testNoAiCharacteristics();
+
+ // 5. 禁止项测试(严禁 emoji)
+ $this->testForbiddenElements();
+
+ // 6. 色彩与设计规范
+ $this->testDesignTokens();
+
+ echo "\n测试结果: {$this->passed} 通过, {$this->failed} 失败\n";
+ if ($this->failed > 0) {
+ exit(1);
+ }
+ }
+
+ private function assert($condition, $message)
+ {
+ if ($condition) {
+ echo " [PASS] {$message}\n";
+ $this->passed++;
+ } else {
+ echo " [FAIL] {$message}\n";
+ $this->failed++;
+ }
+ }
+
+ public function testBrandName()
+ {
+ $this->assert(strpos($this->htmlContent, '纳海川') !== false, "产品页必须明确包含品牌名称【纳海川】");
+ $hasWrongAbbr = preg_match('/纳川(?![海])/u', $this->htmlContent);
+ $this->assert(!$hasWrongAbbr, "产品页严禁错误简称为【纳川】");
+ }
+
+ public function testProductLines()
+ {
+ $this->assert(strpos($this->htmlContent, '商城') !== false, "必须深度包含【商城系统】产品线");
+ $this->assert(strpos($this->htmlContent, '收银') !== false, "必须深度包含【智能收银系统】产品线");
+ $this->assert(strpos($this->htmlContent, '进销存') !== false, "必须深度包含【进销存系统】产品线");
+ $this->assert(strpos($this->htmlContent, 'SaaS') !== false, "必须深度包含【SaaS版本/云原生平台】产品线");
+ }
+
+ public function testEssentialSections()
+ {
+ // 按照 AGENTS.md 规范:产品页含矩阵、功能、版本、定价、演示
+ $hasMatrix = (strpos($this->htmlContent, 'nhc-product-matrix') !== false || strpos($this->htmlContent, '产品矩阵') !== false || strpos($this->htmlContent, '商业矩阵') !== false);
+ $this->assert($hasMatrix, "产品页必须包含【矩阵】(产品矩阵全景)板块");
+
+ $hasFeatures = (strpos($this->htmlContent, 'nhc-product-features') !== false || strpos($this->htmlContent, '功能架构') !== false || strpos($this->htmlContent, '核心功能') !== false);
+ $this->assert($hasFeatures, "产品页必须包含【功能】(功能深度架构与模块拆解)板块");
+
+ $hasEditions = (strpos($this->htmlContent, 'nhc-product-editions') !== false || strpos($this->htmlContent, '版本对比') !== false || strpos($this->htmlContent, '版本选型') !== false);
+ $this->assert($hasEditions, "产品页必须包含【版本】(多商业版本功能对比)板块");
+
+ $hasPricing = (strpos($this->htmlContent, 'nhc-product-pricing') !== false || strpos($this->htmlContent, '定价') !== false || strpos($this->htmlContent, '部署模式') !== false || strpos($this->htmlContent, '商业授权') !== false);
+ $this->assert($hasPricing, "产品页必须包含【定价】(部署模式与商业合作/定价策略)板块");
+
+ $hasDemo = (strpos($this->htmlContent, 'nhc-product-demo') !== false || strpos($this->htmlContent, '在线演示') !== false || strpos($this->htmlContent, '预约演示') !== false || strpos($this->htmlContent, '申请演示') !== false);
+ $this->assert($hasDemo, "产品页必须包含【演示】(在线体验/沙箱演示预约)板块");
+ }
+
+ public function testNoAiCharacteristics()
+ {
+ // 真实具体参数:多商户、离线记账、批次批号、多租户等
+ $hasRealParams = (strpos($this->htmlContent, '多商户') !== false || strpos($this->htmlContent, '分销') !== false)
+ && (strpos($this->htmlContent, '离线') !== false || strpos($this->htmlContent, '扫码') !== false)
+ && (strpos($this->htmlContent, '批次') !== false || strpos($this->htmlContent, '盘点') !== false)
+ && (strpos($this->htmlContent, '多租户') !== false || strpos($this->htmlContent, '隔离') !== false);
+ $this->assert($hasRealParams, "去AI味道:必须展示具体的商业系统功能参数与落地特性,拒绝假大空套话");
+
+ // 商业版本清晰边界
+ $hasVersions = (strpos($this->htmlContent, '标准版') !== false || strpos($this->htmlContent, '企业版') !== false || strpos($this->htmlContent, '旗舰版') !== false || strpos($this->htmlContent, '定制') !== false);
+ $this->assert($hasVersions, "去AI味道:必须具备严谨清晰的商业版本划分");
+ }
+
+ public function testForbiddenElements()
+ {
+ $hasEmoji = preg_match('/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}]/u', $this->htmlContent);
+ $this->assert(!$hasEmoji, "产品页严禁使用任何 emoji 表情符号");
+ }
+
+ public function testDesignTokens()
+ {
+ $hasSerif = (stripos($this->cssContent, 'SimSun') !== false || stripos($this->cssContent, 'Songti') !== false || stripos($this->cssContent, 'Noto Serif SC') !== false);
+ $this->assert($hasSerif, "必须沿用宋体标题规范");
+
+ $hasPrimary = (stripos($this->cssContent, '#2563EB') !== false || stripos($this->cssContent, '#2563eb') !== false);
+ $this->assert($hasPrimary, "必须沿用科技蓝 #2563EB 主色规范");
+ }
+}
+
+$test = new ProductsPageTest();
+$test->run();