diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index e76fa85..07c25e1 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -34,12 +34,23 @@ jobs: echo "✓ 文件同步完成" + - name: Apply nginx ConfigMap and restart deployment + run: | + scp k8s/nginx-conf.yaml root@118.196.70.19:/tmp/static-sites-nginx-conf.yaml + ssh root@118.196.70.19 " + kubectl apply -f /tmp/static-sites-nginx-conf.yaml + kubectl rollout restart deployment/static-sites + kubectl rollout status deployment/static-sites --timeout=60s + " + echo "✓ nginx 配置已更新" + - name: Auto generate and apply Ingress run: | + # 自动子域名模式的项目(裸域 airlabs-art 由下面特判) PROJECTS="" for dir in */; do case "$dir" in - .gitea/|.git/|k8s/) continue ;; + .gitea/|.git/|k8s/|airlabs-art/) continue ;; esac PROJECTS="$PROJECTS ${dir%/}" done @@ -75,6 +86,22 @@ jobs: printf ' number: 80\n' >> /tmp/ingress.yaml done + # 特判:裸域 + www 走 HTTP only,映射到 airlabs-art/ 目录 + if [ -d airlabs-art ]; then + for host in airlabs.art www.airlabs.art; do + printf ' - host: %s\n' "$host" >> /tmp/ingress.yaml + printf ' http:\n' >> /tmp/ingress.yaml + printf ' paths:\n' >> /tmp/ingress.yaml + printf ' - path: /\n' >> /tmp/ingress.yaml + printf ' pathType: Prefix\n' >> /tmp/ingress.yaml + printf ' backend:\n' >> /tmp/ingress.yaml + printf ' service:\n' >> /tmp/ingress.yaml + printf ' name: static-sites\n' >> /tmp/ingress.yaml + printf ' port:\n' >> /tmp/ingress.yaml + printf ' number: 80\n' >> /tmp/ingress.yaml + done + fi + echo "--- 生成的 Ingress ---" cat /tmp/ingress.yaml diff --git a/airlabs-art/assets/images/aigc-concept.png b/airlabs-art/assets/images/aigc-concept.png new file mode 100644 index 0000000..941a781 Binary files /dev/null and b/airlabs-art/assets/images/aigc-concept.png differ diff --git a/airlabs-art/assets/images/hero-bg.jpeg b/airlabs-art/assets/images/hero-bg.jpeg new file mode 100644 index 0000000..05f7cfc Binary files /dev/null and b/airlabs-art/assets/images/hero-bg.jpeg differ diff --git a/airlabs-art/assets/images/plush-concept.png b/airlabs-art/assets/images/plush-concept.png new file mode 100644 index 0000000..c7dbf67 Binary files /dev/null and b/airlabs-art/assets/images/plush-concept.png differ diff --git a/airlabs-art/css/reset.css b/airlabs-art/css/reset.css new file mode 100644 index 0000000..55b7f4f --- /dev/null +++ b/airlabs-art/css/reset.css @@ -0,0 +1,27 @@ +/* Modern CSS Reset */ +*, *::before, *::after { + box-sizing: border-box; +} + +* { + margin: 0; + padding: 0; + font: inherit; +} + +body { + min-height: 100vh; +} + +img, picture, svg, video { + display: block; + max-width: 100%; +} + +ul, ol { + list-style: none; +} + +html { + scroll-behavior: smooth; +} diff --git a/airlabs-art/css/style.css b/airlabs-art/css/style.css new file mode 100644 index 0000000..1eed713 --- /dev/null +++ b/airlabs-art/css/style.css @@ -0,0 +1,361 @@ +:root { + /* Colors */ + --bg-color: #0a0a0a; + --surface-dark: #121212; + --text-primary: #ffffff; + --text-secondary: #a0a0a0; + --accent-cyan: #00f2ea; + --accent-magenta: #ff0055; + --accent-yellow: #ffdd00; + --gradient-main: linear-gradient(135deg, var(--accent-cyan), var(--accent-magenta)); + + /* Typography */ + --font-main: 'Inter', system-ui, -apple-system, sans-serif; + --font-display: 'Orbitron', 'Inter', sans-serif; + /* Tech feel for headers */ + + /* Spacing */ + --container-width: 1200px; + --header-height: 80px; + --section-padding: 100px 0; +} + +body { + background-color: var(--bg-color); + color: var(--text-primary); + font-family: var(--font-main); + line-height: 1.6; + overflow-x: hidden; +} + +/* Typography Utilities */ +h1, +h2, +h3, +h4 { + font-weight: 700; + line-height: 1.2; + margin-bottom: 1rem; +} + +h1 { + font-size: 3.5rem; + font-family: var(--font-display); + text-transform: uppercase; + letter-spacing: -1px; +} + +h2 { + font-size: 2.5rem; + font-family: var(--font-display); + margin-bottom: 2rem; + background: var(--gradient-main); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: inline-block; +} + +p { + font-size: 1.1rem; + color: var(--text-secondary); + margin-bottom: 1.5rem; +} + +/* Layout Utilities */ +.container { + width: 90%; + max-width: var(--container-width); + margin: 0 auto; + padding: 0 20px; +} + +.section { + padding: var(--section-padding); + position: relative; +} + +/* Header */ +.header { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: var(--header-height); + z-index: 1000; + background: rgba(10, 10, 10, 0.8); + backdrop-filter: blur(10px); + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + display: flex; + align-items: center; + transition: all 0.3s ease; +} + +.header .container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo { + font-family: var(--font-display); + font-size: 1.5rem; + font-weight: 700; + color: var(--text-primary); + text-decoration: none; + letter-spacing: 2px; +} + +.logo span { + color: var(--accent-cyan); +} + +.nav-links { + display: flex; + gap: 30px; +} + +.nav-links a { + color: var(--text-primary); + text-decoration: none; + font-size: 0.95rem; + font-weight: 500; + transition: color 0.3s ease; + text-transform: uppercase; + letter-spacing: 1px; +} + +.nav-links a:hover { + color: var(--accent-cyan); +} + +/* Hero Section */ +.hero { + height: 100vh; + display: flex; + align-items: center; + position: relative; + overflow: hidden; + padding-top: var(--header-height); +} + +.hero-bg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; + opacity: 0.6; +} + +.hero-content { + max-width: 800px; + position: relative; + z-index: 1; +} + +.btn { + display: inline-block; + padding: 15px 35px; + background: var(--gradient-main); + color: white; + text-decoration: none; + border-radius: 50px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + transition: transform 0.3s ease, box-shadow 0.3s ease; + border: none; + cursor: pointer; +} + +.btn:hover { + transform: translateY(-2px); + box-shadow: 0 10px 20px rgba(0, 242, 234, 0.3); +} + +/* Feature Sections */ +.feature-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 60px; + align-items: center; +} + +.feature-grid.reverse { + direction: rtl; + /* Simple way to reverse visual order */ +} + +.feature-grid.reverse>* { + direction: ltr; + /* Reset text direction */ +} + +.feature-image img { + border-radius: 20px; + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); + border: 1px solid rgba(255, 255, 255, 0.1); + transition: transform 0.5s ease; +} + +.feature-image:hover img { + transform: scale(1.02); +} + +.feature-text h3 { + font-size: 2rem; + margin-bottom: 1rem; + color: var(--text-primary); +} + +/* Card Grid for About/Stats */ +.card-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 30px; + margin-top: 40px; +} + +.card { + background: rgba(255, 255, 255, 0.03); + padding: 30px; + border-radius: 15px; + border: 1px solid rgba(255, 255, 255, 0.05); + transition: transform 0.3s ease, background 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); + background: rgba(255, 255, 255, 0.05); + border-color: var(--accent-cyan); +} + +.card-icon { + font-size: 2rem; + margin-bottom: 20px; + color: var(--accent-magenta); +} + +/* Footer */ +.footer { + background: var(--surface-dark); + padding: 80px 0 40px; + text-align: center; + border-top: 1px solid rgba(255, 255, 255, 0.05); + font-size: 0.95rem; +} + +.footer .logo { + margin-bottom: 10px; + display: inline-block; +} + +.company-name { + color: var(--text-primary); + font-size: 1.1rem; + margin-bottom: 40px; + font-weight: 500; + opacity: 0.9; +} + +.footer-contact { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 30px; + margin-bottom: 30px; + color: var(--text-secondary); +} + +.contact-item { + display: flex; + align-items: center; + gap: 8px; +} + +.contact-item span { + color: var(--accent-cyan); + font-weight: 500; +} + +.footer-links { + margin-bottom: 40px; +} + +.footer-links a { + color: var(--text-primary); + text-decoration: none; + font-size: 1rem; + padding-bottom: 2px; + border-bottom: 1px solid transparent; + transition: all 0.3s ease; +} + +.footer-links a:hover { + color: var(--accent-magenta); + border-color: var(--accent-magenta); +} + +.footer-copyright { + opacity: 0.5; + font-size: 0.85rem; + line-height: 1.8; +} + +.footer-copyright a { + color: inherit; + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-copyright a:hover { + color: var(--text-primary); + text-decoration: underline; +} + +@media (max-width: 768px) { + .footer-contact { + flex-direction: column; + gap: 15px; + } +} + +/* Animations */ +.fade-up { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease, transform 0.8s ease; +} + +.fade-up.visible { + opacity: 1; + transform: translateY(0); +} + +/* Responsive */ +@media (max-width: 768px) { + h1 { + font-size: 2.5rem; + } + + h2 { + font-size: 2rem; + } + + .feature-grid { + grid-template-columns: 1fr; + gap: 40px; + } + + .feature-grid.reverse { + direction: ltr; + } + + .nav-links { + display: none; + } + + /* Simplified for this MVP */ +} \ No newline at end of file diff --git a/airlabs-art/index.html b/airlabs-art/index.html new file mode 100644 index 0000000..db12862 --- /dev/null +++ b/airlabs-art/index.html @@ -0,0 +1,154 @@ + + + + + + + AirLab | 广州气元科技有限公司 - AIGC & Future Play + + + + + + + + + + + + + +
+
+ + +
+
+ + +
+ Abstract Background +
+

