当甲方说'logo放大的同时再缩小一点'时,我用 AI 把这个需求做出来了

当甲方说"logo放大的同时再缩小一点"时,我用 AI 把这个需求做出来了

带话题:#奇葩需求大赏


前言

各位掘友,做开发的谁没被奇葩需求折磨过?

上周五下午 5 点 58 分,产品经理笑眯眯地走过来:"这个需求很简单,就是让按钮跟着用户手机壳颜色变色,下周一上线就行。"

我:???

你猜怎么着?我还真给做出来了。

今天就来聊聊那些年我遇到的奇葩需求,以及我怎么用现代 AI 工具把这些"不可能"变成了"已上线"。


一、那些让人窒息的奇葩需求

这是我的职业生涯第一个奇葩需求。甲方爸爸在电话里说了整整 10 分钟,最后我终于听明白了------他想要 logo 在视觉上看起来更大,但实际尺寸要更小。

具体来说:logo 要撑满整个 header 区域,但不能超出 container,同时在移动端要自适应,但不能用 max-width,也不能用 object-fit

我当时的内心:

复制代码
┌─────────────────────────────────────┐
│                                     │
│    💭 这是量子力学吗?              │
│       薛定谔的 logo?               │
│                                     │
└─────────────────────────────────────┘

解决方案 :最后用了 transform: scale() + CSS 变量 + 媒体查询的组合拳。说实话,当时写完我自己都不知道为什么能 work。

css 复制代码
.logo {
  --base-size: clamp(40px, 8vw, 80px);
  width: var(--base-size);
  height: var(--base-size);
  transform: scale(1.2);
  transform-origin: center;
}

@media (max-width: 768px) {
  .logo {
    --base-size: clamp(32px, 6vw, 60px);
    transform: scale(1.1);
  }
}

2. "没网的时候也得正常推送消息"

这个需求来自一个内部系统。领导的原话是:"我们的 APP 要保证在任何情况下都能收到消息,包括没网的时候。"

我试图解释推送需要网络连接,领导说:"那微信怎么能做到?"

我:微信也做不到啊......

领导:那你研究研究。

最终方案:妥协方案是用 Service Worker 做离线缓存 + 本地通知模拟。用户打开 APP 时同步一次消息队列,离线期间显示"待接收"状态。

javascript 复制代码
// service-worker.js
self.addEventListener('sync', (event) => {
  if (event.tag === 'sync-messages') {
    event.waitUntil(syncMessages());
  }
});

async function syncMessages() {
  const cache = await caches.open('message-queue');
  const pending = await cache.match('/pending-messages');
  if (pending) {
    const messages = await pending.json();
    // 同步到服务器
    await fetch('/api/messages/sync', {
      method: 'POST',
      body: JSON.stringify(messages),
    });
    await cache.delete('/pending-messages');
  }
}

3. "按钮跟着用户手机壳颜色变色"

这个就是开头说的那个需求。甲方的逻辑是:用户换了手机壳,APP 主题色也要跟着变,这样才有"个性化体验"。

技术方案:利用后置摄像头 + TensorFlow.js 做颜色识别,然后动态更新 CSS 变量。

javascript 复制代码
async function detectPhoneCaseColor() {
  const video = document.createElement('video');
  const stream = await navigator.mediaDevices.getUserMedia({
    video: { facingMode: 'environment' }
  });
  video.srcObject = stream;
  await video.play();

  // 等待 500ms 让摄像头稳定
  await new Promise(r => setTimeout(r, 500));

  const canvas = document.createElement('canvas');
  canvas.width = video.videoWidth;
  canvas.height = video.videoHeight;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(video, 0, 0);

  // 获取中心区域像素
  const centerX = canvas.width / 2;
  const centerY = canvas.height / 2;
  const pixel = ctx.getImageData(centerX, centerY, 1, 1).data;

  // 停止摄像头
  stream.getTracks().forEach(t => t.stop());

  return `rgb(${pixel[0]}, ${pixel[1]}, ${pixel[2]})`;
}

// 应用主题色
async function applyPhoneCaseTheme() {
  const color = await detectPhoneCaseColor();
  document.documentElement.style.setProperty('--theme-color', color);
}

