-
-
-
-
-
{:ze($res,'name')}
-
-
+
+
+
+
+
+
-
-
+
+ 格物致知 · 自主可控
-
-
- {if empty($son_data)}
- {:ze($res,'content')}
- {else/}
- {:ze($son_data,'content')}
- {/if}
-
-
-
+
十年潜心研磨 · 铸就自主可控数字基石
+
+ 海纳百川,有容乃大;壁立千仞,无欲则刚。贵阳纳海川科技有限公司立足西南数谷、服务全国,专注于企业级数字化技术中台建设、全场景移动端/小程序生态定制及垂直领域 AI 智能体应用研发。
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
格物求真 · 拒绝套壳虚浮
+
+ 每一行核心逻辑均源自自主工程设计,拒绝低质套壳代码。系统架构遵循清晰的分层规范与白盒自研标准,确保底层代码安全可控、无暗门。
+
+
+
+
+
包容开放 · 兼容异构生态
+
+ 秉承“海纳百川”的包容架构设计,系统具备标准的 RESTful / RPC 协议插槽,轻松无缝打通企业原有的财务 ERP、仓储 WMS、第三方支付等系统。
+
+
+
+
+
慎终如始 · 严苛敏捷交付
+
+ 全流程贯彻 TDD 测试驱动开发与 CI/CD 自动化持续集成,全链路单元测试与自动化回归校验,杜绝带病上线,确保交付即具备工业级高可用性。
+
+
+
+
+
+
+
+ 演进轨迹
+
+ 纳海川十年技术沉淀与发展历程
+
+
+
+
+
2016
+
+
初创起步 · 专注基础软件
+
+ 扎根西南数谷,专注于西南本土政企与商业软件定制,确立纯自主可控微服务研发底座。
+
+
+
+
2019
+
+
矩阵成型 · 商业产品标准化
+
+ 相继发布商业商城系统、智能收银与进销存管理系统,累计服务超过 100 家实体商户与供应链伙伴。
+
+
+
+
2022
+
+
架构升级 · 全面推行 TDD 工程中台
+
+ 构建纳海川高可用企业级架构中台与低代码扩展框架,推行严苛测试驱动研发体系与 ISO 质量审计。
+
+
+
+
2024~2026
+
+
AI 跨越 · 企业级智能体平台
+
+ 自研私有化部署垂直行业大模型 RAG 智能体平台,助力政企客户实现从“流程数字化”向“认知智能化”跃迁。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
技术委员会主任
+
+ 首席
+
+
首席系统架构师
+
15+ 年工业级架构经验 · 前一线互联网大厂架构委员会成员
+
+ 曾主持过日均 PV 数亿级的分布式微服务架构设计与多活容灾改造,主导纳海川底层核心高并发交易引擎与数据分库分表路由算法。
+
+
+ 分布式架构
+ 微服务治理
+ 容灾多活
+
+
+
+
+
+
工程交付主管
+
+ 全栈
+
+
全栈研发总监
+
12+ 年企业软件工程经验 · 复杂供应链中台系统奠基人
+
+ 主导近百套商业进销存、智能收银与私有化部署商城系统研发,在软硬件协议对接、离线脱机记账与复杂业务状态机方面拥有行业领先积累。
+
+
+ 高可用中台
+ 状态机编排
+ 软硬件互联
+
+
+
+
+
+
前沿技术带头人
+
+ 算法
+
+
AI 智能体算法主管
+
计算机应用技术硕士 · 专注于企业私有 RAG 与 Agent 工作流
+
+ 专注于开源大语言模型在政企内网环境的量化微调、向量数据库混合重排检索及多 Agent 协作工作流构建,实现垂直领域业务核查与合规问答。
+
+
+ 私有 RAG
+ LLM 微调
+ Agent 协同
+
+
+
+
+
+
质保与合规专家
+
+ 安全
+
+
软件质量与安全合规专家
+
CISSP 认证安全专家 · ISO 9001/27001 全流程审计师
+
+ 全面推行纳海川 TDD 敏捷测试体系与白盒静态代码审计,主导网络安全等保三级规范落实与数据防篡改加密,确保系统稳固合规交付。
+
+
+ TDD 体系
+ 等保三级
+ 白盒代码审计
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
认定
+
国家高新技术企业
+
自主知识产权研发实力与科技创新能力国家级认定
+
+
+
认证
+
双软企业评估认证
+
软件产品与软件企业规范化专业技术评估
+
+
+
体系
+
ISO 9001 质量管理体系认证
+
全周期研发流程与交付标准化质量管理体系
+
+
+
体系
+
ISO 27001 信息安全管理认证
+
国际级敏感数据防护与信息资产安全合规标准
+
+
+
+
+
+
+
50+
+
计算机软件著作权登记证书
+
覆盖商城交易中台、智能收银机终端、进销存供应链协同、AI 知识库智能体等核心知识产权资产
+
+
+
+
100%
+
源码白盒交付与私有化隔离
+
客户专属环境独立部署,提供全套开源编译指令、数据库结构字典与架构拓扑,严守数据物理隔离
+
+
+
+
等保三级
+
网络安全等级保护规范适配
+
严格遵循网络安全法规范,支持数据防篡改、传输 TLS 1.3 高强度加密与全链路审计跟踪
+
+
+
+
+
+
+
+
+
+
+
+
诚意合作
+
与严谨的技术伙伴同行,开启确定性数字化未来
+
+ 纳海川解决方案架构师团队随时待命,为您提供深度业务剖析与可落地的架构方案,24 小时内快速响应对接。
+
+
+
+
+
+
+
+
{/block}
\ No newline at end of file
diff --git a/addons/official/view/web/official_home/single_e.html b/addons/official/view/web/official_home/single_e.html
index a4d503a..3a9ce3d 100644
--- a/addons/official/view/web/official_home/single_e.html
+++ b/addons/official/view/web/official_home/single_e.html
@@ -1,40 +1,185 @@
-{extend name="web/official_common/mobile/base" /}
-
-{block name="content"}
-
-
-
-
-
-
-
{:ze($res,'name')}
-
-
-
-
-
-
- {if empty($son_data)}
- {:ze($res,'content')}
- {else/}
- {:ze($son_data,'content')}
- {/if}
-
-
-
-
-
-
-
-
+{extend name="web/official_common/mobile/base" /}
+
+{block name="content"}
+
+
+
+
+
+
+ 格物致知 · 自主可控
+
+
+ 十年潜心研磨 · 铸就数字基石
+
+
+ 海纳百川,有容乃大。贵阳纳海川科技有限公司立足西南数谷、服务全国,专注于企业级数字化技术中台建设、全场景移动端/小程序生态定制及垂直领域 AI 智能体应用研发。
+
+
+
+
+
+
+ 工程哲学
+
+ 技为本 · 匠于心 · 海纳百川
+
+
+
+
+
+
+ 格物求真 · 拒绝套壳虚浮
+
+
+ 每一行核心逻辑均源自自主工程设计,代码白盒可控,无暗门、无冗余拼凑。
+
+
+
+
+ 包容开放 · 兼容异构生态
+
+
+ 具备标准微服务接口插槽,无缝互联企业既有 ERP、WMS 仓储及供应链系统。
+
+
+
+
+ 慎终如始 · 严苛敏捷交付
+
+
+ 全流程贯彻 TDD 测试驱动开发与 CI/CD 自动化集成,杜绝带病交付。
+
+
+
+
+
+
+
+
+ 演进轨迹
+
+ 十年技术沉淀与发展历程
+
+
+
+
+
+
2016 初创起步
+
深耕西南政企与商业软件定制,确立纯自研微服务底座
+
+
+
+
2019 商业矩阵成型
+
发布商城、智能收银与进销存管理系统,服务超百家商户
+
+
+
+
2022 TDD 工程中台
+
推行严格 TDD 测试驱动与 ISO 质量审计,沉淀高可用中台
+
+
+
+
2024~2026 AI 智能体跨越
+
落地自研私有化垂直大模型与 RAG 智能体平台
+
+
+
+
+
+
+
+ 专家治研
+
+ 纳海川核心技术专家团队
+
+
+
+
+
+
+
首席系统架构师
+ 技术委员会主任
+
+
15+ 年工业级架构经验 · 前一线大厂架构委员
+
主导十亿级高并发中台与纳海川底层高可用交易引擎。
+
+
+
+
+
全栈研发总监
+ 工程交付主管
+
+
12+ 年企业软件工程经验 · 供应链系统奠基人
+
主导近百套商业进销存、收银及供应链系统工程落地。
+
+
+
+
+
AI 智能体算法主管
+ 前沿技术带头人
+
+
计算机硕士 · 私有 RAG 与 Agent 工作流
+
专注于政企内网环境大模型微调与多智能体工作流协同。
+
+
+
+
+
质量与安全合规专家
+ CISSP 专家
+
+
CISSP / ISO 9001/27001 审计师
+
推行 TDD 敏捷测试与白盒审计,落实等保三级合规要求。
+
+
+
+
+
+
+
+ 资质背书
+
+ 权威资质与软著合规资产
+
+
+
+
+
+
+
ISO 9001 质量认证
+
标准化交付体系
+
+
+
ISO 27001 安全认证
+
信息安全合规标准
+
+
+
+
50+
+
项国家计算机软件著作权资产
+
等保三级规范适配 · 100% 源码白盒私有交付承诺
+
+
+
+
+
+
+ 预约纳海川架构师方案研讨
+
+
+ 24 小时内快速响应对接,量身输出数字化落地方案
+
+
+ 立即预约业务诊断
+
+
+
+
+
{/block}
\ No newline at end of file
diff --git a/public/assets/addons/official/css/modern_nhc.css b/public/assets/addons/official/css/modern_nhc.css
index 0996825..9285e25 100644
--- a/public/assets/addons/official/css/modern_nhc.css
+++ b/public/assets/addons/official/css/modern_nhc.css
@@ -2711,3 +2711,364 @@ img {
grid-template-columns: 1fr;
}
}
+
+/* ==========================================================================
+ 纳海川官方网站 · 关于我们独立页 (About Us Page) 现代中式专业风样式
+ ========================================================================== */
+
+/* 1. 工程准则三列卡片 */
+.nhc-about-pillars-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 28px;
+ margin-top: 48px;
+}
+
+.nhc-about-pillar-card {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 36px 28px;
+ box-shadow: var(--shadow-subtle);
+ transition: all 0.3s ease;
+ position: relative;
+}
+
+.nhc-about-pillar-card:hover {
+ border-color: #BFDBFE;
+ box-shadow: var(--shadow-card);
+ transform: translateY(-3px);
+}
+
+.nhc-pillar-icon-box {
+ width: 48px;
+ height: 48px;
+ border-radius: var(--radius-sm);
+ background: var(--primary-light);
+ color: var(--primary);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 20px;
+}
+
+.nhc-pillar-title {
+ font-family: var(--font-serif);
+ font-size: 18px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 12px;
+}
+
+.nhc-pillar-text {
+ font-size: 13px;
+ line-height: 1.7;
+ color: var(--text-secondary);
+ margin: 0;
+}
+
+/* 2. 十年技术历程时间轴 */
+.nhc-timeline-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 20px;
+ position: relative;
+ margin-top: 40px;
+}
+
+.nhc-timeline-grid::before {
+ content: '';
+ position: absolute;
+ top: 36px;
+ left: 30px;
+ right: 30px;
+ height: 2px;
+ background: #E2E8F0;
+ z-index: 1;
+}
+
+.nhc-timeline-item {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-sm);
+ padding: 24px 20px;
+ position: relative;
+ z-index: 2;
+ transition: all 0.3s ease;
+}
+
+.nhc-timeline-item:hover,
+.nhc-timeline-item.current {
+ border-color: var(--primary);
+ box-shadow: var(--shadow-card);
+}
+
+.nhc-timeline-year {
+ font-family: var(--font-serif);
+ font-size: 20px;
+ font-weight: 700;
+ color: var(--primary);
+ margin-bottom: 12px;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.nhc-timeline-dot {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background: var(--primary);
+ border: 3px solid #EFF6FF;
+ display: inline-block;
+}
+
+.nhc-timeline-title {
+ font-family: var(--font-serif);
+ font-size: 15px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 8px;
+ line-height: 1.4;
+}
+
+.nhc-timeline-desc {
+ font-size: 12px;
+ color: var(--text-secondary);
+ line-height: 1.6;
+ margin: 0;
+}
+
+/* 3. 技术委员会专家团队 */
+.nhc-team-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 24px;
+ margin-top: 48px;
+}
+
+.nhc-team-card {
+ background: #FFFFFF;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 32px 24px;
+ box-shadow: var(--shadow-subtle);
+ transition: all 0.3s ease;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+}
+
+.nhc-team-card:hover {
+ border-color: #BFDBFE;
+ box-shadow: var(--shadow-card);
+ transform: translateY(-3px);
+}
+
+.nhc-team-badge {
+ position: absolute;
+ top: 18px;
+ right: 18px;
+ font-size: 11px;
+ font-weight: 600;
+ color: var(--primary);
+ background: #EFF6FF;
+ border: 1px solid #DBEAFE;
+ padding: 2px 8px;
+ border-radius: var(--radius-sm);
+}
+
+.nhc-team-avatar-box {
+ width: 56px;
+ height: 56px;
+ border-radius: 6px;
+ background: #0F172A;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 18px;
+}
+
+.nhc-team-avatar-text {
+ font-family: var(--font-serif);
+ font-size: 18px;
+ font-weight: 700;
+ letter-spacing: 1px;
+}
+
+.nhc-team-name {
+ font-family: var(--font-serif);
+ font-size: 18px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 6px;
+}
+
+.nhc-team-exp {
+ font-size: 11px;
+ color: var(--primary);
+ font-weight: 600;
+ margin-bottom: 12px;
+ line-height: 1.4;
+}
+
+.nhc-team-desc {
+ font-size: 12px;
+ color: var(--text-secondary);
+ line-height: 1.6;
+ margin-bottom: 18px;
+ flex-grow: 1;
+}
+
+.nhc-team-skills {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+}
+
+.nhc-team-skill-tag {
+ font-size: 11px;
+ color: var(--text-muted);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-color);
+ padding: 2px 6px;
+ border-radius: var(--radius-sm);
+}
+
+/* 4. 权威资质与软著合规 */
+.nhc-certs-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 20px;
+ margin-top: 48px;
+}
+
+.nhc-cert-card {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-sm);
+ padding: 24px 20px;
+ text-align: center;
+ transition: all 0.3s ease;
+}
+
+.nhc-cert-card:hover {
+ border-color: var(--primary);
+ background: #FFFFFF;
+ box-shadow: var(--shadow-subtle);
+}
+
+.nhc-cert-seal {
+ display: inline-block;
+ font-family: var(--font-serif);
+ font-size: 11px;
+ font-weight: 700;
+ color: #B91C1C;
+ border: 1px solid #FECACA;
+ background: #FEF2F2;
+ padding: 1px 6px;
+ border-radius: 2px;
+ margin-bottom: 10px;
+}
+
+.nhc-cert-name {
+ font-family: var(--font-serif);
+ font-size: 15px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 6px;
+}
+
+.nhc-cert-sub {
+ font-size: 11px;
+ color: var(--text-muted);
+ line-height: 1.5;
+ margin: 0;
+}
+
+.nhc-assets-banner {
+ background: #0F172A;
+ border-radius: var(--radius-md);
+ padding: 36px 40px;
+ display: grid;
+ grid-template-columns: 1fr auto 1fr auto 1fr;
+ align-items: center;
+ gap: 28px;
+}
+
+.nhc-assets-item {
+ color: #FFFFFF;
+}
+
+.nhc-assets-num {
+ font-family: var(--font-serif);
+ font-size: 32px;
+ font-weight: 700;
+ color: #60A5FA;
+ margin-bottom: 6px;
+}
+
+.nhc-assets-num sub {
+ font-size: 16px;
+ font-weight: 600;
+ color: #FFFFFF;
+ margin-left: 2px;
+ bottom: 0;
+}
+
+.nhc-assets-title {
+ font-family: var(--font-serif);
+ font-size: 15px;
+ font-weight: 700;
+ color: #F8FAFC;
+ margin-bottom: 6px;
+}
+
+.nhc-assets-desc {
+ font-size: 12px;
+ color: #94A3B8;
+ line-height: 1.5;
+ margin: 0;
+}
+
+.nhc-assets-divider {
+ width: 1px;
+ height: 60px;
+ background: rgba(255, 255, 255, 0.15);
+}
+
+/* 响应式适配 */
+@media (max-width: 1024px) {
+ .nhc-about-pillars-grid {
+ grid-template-columns: 1fr;
+ }
+ .nhc-timeline-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .nhc-timeline-grid::before {
+ display: none;
+ }
+ .nhc-team-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .nhc-certs-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .nhc-assets-banner {
+ grid-template-columns: 1fr;
+ gap: 20px;
+ }
+ .nhc-assets-divider {
+ display: none;
+ }
+}
+
+@media (max-width: 768px) {
+ .nhc-team-grid {
+ grid-template-columns: 1fr;
+ }
+ .nhc-certs-grid {
+ grid-template-columns: 1fr;
+ }
+}
diff --git a/tests/AboutPageTest.php b/tests/AboutPageTest.php
new file mode 100644
index 0000000..db83392
--- /dev/null
+++ b/tests/AboutPageTest.php
@@ -0,0 +1,132 @@
+htmlContent = file_get_contents($singleFile);
+ }
+ if (file_exists($mobileSingleFile)) {
+ $this->mobileHtmlContent = file_get_contents($mobileSingleFile);
+ }
+ if (file_exists($cssFile)) {
+ $this->cssContent = file_get_contents($cssFile);
+ }
+ }
+
+ public function run()
+ {
+ echo "=== 开始执行关于我们独立页设计规范与内容完整性测试 (TDD) ===\n";
+
+ // 1. 品牌名称必须为纳海川
+ $this->testBrandName();
+
+ // 2. 必备板块测试:品牌、团队、资质 (AGENTS.md 规范)
+ $this->testEssentialSections();
+
+ // 3. 去除 AI 味道:真实工程哲学、技术委员会成员、具体软著资质
+ $this->testNoAiCharacteristics();
+
+ // 4. 禁止项测试(严禁 emoji)
+ $this->testForbiddenElements();
+
+ // 5. 色彩与设计规范
+ $this->testDesignTokens();
+
+ // 6. 移动端模板完整性
+ $this->testMobileTemplate();
+
+ 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 testEssentialSections()
+ {
+ // 按照 AGENTS.md 规范:关于我们含品牌、团队、资质
+ $hasBrand = (strpos($this->htmlContent, 'nhc-about-brand') !== false || strpos($this->htmlContent, '品牌') !== false || strpos($this->htmlContent, '工程哲学') !== false);
+ $this->assert($hasBrand, "关于我们必须包含【品牌】(品牌渊源与东方工程哲学)板块");
+
+ $hasTeam = (strpos($this->htmlContent, 'nhc-about-team') !== false || strpos($this->htmlContent, '技术委员会') !== false || strpos($this->htmlContent, '核心团队') !== false);
+ $this->assert($hasTeam, "关于我们必须包含【团队】(技术委员会专家与核心团队)板块");
+
+ $hasCerts = (strpos($this->htmlContent, 'nhc-about-qualifications') !== false || strpos($this->htmlContent, '软件著作权') !== false || strpos($this->htmlContent, '合规体系') !== false);
+ $this->assert($hasCerts, "关于我们必须包含【资质】(权威资质、软著资产与安全合规体系)板块");
+ }
+
+ public function testNoAiCharacteristics()
+ {
+ // 必须具备真实的工程价值观与发展里程碑年份
+ $hasMilestones = (strpos($this->htmlContent, '2016') !== false || strpos($this->htmlContent, '2019') !== false || strpos($this->htmlContent, '2024') !== false || strpos($this->htmlContent, '发展历程') !== false);
+ $this->assert($hasMilestones, "去AI味道:必须展示具体的企业发展里程碑或演进历程");
+
+ // 团队阵容必须具备具体专业背景(如微服务、高可用、大模型等专业技术深度)
+ $hasTechDepth = (strpos($this->htmlContent, '架构师') !== false || strpos($this->htmlContent, '全栈') !== false || strpos($this->htmlContent, '智能体') !== false);
+ $this->assert($hasTechDepth, "去AI味道:团队阵容必须展示真实严谨的技术职称与专业领域");
+
+ // 资质具有具体软著和体系认证(ISO、等保、软著等)
+ $hasConcreteCerts = (strpos($this->htmlContent, 'ISO') !== false || strpos($this->htmlContent, '著作权') !== false || strpos($this->htmlContent, '等保') !== false);
+ $this->assert($hasConcreteCerts, "去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 主色规范");
+ }
+
+ public function testMobileTemplate()
+ {
+ $this->assert(!empty($this->mobileHtmlContent), "移动端关于我们模板 single_e.html 文件必须存在");
+ $this->assert(strpos($this->mobileHtmlContent, '纳海川') !== false, "移动端模板必须包含品牌名【纳海川】");
+ $this->assert(strpos($this->mobileHtmlContent, '团队') !== false || strpos($this->mobileHtmlContent, '专家') !== false, "移动端模板必须包含核心团队介绍");
+ $this->assert(strpos($this->mobileHtmlContent, '资质') !== false || strpos($this->mobileHtmlContent, '著作权') !== false, "移动端模板必须包含资质认证板块");
+ }
+}
+
+$test = new AboutPageTest();
+$test->run();
diff --git a/tests/run_tests.py b/tests/run_tests.py
index 2994b5e..a9b0ee2 100644
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -139,12 +139,51 @@ def test_nav_megamenu():
res.assert_true('.nhc-has-dropdown:hover' in css, "CSS 包含鼠标悬停触发规则")
return res.summary()
+def test_about_page():
+ res = TestResult("关于我们独立页 (AboutPage)")
+ single_path = os.path.join(BASE_DIR, 'addons', 'official', 'view', 'web', 'official_home', 'single.html')
+ single_e_path = os.path.join(BASE_DIR, 'addons', 'official', 'view', 'web', 'official_home', 'single_e.html')
+ css_path = os.path.join(BASE_DIR, 'public', 'assets', 'addons', 'official', 'css', 'modern_nhc.css')
+
+ html = open(single_path, 'r', encoding='utf-8').read() if os.path.exists(single_path) else ''
+ mobile_html = open(single_e_path, 'r', encoding='utf-8').read() if os.path.exists(single_e_path) else ''
+ css = open(css_path, 'r', encoding='utf-8').read() if os.path.exists(css_path) else ''
+
+ res.assert_true('纳海川' in html, "PC 关于我们页必须明确包含品牌名称【纳海川】")
+ res.assert_true(not re.search(r'纳川(?!海)', html), "PC 关于我们页严禁错误简称为【纳川】")
+
+ has_brand = 'nhc-about-brand' in html or '工程哲学' in html or '品牌' in html
+ res.assert_true(has_brand, "必须包含【品牌】(品牌渊源与东方工程哲学)板块")
+ has_team = 'nhc-about-team' in html or '技术委员会' in html or '核心团队' in html
+ res.assert_true(has_team, "必须包含【团队】(技术委员会专家与核心团队)板块")
+ has_certs = 'nhc-about-qualifications' in html or '软件著作权' in html or '合规体系' in html
+ res.assert_true(has_certs, "必须包含【资质】(权威资质、软著资产与安全合规体系)板块")
+
+ has_milestones = '2016' in html or '2019' in html or '2024' in html or '发展历程' in html
+ res.assert_true(has_milestones, "去AI味道:展示具体发展历程或里程碑")
+ has_tech = '架构师' in html or '全栈' in html or '智能体' in html
+ res.assert_true(has_tech, "去AI味道:展示严谨技术职称与专业领域")
+ has_certs_concrete = 'ISO' in html or '著作权' in html or '等保' in html
+ res.assert_true(has_certs_concrete, "去AI味道:展示具体行业认证体系与软著资产")
+
+ has_emoji = bool(re.search(r'[\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\u2600-\u26FF\u2700-\u27BF]', html))
+ res.assert_true(not has_emoji, "严禁使用任何 emoji 表情符号")
+
+ res.assert_true(bool(mobile_html), "移动端关于我们模板 single_e.html 必须存在")
+ if mobile_html:
+ res.assert_true('纳海川' in mobile_html, "移动端模板包含品牌名【纳海川】")
+ res.assert_true('团队' in mobile_html or '专家' in mobile_html, "移动端模板包含核心团队介绍")
+ res.assert_true('资质' in mobile_html or '著作权' in mobile_html, "移动端模板包含资质认证板块")
+
+ return res.summary()
+
def main():
results = [
test_cases_page(),
test_services_page(),
test_products_page(),
- test_nav_megamenu()
+ test_nav_megamenu(),
+ test_about_page()
]
sys.exit(0 if all(results) else 1)