Defining the Future of
Play & Storytelling

+

广州气元科技有限公司 (AirLab)

+

Pioneering AIGC Short Dramas & Next-Gen Intelligent Plush + Toys.

+ Explore The Future +
+
+ + +
+
+

About AirLab

+
+
+
🚀
+

Innovation First

+

Pushing the boundaries of what's possible with Generative AI and Smart Hardware.

+
+
+
+

Trendy Aesthetics

+

Crafting experiences that resonate with the modern, digital-native generation.

+
+
+
🤖
+

Soulful Tech

+

Infusing technology with life, emotion, and interactivity.

+
+
+
+
+ + +
+
+
+
+

AIGC Animation

+

Redefining Content Creation

+

At AirLab, we harness the power of cutting-edge AIGC models to produce stunning, high-fidelity + short dramas. Our pipeline allows for limitless creativity, rapid production, and visual styles + that captivate global audiences.

+
    +
  • • AI-Assisted Scriptwriting & Storyboarding
  • +
  • • Hyper-realistic Character Generation
  • +
  • • Real-time Style Transfer & Rendering
  • +
+
+
+ AIGC Animation Concept +
+
+
+
+ + +
+
+
+
+

IP Intelligent Plush

+

More Than Just a Toy

+

Meet our line of smart companions. Combining premium plush materials with advanced AI + interaction, our toys can converse, learn, and grow with you. It's not just a product; it's a + friend with a soul.

