# 管理装修项目的 PWA 架构:从聊天到 AI 工具
在建筑行业,管理公寓装修项目需要专用工具来应对漫长的流程和众多参与者。我们开发了一款 PWA 解决方案,集聊天、任务跟踪、视频监控和 AI 室内设计师于一身。本文剖析了我们在构建这一管理系统时的架构决策和技术挑战,该系统适用于持续 6 至 18 个月的项目。
为什么标准 CRM 不适合装修项目
装修施工项目不是销售交易或工单。它是一个跨越六个月至一年半的流程,涉及多种角色,各有不同需求:
- 客户 —— 希望跟踪进度,而无需深入细节。
- 预算师 —— 正式化请求并计算工作量和材料。
- 项目经理 —— 协调项目各方面。
- 总监 —— 需要概览所有工地,而不钻入每个细节。
- 质量控制 —— 验收工人的工作。
- 工人(抹灰工、电工、水管工)—— 按序施工。
- 采购部门 —— 采购并交付材料。
现成解决方案如 Bitrix24 或 amoCRM 专注于销售漏斗,而非建筑项目管理。Trello 和 Asana 处理任务出色,但缺少预算、带照片的检查清单和财务控制。俄罗斯市场上不存在专为公寓装修整合所有必要工具的解决方案。
技术栈选择:PWA 和 Laravel
核心需求:一款适用于所有人的单一应用,从总监到抹灰工。工人使用各种代际的 Android 智能手机,客户多用 iPhone,经理用桌面电脑。为团队开发三款原生应用(iOS、Android、web)不切实际。PWA 解决了这个问题:单一代码库、桌面安装、推送通知和自动更新。
后端基于 PHP Laravel,前端使用定制的 AdminLTE 模板。架构为单体式,统一认证,并为员工、工人和客户提供独立仪表板。我们选择 Laravel 因为其流行度和丰富的现成包,几乎覆盖所有任务。例如,向 MAX 发送通知通过专用包处理,类似于 laravel notification channels。
基础设施:莫斯科的 reg.ru 虚拟服务器,数据存储在 FirstVDS 服务器上。备份分布到三个不同服务器,跨多家主机。部署通过 CI/CD 脚本在几秒内完成——无需前端构建——实现快速更新。
角色与访问权限架构
系统提供四种仪表板类型,各有定制界面:
客户仪表板
简洁界面,包括视频流、单窗口聊天、照片报告、预算和工作计划。访问 AI 工具:装修专家和室内设计师(上传翻新前照片生成渲染图)。客户无法查看内部通信或成本明细。
员工仪表板
基于分配权限访问内部系统:客户通信、工地汇总、费用管理、工人协调、检查清单、预算和分析。
工人仪表板
仅显示分配的工地。个性化工作计划带倒计时、公司聊天、带视频指导的检查清单、预算(隐藏客户价格)以及材料/付款请求。
总监仪表板
公司级仪表板。包含所有员工功能,外加:
- 实时监控客户通信。
- 财务概览:收入、支出、现金流缺口。
- 班组轮班管理,减少空闲时间。
- 通过检查清单选择性质量检查。
- 即时推送改进(添加检查清单项)。
- 基于成本计算统计的需求预测。
技术上,有三种界面:客户、工人和员工。总监仪表板是员工版的全权限版。权限可自定义,并有预设“角色”(权限集)。
单窗口聊天:消息路由
核心功能:客户与“公司”聊天,而非特定个人。内部,所有项目参与者可见该消息。
工作原理:
- 客户发送消息——显示给工地所有分配员工。
- 任意员工回复——客户看到来自“公司”的消息,附作者姓名。
- 对客户是私人聊天;对员工是项目群聊。
- 工人聊天类似运作。
- 可在客户与工人间转发消息。
- 客户聊天仅限文本(便于存档);工人聊天支持语音消息(传达语气)。
聊天由 websockets 驱动。新消息通知延迟 5 秒,若已读则跳过。推送通知含“已读”和“回复”按钮。有些 Android 设备点击按钮会关闭通知栏,打断工作流。
挑战与解决方案
一个意外:处理客户多个工地需账户关联。未来版本将从底层分离账户、资料和工地。
Android 推送通知问题(点击关闭通知栏)尚未解决。我们最初忽略了检查清单即时更新的需求,如今对质量控制至关重要。
关键经验
- 领域专属性 —— 装修项目需支持多角色和长周期,超出标准 CRM 范畴。
- PWA 作为最优解 —— 跨平台单一代码库表现出色,尽管 Android 推送有小问题。
- 灵活角色系统 —— 差异化界面和权限对用户采用至关重要。
- 聊天作为通信中心 —— 单窗口路由简化互动并记录通信。
- 备份与可靠性 —— 跨服务器三重备份在存储故障时救数据。
— Editorial Team
暂无评论。