在 Alistera CRM 中,我把空间、合同、发票和付款分开。办公室可能已经被占用,发票已经开出,但钱还没到账。要看清业务如何运行,就必须把这些状态关联起来,同时保留彼此的区别。
我为 Alistera 构建了独立的运营 CRM,包含空间目录、合同、发票、付款、计划和访问管理。它与公开网站和游戏并列,是独立的产品:各有用途,也各有自己的数据。
这个屏幕展示虚构办公室、它们的状态及租赁关系。这是目录界面的工作示例,不代表 Alistera 当前可租空间。
办公室目录
归档界面 · 演示数据
空间也有时间维度
目录包含 93 个条目:71 间办公室、12 个工位和 10 处公共空间。但只有列表还不够。“空间是否可用?”这个问题需要日期或时间区间。同一间办公室可能今天被占用,一个月后可用。
因此,合同与时间区间关联,数据变化时必须检查重叠。日历帮助人看到冲突;服务器端校验则防止两个同时打开的标签页制造冲突。
发票是请求,付款是事件
财务模型将开票金额、确认付款及其分配分开。部分付款不一定结清整张发票。一次转账可能需要分配到多项义务。单独一个“状态”字段无法可靠替代这些关系。
下面展示演示发票和付款记录。可以查看界面如何区分应履行的义务与实际到账,而无需使用真实财务数据。
发票与付款
归档界面 · 演示数据
金额以菲尔为单位,用整数存储。这避免了金额相加、比较时常见的浮点运算意外。这一选择本身不能修好会计工作,只是去掉了一个不必要的错误来源。
财务操作历史会保留。更正应当说明改了什么,而不是假装之前的状态从未存在。企业有时需要昨天不太好看的真相,而不是今天被整理得完美无瑕的表格。
工作不止于界面
应用使用 React、Vite、Cloudflare Worker 和 D1。登录与个人资料连接权限系统;权限在 API 端检查,而不仅是隐藏按钮。计划可以用列表、看板或甘特图查看。视图不同,任务必须保持一致。
实现了 CRM 并不能证明整个企业已经用它处理日常运营。在经过验证的阶段,我可以展示模型、功能和技术检查;不会虚构使用量或节省时间的数字。
这一阶段实现了目录、合同、财务记录和计划。可以通过演示办公室和发票查看。全面用于日常工作、衡量对团队的价值,是另一个阶段,因此这里没有使用量或节省时间的数据。
相关故事:控制与报告版本 · Alistera 官方网站。






@nevsky_alexander
在 Instagram,看明信片之外的迪拜:家人、城市、新发现,还有项目之间的日常。在 Threads,聊聊设计与 AI 的随想;在 YouTube,分享一条限时动态装不下的视频。选你习惯的平台关注,常来聊聊