+
    +
  • • Natural Language Processing (NLP)
  • +
  • • Emotional Responsive Feedback
  • +
  • • Premium Trendy Design
  • +
+
+
+ Intelligent Plush Concept +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/airlabs-art/index_history.html b/airlabs-art/index_history.html new file mode 100644 index 0000000..7be6d2d --- /dev/null +++ b/airlabs-art/index_history.html @@ -0,0 +1,1148 @@ + + + + + + 气元科技 | AirLabs + + + + +
+ + +
+ + + +
+ + +
+
+

气元科技

+

AIRLABS

+

科技与文化创意的融合者

+

TECHNOLOGY & CREATIVE FUSION

+
+
+
+
+
+
+ + +
+
+
+
+
15
+

年文创与科技积淀

+

YEARS OF EXPERIENCE

+

+ 气元科技由深耕文创+科技领域15年的资深团队创立,专注于AI动画、传统CG动画、AI应用产品三大核心业务。 +

+
+
+
+ + + + + + +
+
+
+
+
+ + +
+
+

核心业务

+

CORE SERVICES

+ +
+
+
01
+

AI动画

+

通过AI辅助提高动画制作效率,创造更具想象力的内容。

+
AI ANIMATION
+
+ +
+
02
+

传统CG动画

+

专业的CG动画制作,为客户提供高品质的视觉体验。

