项目全称:写字楼租赁 · 固定资产管理系统,当前纳管对象为多栋写字楼集群的配套办公家具 —— 「家具」是业务对象域,不是项目定位。 以 AI 视觉拍照识别 替代二维码/RFID 实体标签,用「成套资产组 + 家具视觉特征指纹」双模式管理,覆盖 入库建档 → 签约配套 → 巡检报修 → 搬迁调拨 → 退租定损理赔 → 报废处置 全流程。
历史研发分两条线独立推进,此前未统一纳管;本方案将其收拢到同一份架构与数据模型下。
截至 2026-10-16,全部归集到工作空间 D:/家具资产管理/。
| # | 交付物 | 位置 | 规模 | 状态 |
|---|---|---|---|---|
| 1 | 资产管理系统前端 单文件 Web 应用 | src/web/asset-management-system.html | ≈106 KB | 可用 |
| 2 | 多端实时同步服务器 零依赖 Node | src/server/server.js | ≈5.4 KB | 可用 |
| 3 | 数据库完整建表脚本 v2 | db/furniture_asset_init_v2.sql | 32 表 / 6 视图 / 2 存储过程 | MariaDB 11.8 实测跑通 |
| 4 | 企微工作台移动端原型 12 页面可点击演示 | docs/furniture_asset_wecom_mobile.html | ≈61 KB | 已补档 |
| 5 | 企微对接技术方案 | docs/wecom_integration_design.html | ≈118 KB | 已补档 |
| 6 | 企微数据库改造脚本 | docs/wecom_integration_ddl.sql | 10 表 / 5 视图 / 6 处列改造 | 已补档 |
| 7 | Docker 部署体系 编排 + 镜像 + 一键部署 | deploy/ | compose + Dockerfile + nginx | 已上线 |
| 8 | 建表脚本 v1(历史版本) | db/v1/furniture_asset_init_v1.sql | 14 表 | 存档 |
| 9 | 需求文档 PRD 完整版 | legacy/prd/ | — | 存档 |
| 10 | 历史任务记录(两份) | legacy/conversations/ | — | 存档 |
六大模块
特色能力
移动端原型 — 用硬约束验证了 5 件事
auth/getuserinfo数据库改造脚本
sys_user 补企微身份、password 允许空值(免登用户无密码)、照片渠道、盘点执行渠道、报修来源、对接系统枚举wecom_department_map 是「多楼栋数据权限隔离」的落地载体 —— 企微按「A栋/物业部」建部门树,映射到楼栋后,
用户数据权限由部门归属自动推导,无需逐人配置。而 wecom_callback_log 的 event_key 唯一索引,
保证企微重推不会重复执行业务。
furniture_asset_prototype.html(PC 端单文件原型 · 10 模块)、
ams-e2e-test.js(多端同步端到端测试 · 15 项)、离线交付物校验 skill 配套的两个校验脚本。
处置方式:优先从历史会话产物目录找回;找不到则按本方案对应章节重做。
三阶段递进:从零依赖单机,到局域网实时同步,再到云端生产架构。
单文件 HTML + localStorage
零部署、零依赖,数据不出本机
Node 零依赖服务器 + SSE 广播
同一 WiFi 内实时同步,断网自动降级
阿里云 ECS + Compose
原型静态页已公网上线
域名 fa.hrgrp.cn(HTTP)
加 API 与 MariaDB 服务
账号权限、企微集成、AI 能力层
docker-compose.yml 里加一个 service」的方式接入,不引入第二套部署方式。
C-1 与 C-2 是同一套编排的加服务关系,不是两次重做。
return 301 https://... —— 会把站点直接打成「无法建立连接」。
切 HTTPS 须三件事同时做完:① 放行 443 → ② 装证书并挂进容器 → ③ 启用 443 server 块 + 加 301 跳转。
第三方平台(企业微信等)登记域名时一律填 fa.hrgrp.cn,不填 IP。
VECTOR(无需外接向量库)| 决策项 | 选择 | 理由 |
|---|---|---|
| 实体标签 | 不用 二维码 / 条码 | 同款标准化家具无外观差异,标签易脱落;改走视觉特征指纹 |
| 资产管理模型 | 成套资产组 + 单件 双层 | 兼容「可单件追踪」与「仅数量管理」两种现实情况 |
| AI 方案 | 第三方视觉大模型 API + 自研特征比对 | 多栋规模下投入可控、上线快;数据敏感度高时可切私有化 CV |
| 同步机制 | SSE + 版本乐观锁 → 必要时升级 WebSocket | 已实测可用,实现成本低 |
| 审批引擎 | 调拨/报废/理赔走企微审批;盘点审核留在系统内 | 企微省掉自研引擎;盘点需逐条看差异明细,企微页面承载不了 |
| 数据权限 | 按楼栋做行级隔离(sys_role_building) | PRD 明确要求多楼栋数据权限隔离 |
| 数据库引擎 | MariaDB 11.8 LTS(轻量),非 MySQL 8 | 数据量与并发都低、宿主机仅 1740 MB:实测常驻 104 MiB vs MySQL 8 约 350–400 MiB;且脚本零改动承接、自带原生向量检索铁律 |
| 部署形态 | 全项目一律 Docker 化部署在云服务器 | 环境一致、可复制、可回滚;避免「服务器上手工装的东西没人记得」铁律 |
| 命名规范 | 固定资产相关简写一律含 FA | 项目定位是固定资产管理,「家具」只是当前业务对象域;标识脱开 FA,后续扩域会留下一批语义过期的命名铁律 |
| 边缘站点 | Nginx 容器统一入口,静态原型 + 后续 API 反代 | 一个入口收敛所有流量;SSE 反代配置集中一处 |
核心结论:当前处于「前端能用 + 数据库设计完备 + 中间层空白」的状态。
| PRD 模块 | 前端 | 数据库 | 主要缺口 |
|---|---|---|---|
| 2.1 资产档案管理 | 部分 | 已设计 | 视觉特征指纹、采购批次、租户/合同关联未落地 |
| 2.2 AI 视觉识别(核心) | 部分 | 已设计 | 识别未服务化;无特征库;无置信度分级引擎 |
| 2.3 家具套餐 & 租赁关联 | 未开始 | 已设计 | 套餐管理、签约绑定、电子移交清单 |
| 2.4 搬迁调拨(重点) | 部分 | 已设计 | 搬运费用测算已实现;扫拍比对与台账更新未实现 |
| 2.5 巡检 & 报修 | 未开始 | 已设计 | 巡检计划、工单流转、破损分级 |
| 2.6 闲置家具库存 | 部分 | 已设计 | 闲置资产组池、调拨至新签约单元 |
| 2.7 资产财务台账 | 部分 | 已设计 | 定时计提落地、盘点报表、理赔台账 |
| 2.8 数据看板 | 已有 | 已设计 | 在租/闲置资产组数、巡检完成率、AI 差异率 |
| 2.9 移动端现场作业 | 已有 | — | 弱网离线补传、待办首页 |
| 2.10 后台系统管理 | 部分 | 已设计 | 账号权限体系、AI 参数页、单据 PDF 归档、外部 API |
| 企业微信对接 | 未实现 | 已设计 | 免登、审批、消息模板、待办、回调;方案 + 可点击原型 + 改造脚本已就绪 |
P1–P2 是关键路径,其余阶段可与之并行或在其后展开。
fams + 补搬运费/计价配置表与识别词列 + 楼栋种子改五栋)· 执行 v3 与企微 DDL · 逐表核对 · 验证折旧存储过程3–5 人日项目一律以 Docker 形式部署在云服务器上。阶段 C-1 第一步已完成并验证通过,域名 fa.hrgrp.cn 已绑定(当前协议 HTTP)。
浏览器直接打开单文件 HTML,或 node server.js 监听 3777 供手机同 WiFi 访问。
注意:无鉴权,不可直接暴露公网。
Compose 编排 + Nginx 容器托管静态原型;内容构建时打进镜像,不做宿主机 bind mount。
对外域名 fa.hrgrp.cn(→ 8.137.121.34,协议 HTTP);远程目录 /opt/fams;一键部署 bash deploy/deploy.sh。
在同一套 compose 里加 service:API 容器 + MariaDB 11.8 容器 + 对象存储;CI/CD、监控告警、灰度发布。
db service 已按 MariaDB 11.8 定稿(调优参数 + 512 MiB 上限,走 --profile db);api 骨架注释预留。向量检索由同库原生 VECTOR 承担,不引入独立向量库。
| 约束 | 原因 |
|---|---|
| 宿主机不装业务运行时 | 只装 Docker,避免「服务器上手工装的东西没人记得」 |
| 内容构建时打进镜像 | 保证本地跑通的东西 = 服务器上跑的东西 |
| 构建上下文 = 工作空间根目录 | 不复制第二份副本,杜绝版本漂移 |
上线只走 deploy.sh | 手工 ssh 改文件会在下次部署时被覆盖,且无人知道它存在过 |
| 当前只用 HTTP,不加 301 跳转 | 证书未申请、安全组 443 未放行;此时跳 HTTPS 会把站点直接打成「无法建立连接」 |
SSE 必须 proxy_buffering off | 否则 /api/events 实时推送被缓冲,表现为「手机端不刷新」 |
密钥只走 deploy/.env | 禁止写入镜像、脚本或前端产物 |
data.json 单文件持久化不支持并发与审计;
③ 照片存浏览器本地,换设备即丢;④ 数据库未实机验证 → 已消解(MariaDB 11.8 实测跑通 42 表);⑤ 无监控告警;⑥ 密钥硬编码风险。
业务风险源自 PRD 遗留清单;技术风险来自两次研发过程中实际踩到的坑与设计复查。
| # | 风险 | 影响 | 对策 |
|---|---|---|---|
| R1 | 高度同款无痕迹家具无法单件追踪 | 单件台账不准确 | 强制成套管理 + 页面明确提示人工复核 |
| R2 | 家具翻新导致特征匹配失败 | 误判为新增资产 | 翻新须走人工重新建档流程,不做自动判定 |
| R3 | 暗光/遮挡导致识别漏检 | 盘点差异率虚高 | 低置信强制人工复核 + 拍摄规范培训 |
| # | 风险 | 影响 | 对策 |
|---|---|---|---|
| T1 | feature_vector 用 TEXT 存向量 | 视觉检索上线后大概率返工 | 已定案:改用 MariaDB 11.8 原生 VECTOR(n) + VECTOR INDEX(实测可用),免去外接向量库 |
| T2 | 组状态与单件状态双写冗余 | 出现「组在租、资产却闲置」 | P1 阶段即定聚合推导规则 |
| T3 | 企微审批撤销(Status=6)未回滚 | 资产位置永久错位,退租算错账 | 列入验收清单,P4 必做 |
| T4 | 企微回调超时被永久丢弃 | 数据丢失且不补发 | 落库即响应 + 异步消费 + 定时补偿 |
| T5 | data.json 单文件持久化 | 并发写与审计能力不足 | P2 切 MariaDB;过渡期每日备份 |
| T6 | 前端本地存储与 MariaDB 模型不对齐 | 对接期大量重构 | P1 补字段映射表,P2 一次性重构数据层 |
| T7 | 大文件写入存在落盘竞态 | 交付物损坏难以察觉 | 写入后回读校验;关键脚本加完整性检查 |
| T8 | 交付物路径映射在沙盒内外不一致 | 测试脚本莫名失败 | 脚本统一落工作区根目录执行 |
old_accum 快照再写日志;② SQL 里一处尾引号缺失,会让后面所有语句被当成同一字符串吞掉,文件看着完整但执行静默失败;
③ 沙盒内临时目录映射不一致,测试脚本必须落在工作区根目录执行。
所有交付物集中到本目录管理;此前分散在独立任务中的成果已全部归集。
| 约定项 | 规则 |
|---|---|
| 部署形态(铁律) | 本项目一律以 Docker 形式部署在云服务器上。禁止在宿主机直接安装运行 Node / MariaDB / Nginx;新增服务以「在 deploy/docker-compose.yml 加一个 service」的方式接入 |
| 数据库选型(铁律) | 一律 MariaDB 11.8 LTS,容器化运行;不引入第二个数据库 / 向量库,不在宿主机裸装 |
| 命名规范(FA,铁律) | 凡涉及「固定资产」的简写/标识一律包含 FA:库名含 FA、新增表用 fa_ 前缀、容器/镜像用 fams-*、环境变量用 FA_ 前缀;历史命名(furniture_* 表、furniture_asset 库名、旧文件名)登记为例外、不返工 |
| 镜像即交付物 | 静态内容在构建时打进镜像,不在宿主机做 bind mount;构建上下文直接指向工作空间根目录,不复制第二份副本,杜绝版本漂移 |
| 上线纪律 | 上线只走 bash deploy/deploy.sh;不允许手工 ssh 进服务器改文件 —— 手工改动会在下次部署时被覆盖,且无人知道它存在过 |
| 域名与协议 | 对外域名固定为 fa.hrgrp.cn(→ 8.137.121.34),第三方平台登记一律填域名不填 IP;当前对外协议为 HTTP,暂不启用 HTTPS —— 证书未就绪、443 未放行期间禁止加 301 跳转;切 HTTPS 须「放行 443 + 装证书 + 启 443 server 块」三件事齐备铁律 |
| 密钥管理 | 密钥 / 口令 / 企微 Secret 一律走 deploy/.env 或服务器环境变量,禁止写入镜像、脚本或前端产物 |
| 单一事实源 | 数据库以 db/ 下基线脚本为准(当前 v2,P1 起 v3),前端以 src/web/ 为准;先改工作空间文件,再留档 |
| 交付物归档 | 所有新交付物必须落到本工作空间对应目录;同时在资料库留一份可分享副本 |
| 版本管理 | 建议初始化 Git 仓库;SQL 脚本按版本顺序化,禁止修改历史脚本,变更走新增迁移段 |
| 测试纪律 | 改动前后跑语法校验;任何写数据的测试必须复制环境另起端口/另起容器,绝不碰生产数据 |
| 记录 | 每次实质性改动追加 .workbuddy/memory/YYYY-MM-DD.md;项目级长期约定写 MEMORY.md |
| 交付物 | 状态 |
|---|---|
furniture_asset_wecom_mobile.html — 企微工作台移动端原型(12 页面) | 已补档 |
wecom_integration_design.html — 企微对接技术方案 | 已补档 |
wecom_integration_ddl.sql — 企微数据库改造(10 表 / 5 视图 / 6 处列改造) | 已补档 |
furniture_asset_prototype.html — PC 端单文件原型(10 模块) | 待补档 |
ams-e2e-test.js — 多端同步端到端回归测试脚本(15 项) | 待补档 |
| 离线交付物校验 skill 配套的两个校验脚本 | 待补档 |
处置方式:优先从历史会话产物目录找回;找不到则按本方案对应章节重做。
PRD 原有六条
本方案补充四条