当然,这个方案有明显的局限性(用户得把手机壳对准摄像头),最后甲方自己也觉得不太靠谱,改成了"用户手动选颜色"。


二、AI 时代的奇葩需求生存指南

上面那些需求如果放在今天,用 AI 工具可以更快地验证可行性。

用 AI 做需求可行性分析

现在遇到奇葩需求,我会先问 AI:

复制代码
需求:实现一个功能,让用户不打开 APP 也能看到 APP 内容
技术限制:不能用通知栏、不能用小组件、不能用悬浮窗

AI 会给出一堆方案,然后帮你快速排除不可行的,留下可落地的。

用 AI 生成 POC 代码

以前验证一个需求可行性可能要半天,现在用 AI 编程助手,10 分钟就能出个 POC。

比如那个"手机壳变色"的需求,我可以直接问 AI:

复制代码
用 TensorFlow.js 实现摄像头实时颜色识别,识别手机壳主要颜色,
返回 RGB 值。要求:纯前端实现,不需要后端,代码可以直接在浏览器运行。

AI 会给你一个完整的可运行 demo,比自己查文档快 10 倍。

用 AI 写需求拒绝话术

有时候,最好的技术方案是"不做"。但怎么优雅地拒绝需求是个技术活。

现在我会让 AI 帮我写话术:

arduino 复制代码
帮我写一段专业但委婉的话,向产品经理解释为什么
"让 APP 在飞行模式下也能收消息" 这个需求在技术上不可行,
同时给出替代方案。

三、我的奇葩需求应对 Checklist

经过这些年的历练,我总结出了一套应对奇葩需求的方法论:

步骤 动作 耗时
1 先别急着说"做不了" 0 分钟
2 用 AI 快速验证技术可行性 10 分钟
3 如果可行,出 POC 给产品看 30 分钟
4 如果不可行,写替代方案 20 分钟
5 用数据和 demo 说服对方 15 分钟

核心原则

  1. 保持开放心态:很多看似不可能的需求,只是我们没想到实现方式
  2. 快速验证:用 AI 工具降低验证成本,10 分钟 POC 胜过 1 小时争论
  3. 提供替代方案:直接拒绝需求会让人觉得你不专业
  4. 记录奇葩需求:这些都是未来面试的素材啊!

四、那些被奇葩需求逼出来的创新

说真的,有些看似荒谬的需求,最后反而推动了技术创新。

  • "让页面加载更快" → 催生了 SSR、ISR、SSG 等渲染方案
  • "让 APP 在后台也能运行" → 催生了 Service Worker、Web Workers
  • "让用户不安装也能用" → 催生了 PWA、小程序
  • "让 AI 理解我的需求" → 催生了 Prompt Engineering

所以,下次遇到奇葩需求,先别急着崩溃,说不定这是你职业生涯的一个转折点。


结尾

各位掘友,你们遇到过最奇葩的需求是什么?欢迎在评论区分享,让我知道我不是一个人在战斗。

如果这篇文章让你想起了某些痛苦的回忆,点个赞安慰一下我吧 😂


互动话题:评论区分享你遇到的最奇葩需求,点赞最高的我帮你写代码实现(限前端,且需求要在物理定律允许范围内)。


标签:前端开发、JavaScript、CSS、AI、程序员日常

相关推荐
Hilaku1 小时前
Node.js 还能再战十年?给你一个不换引擎的理由
前端·javascript·程序员
weedsfly2 小时前
前端必知必会:从 IIFE 到 ESM,模块化到底在解决什么?
前端·javascript
渣波2 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
槑有老呆2 小时前
每次跟大模型聊天,都是一次「失忆」的 HTTP 请求
javascript
sarasuki2 小时前
彻底搞懂JS闭包:从作用域链、形成条件到优缺点
javascript
糖拌西瓜皮2 小时前
TypeScript 进阶:泛型、条件类型、类型守卫与装饰器
javascript·node.js
Hyyy14 小时前
token是什么?为什么大模型会有上下文长度的限制
程序员·llm·ai编程
swipe15 小时前
从 0 到 1 实现大文件上传:分片、秒传、断点续传、暂停、重试与服务端合并
前端·javascript·面试
kyriewen17 小时前
AI 生成的代码能跑就行?这 5 个坑迟早炸
前端·javascript·ai编程