+
CG ANIMATION
+
+ +
+
03
+

AI应用产品

+

开发前沿AI应用产品,探索科技与文化创意融合的新边界。

+
AI PRODUCTS
+
+
+
+
+
+
+ + +
+
+

合作伙伴

+

OUR CLIENTS

+ +
+
+
01
+

长隆集团

+

为中国知名主题公园及旅游度假区提供创意内容服务。

+
CHIMELONG GROUP
+
+ +
+
02
+

VANS

+

为国际知名品牌提供定制创意服务。

+
GLOBAL BRAND
+
+
+
+
+ + +
+
+

代表项目

+

FEATURED PROJECTS

+ +
+
+

小马菲莉

+

已在中国及欧盟20多个国家发行,衍生产品畅销中欧市场的经典案例。

+
+ 20+ 国家发行 + 全球衍生品 +
+
+
+
+
PROJECT SHOWCASE
+
+
+
+
+
+
+ + +
+
+

业务布局

+

BUSINESS LAYOUT

+ +
+ +
+

AI生成内容

+
    +
  • +
    01
    +
    +

    AI动画

    +

    通过AI辅助提高动画制作效率,创造更具想象力的内容。

    +
    +
  • +
  • +
    02
    +
    +

    AI真人剧

    +

    探索AI技术与真人内容结合的创新表现形式。

    +
    +
  • +
  • +
    03
    +
    +

    AI广告

    +

    利用AI提升广告内容创作效率和个性化定制能力。

    +
    +
  • +
+
+ + +
+

AI智能产品

+
    +
  • +
    01
    +
    +

    洛天依桌面情感陪伴产品

    +

    与集卡社合作开发,融合虚拟偶像IP和AI互动体验。

    +
    +
  • +
  • +
    02
    +
    +

    AI语音对话硬件

    +

    聚焦用户的智能情感陪伴需求。

    +
    +
  • +
+
+ + +
+

IP全流程业务

+
    +
  • +
    01
    +
    +

    IP设计策划

    +

    创造独特IP形象与故事世界观。

    +
    +
  • +
  • +
    02
    +
    +

    AI辅助传统CG动画制作

    +

    结合AI技术提升传统动画制作效率与质量。

    +
    +
  • +
  • +
    03
    +
    +

    国内外发行

    +

    拓展全球市场,实现IP价值最大化。

    +
    +
  • +
  • +
    04
    +
    +

    衍生品开发生产

    +

    打造完整产业闭环,实现多元化变现。

    +
    +
  • +
+
+
+
+
+
+
+ + + + + + + diff --git a/airlabs-art/js/script.js b/airlabs-art/js/script.js new file mode 100644 index 0000000..ba979f7 --- /dev/null +++ b/airlabs-art/js/script.js @@ -0,0 +1,30 @@ +document.addEventListener('DOMContentLoaded', () => { + // Scroll Animation (Fade Up) + const observerOptions = { + threshold: 0.1, + rootMargin: "0px 0px -50px 0px" + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + } + }); + }, observerOptions); + + const fadeElements = document.querySelectorAll('.fade-up'); + fadeElements.forEach(el => observer.observe(el)); + + // Header Blur Effect on Scroll + const header = document.querySelector('.header'); + window.addEventListener('scroll', () => { + if (window.scrollY > 50) { + header.style.background = 'rgba(10, 10, 10, 0.95)'; + header.style.boxShadow = '0 5px 20px rgba(0,0,0,0.5)'; + } else { + header.style.background = 'rgba(10, 10, 10, 0.8)'; + header.style.boxShadow = 'none'; + } + }); +}); diff --git a/airlabs-art/privacy.html b/airlabs-art/privacy.html new file mode 100644 index 0000000..27c2b2e --- /dev/null +++ b/airlabs-art/privacy.html @@ -0,0 +1,162 @@ + + + + + + + Privacy Policy | AirLab 隐私政策 + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + +
+

隐私政策 (Privacy Policy)

+

最后更新日期:2025年06月01日

+ +

欢迎访问广州气元科技有限公司(以下简称“AirLab”或“我们”)的官方网站。我们非常重视您的隐私保护。本隐私政策旨在向您说明我们在您访问本网站时如何收集、使用、存储和保护您的个人信息。

+ +

1. 信息收集

+

当您访问我们的网站时,我们要么不收集您的个人信息,要么仅收集为提供服务所必需的最小化信息:

+ + +

2. 信息的使用

+

我们要合法、正当、必要地使用收集到的信息。主要用途包括:

+ + +

3. 信息共享与披露

+

我们承诺不会出售、交易或未经授权转让您的个人信息给第三方,除非:

+ + +

4. Cookie 技术

+

本网站可能会使用 Cookie 或类似技术来提升用户体验,例如记录您的语言偏好。您可以根据自己的偏好在浏览器设置中管理或拒绝 Cookie,但这可能会影响部分网站功能的正常使用。

+ +

5. 数据安全

+

我们采取合理的行业标准安全措施(包括技术手段和管理制度)来保护您的信息免受未经授权的访问、披露、使用、修改或损坏。然而,请注意互联网传输并非绝对安全,我们无法保证信息的绝对安全性。

+ +

6. 未成年人保护

+

我们的服务主要面向成人。若您是未成年人,建议在监护人指导下访问本网站。我们不会故意收集未成年人的个人信息。

+ +

7. 政策更新

+

AirLab 保留随时更新本隐私政策的权利。更新后的政策将发布在本页面上,并通过更新顶部的“最后更新日期”以此通知。建议您定期查阅以了解最新信息。

+ +

8. 联系我们

+

如果您对本隐私政策有任何疑问或建议,请通过以下方式联系我们:

+

+ 广州气元科技有限公司
+ Email: airlabsv001@gmail.com
+ Phone: 132 4483 6848
+ Address: 广东省广州市荔湾区信义会馆-6栋3楼301 +

+
+ + + + + + + \ No newline at end of file diff --git a/k8s/nginx-conf.yaml b/k8s/nginx-conf.yaml index 32410cf..d728a6b 100644 --- a/k8s/nginx-conf.yaml +++ b/k8s/nginx-conf.yaml @@ -4,6 +4,24 @@ metadata: name: static-sites-nginx-conf data: default.conf: | + # Apex + www -> airlabs-art/ 目录 + server { + listen 80; + server_name airlabs.art www.airlabs.art; + + root /usr/share/nginx/html/airlabs-art; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } + + location ~ /\. { + deny all; + } + } + + # 子域名站点:.airlabs.art -> /usr/share/nginx/html// server { listen 80; server_name ~^(?.+)\.airlabs\.art$;