项目开发方案 · v1.3

写字楼租赁 · 固定资产管理系统

项目全称:写字楼租赁 · 固定资产管理系统,当前纳管对象为多栋写字楼集群的配套办公家具 —— 「家具」是业务对象域,不是项目定位。 以 AI 视觉拍照识别 替代二维码/RFID 实体标签,用「成套资产组 + 家具视觉特征指纹」双模式管理,覆盖 入库建档 → 签约配套 → 巡检报修 → 搬迁调拨 → 退租定损理赔 → 报废处置 全流程。

项目代号 FAMS(Fixed Asset Management System) 编制日期 2026-10-16 统一管理根目录 D:/家具资产管理 线上演示站 http://fa.hrgrp.cn/ 对外域名 fa.hrgrp.cn(fa = Fixed Asset 固定资产 → 8.137.121.34,协议 HTTP) 目标数据库 MariaDB 11.8 LTS(轻量,实测常驻 104 MiB) 文档定位 项目总纲

01项目速览

历史研发分两条线独立推进,此前未统一纳管;本方案将其收拢到同一份架构与数据模型下。

已归档交付物
10份
含源码、脚本、原型、方案与任务记录
前端功能模块
6个
看板 / 台账 / 盘点 / 领用 / 费用 / 设置,均已可用
数据库设计
42表
11 视图 / 3 存储过程;MariaDB 11.8 实测跑通
线上演示站
已上线
fa.hrgrp.cn · Docker 容器托管
已具备能力
前端 + 同步 + 云端
单文件应用 + 零依赖同步服务器 + Docker 边缘站点
核心缺口
中间层空白
前端本地存储 ↔ MariaDB 模型未打通
下一步重点
数据库落地 + 前后端打通
而非继续堆前端功能

02现有资产盘点

截至 2026-10-16,全部归集到工作空间 D:/家具资产管理/。

#交付物位置规模状态
1资产管理系统前端
单文件 Web 应用
src/web/asset-management-system.html≈106 KB可用
2多端实时同步服务器
零依赖 Node
src/server/server.js≈5.4 KB可用
3数据库完整建表脚本 v2db/furniture_asset_init_v2.sql32 表 / 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.sql10 表 / 5 视图 / 6 处列改造已补档
7Docker 部署体系
编排 + 镜像 + 一键部署
deploy/compose + Dockerfile + nginx已上线
8建表脚本 v1(历史版本)db/v1/furniture_asset_init_v1.sql14 表存档
9需求文档 PRD 完整版legacy/prd/—存档
10历史任务记录(两份)legacy/conversations/—存档

前端应用已实现功能

六大模块

  • 资产看板 总数 / 原值 / 净值、状态分布、分类价值图、楼栋分布图(A·B·C·D·F 五栋)、本月搬运费、动态流水
  • 资产台账 增删改查、自动编号、多维筛选(关键词/分类/状态/楼栋)、按价值排序、一键报废
  • 拍照盘点 多选上传自动压缩、灯箱查看、导出盘点包、导入识别结果批量入账
  • 领用归还 领用登记、归还入库、全程留痕、状态自动流转
  • 搬运费用 按月/楼栋记账、四张统计卡、近 12 月趋势图、明细导出、搬运方案测算
  • 数据管理 JSON 备份恢复(含照片)、CSV 导出、分类完全可自定义、计价配置

特色能力

  • 资产助手 右下角悬浮球,离线自然语言问答:总览、分类、状态、按人查、按物查、楼栋、搬运费、搬运方案测算
  • 搬运计价引擎 按「品类单价 × 数量 + 跨栋距离加成」对比内部自搬 / 专业搬运,只报结论不露过程;已按「项目内搬迁不涉及货车」重构,彻底移除货车模型
  • 分类可自定义 新增 / 改名(联动资产与单价)/ 排序 / 配识别词 / 删除并自动迁移资产
  • 手机端适配 底部导航、卡片式台账、+新增 FAB、网络状态角标、调用手机相机
  • 多端实时同步 自动探测服务器,在线实时同步 / 断网单机降级(SSE + 版本乐观锁)

企微对接三件套(2026-10-16 补档)

移动端原型 — 用硬约束验证了 5 件事

  • ① 免登 无输入直接进入,渠道标记为企微工作台,身份取自 auth/getuserinfo
  • ② 低置信强制复核 存在未复核条目时,提交按钮真的点不动,复核完才解锁
  • ③ AI 结果不直接生效 盘点只能「提交送审」,审核权在运营主管手上
  • ④ 调拨审批回写台账 审批通过后资产组房间位置真的变了,并生成差异留痕
  • ⑤ 待办闭环 单据办结后对应待办自动置为已完成,不留红点

数据库改造脚本

  • 10 张新表 配置 / token 缓存 / 部门-楼栋映射 / 同步日志 / 消息模板与日志 / 回调日志 / 审批模板与单据映射 / 待办
  • 5 个视图 用户绑定总览、消息待重试、送达统计、审批概览、回调健康度
  • 6 处列改造 sys_user 补企微身份、password 允许空值(免登用户无密码)、照片渠道、盘点执行渠道、报修来源、对接系统枚举
  • 幂等 两个辅助存储过程,整份可重复执行;v2 的 32 表字段语义一处未动
设计亮点:wecom_department_map 是「多楼栋数据权限隔离」的落地载体 —— 企微按「A栋/物业部」建部门树,映射到楼栋后, 用户数据权限由部门归属自动推导,无需逐人配置。而 wecom_callback_log 的 event_key 唯一索引, 保证企微重推不会重复执行业务。
仍未补档的交付物:furniture_asset_prototype.html(PC 端单文件原型 · 10 模块)、 ams-e2e-test.js(多端同步端到端测试 · 15 项)、离线交付物校验 skill 配套的两个校验脚本。 处置方式:优先从历史会话产物目录找回;找不到则按本方案对应章节重做。

03总体架构演进

三阶段递进:从零依赖单机,到局域网实时同步,再到云端生产架构。

阶段一 · 已完成

单机版

单文件 HTML + localStorage
零部署、零依赖,数据不出本机

→
阶段二 · 已完成

局域网多端同步

Node 零依赖服务器 + SSE 广播
同一 WiFi 内实时同步,断网自动降级

→
C-1 · 已落地

Docker 单机云

阿里云 ECS + Compose
原型静态页已公网上线
域名 fa.hrgrp.cn(HTTP)

→
C-2 · 目标

Docker 生产架构

加 API 与 MariaDB 服务
账号权限、企微集成、AI 能力层

部署铁律:本项目一律以 Docker 形式部署在云服务器上。宿主机只装 Docker,不装 Node / MariaDB / Nginx 等业务运行时; 新增服务一律以「在 docker-compose.yml 里加一个 service」的方式接入,不引入第二套部署方式。 C-1 与 C-2 是同一套编排的加服务关系,不是两次重做。
域名与协议规则:对外访问域名 fa.hrgrp.cn(A 记录 → 8.137.121.34,本机与服务器侧均已验证解析); 当前对外协议为 HTTP,暂不启用 HTTPS。证书未申请、安全组 443 未放行期间, 禁止在 80 的 server 块加 return 301 https://... —— 会把站点直接打成「无法建立连接」。 切 HTTPS 须三件事同时做完:① 放行 443 → ② 装证书并挂进容器 → ③ 启用 443 server 块 + 加 301 跳转。 第三方平台(企业微信等)登记域名时一律填 fa.hrgrp.cn,不填 IP。

阶段三目标架构

接入层
PC Web · 手机 H5 · 企业微信工作台 → Nginx / 网关(HTTPS、鉴权、限流)
应用层
API 服务(REST + SSE,视规模升级 WebSocket) · 资产台账 / 盘点 / 调拨 / 理赔 / 报表 · 账号权限与楼栋数据隔离
能力层
AI 视觉识别服务(物体检测 + 计数) · 家具特征比对服务(向量检索) · 折旧计提定时任务 · 企微网关(免登 / 审批 / 消息 / 待办)
数据层
MariaDB 11.8 LTS(42 表 / 11 视图 / 3 存储过程) · 对象存储(盘点照片) · 向量检索用同库原生 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 反代配置集中一处

04功能矩阵:需求 × 实现状态

核心结论:当前处于「前端能用 + 数据库设计完备 + 中间层空白」的状态。

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
企业微信对接未实现已设计免登、审批、消息模板、待办、回调;方案 + 可点击原型 + 改造脚本已就绪

05迭代路线图

P1–P2 是关键路径,其余阶段可与之并行或在其后展开。

P5-① Docker 环境阿里云镜像源装 Docker Engine + Compose · registry 加速器 · 已完成并验证已完成
P5-② 原型静态页上线compose 编排 · Nginx 容器 · 5 个页面公网 200 · 一键部署脚本已完成
P1 数据库落地起 MariaDB 11.8 容器 · 产出 v3 基线(库名切 fams + 补搬运费/计价配置表与识别词列 + 楼栋种子改五栋)· 执行 v3 与企微 DDL · 逐表核对 · 验证折旧存储过程3–5 人日
P2 前后端打通定义 API 契约 · 写数据访问层 · 前端数据层替换(保留离线降级)· 账号登录 + 楼栋数据隔离8–12 人日
P3 AI 视觉接入接入视觉识别 API · 特征向量与比对服务 · 置信度分级 + 强制复核 · 全屋扫拍比对与差异报告10–15 人日
P4 企微集成执行企微 DDL · 免登与楼栋映射 · 审批模板与回调 · 消息模板 · 待办中心 · 状态=6 撤销回滚8–12 人日
P5-③ 生产化API 容器化 · 域名与 HTTPS · 备份与监控 · CI/CD · 性能与安全加固5–8 人日
P6 验收与报表逐条过 PRD 六条验收标准 + 四项补充验收 · Excel/PDF 导出 · 总经理看板补齐3–5 人日
顺序调整说明:P5 原排在 P2 之后,实际做法是把「Docker 环境就位 + 静态原型上线」提前到最前面做掉 —— 这样后续每个阶段都能随时推一个可访问的版本出来看,而不是憋到最后才见到线上环境。

06云端部署方案(Docker)

项目一律以 Docker 形式部署在云服务器上。阶段 C-1 第一步已完成并验证通过,域名 fa.hrgrp.cn 已绑定(当前协议 HTTP)。

目标机
阿里云 ECS
Ubuntu 24.04.5 LTS · 2 核 / 1740MB
Docker
29.9.1
Compose v5.6.0 · 开机自启
镜像拉取
33秒
走国内 registry 加速器
对外入口
fa.hrgrp.cn
HTTP · 页面与健康检查全部 200
阶段 A · 本地 / 局域网

浏览器直接打开单文件 HTML,或 node server.js 监听 3777 供手机同 WiFi 访问。

注意:无鉴权,不可直接暴露公网。

阶段 C-1 · Docker 单机云 ✓ 已落地

Compose 编排 + Nginx 容器托管静态原型;内容构建时打进镜像,不做宿主机 bind mount。

对外域名 fa.hrgrp.cn(→ 8.137.121.34,协议 HTTP);远程目录 /opt/fams;一键部署 bash deploy/deploy.sh。

阶段 C-2 · Docker 生产

在同一套 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 表);⑤ 无监控告警;⑥ 密钥硬编码风险。

当前阶段不涉及上述阻塞项 —— 站点上只有静态原型,没有业务数据,也没有写接口。

07风险清单

业务风险源自 PRD 遗留清单;技术风险来自两次研发过程中实际踩到的坑与设计复查。

业务风险

#风险影响对策
R1高度同款无痕迹家具无法单件追踪单件台账不准确强制成套管理 + 页面明确提示人工复核
R2家具翻新导致特征匹配失败误判为新增资产翻新须走人工重新建档流程,不做自动判定
R3暗光/遮挡导致识别漏检盘点差异率虚高低置信强制人工复核 + 拍摄规范培训

技术风险

#风险影响对策
T1feature_vector 用 TEXT 存向量视觉检索上线后大概率返工已定案:改用 MariaDB 11.8 原生 VECTOR(n) + VECTOR INDEX(实测可用),免去外接向量库
T2组状态与单件状态双写冗余出现「组在租、资产却闲置」P1 阶段即定聚合推导规则
T3企微审批撤销(Status=6)未回滚资产位置永久错位,退租算错账列入验收清单,P4 必做
T4企微回调超时被永久丢弃数据丢失且不补发落库即响应 + 异步消费 + 定时补偿
T5data.json 单文件持久化并发写与审计能力不足P2 切 MariaDB;过渡期每日备份
T6前端本地存储与 MariaDB 模型不对齐对接期大量重构P1 补字段映射表,P2 一次性重构数据层
T7大文件写入存在落盘竞态交付物损坏难以察觉写入后回读校验;关键脚本加完整性检查
T8交付物路径映射在沙盒内外不一致测试脚本莫名失败脚本统一落工作区根目录执行
历史踩坑提醒(已修复,勿回退):① 折旧留痕早期取的是更新后的累计折旧,等于留痕无意义 —— v2 已改为先存 old_accum 快照再写日志;② SQL 里一处尾引号缺失,会让后面所有语句被当成同一字符串吞掉,文件看着完整但执行静默失败; ③ 沙盒内临时目录映射不一致,测试脚本必须落在工作区根目录执行。

08统一工作空间与研发约定

所有交付物集中到本目录管理;此前分散在独立任务中的成果已全部归集。

D:/家具资产管理/ ├── README.md 项目总纲:定位、导航、快速上手 ├── .dockerignore 构建上下文排除清单 ├── docs/ 项目文档 + 可演示页面 │ ├── 项目开发方案.md / .html ★ 主文档与可视化版(本页) │ ├── 需求规格说明.md PRD 结构化整理 + 验收标准 │ ├── 数据库设计说明.md 42 表清单、存储选型与低配调优、风险与对齐缺口 │ ├── 部署与运维方案.md Docker 部署、备份恢复、监控、企微对接 │ ├── 云端服务器环境摸底.md 目标机实况(通道 / 硬件 / 软件 / 网络) │ ├── furniture_asset_wecom_mobile.html 企微工作台移动端原型 │ ├── wecom_integration_design.html 企微对接技术方案 │ └── wecom_integration_ddl.sql 企微数据库改造脚本 ├── src/ │ ├── web/asset-management-system.html 前端单文件应用(现行版) │ └── server/server.js 多端实时同步服务器 ├── db/ │ ├── furniture_asset_init_v2.sql 数据库基线(32 表;P1 出 v3 后移入 v2/ 存档) │ └── v1/furniture_asset_init_v1.sql v1 历史版本(存档) ├── deploy/ ★ Docker 部署(构建上下文 = 本目录根) │ ├── docker-compose.yml 编排(web 已启用;api / db 预留) │ ├── deploy.sh 一键部署(本地执行) │ ├── .env.example / README.md 环境变量样例 / 部署手册 │ └── web/{Dockerfile,nginx/,site/} 边缘站点镜像与门户页 ├── scripts/provision/ 服务器初始化脚本(sudo / Docker) ├── legacy/ │ ├── prd/ 原始 PRD 存档 │ └── conversations/ 历史任务记录存档 └── .workbuddy/memory/ 工作日志与长期项目约定

研发约定

约定项规则
部署形态(铁律)本项目一律以 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 配套的两个校验脚本待补档

处置方式:优先从历史会话产物目录找回;找不到则按本方案对应章节重做。

09验收标准

PRD 原有六条

  • 移动端单张拍照:可识别房间内家具类型、自动统计数量
  • 全屋扫拍:搬迁完成后全景拍摄可自动比对前后资产,输出差异报告
  • 审核通过后系统自动更新资产位置台账,生成调拨单据
  • AI 识别低置信度场景可触发人工复核弹窗
  • 资产看板、各类报表正常输出,支持 Excel/PDF 导出
  • 所有单据、盘点照片、识别日志可存档查询

本方案补充四条

  • 企微审批「通过后撤销」能正确回滚资产位置
  • 企微回调在 5 秒内响应,超时事件有补偿机制兜底
  • 多楼栋数据权限隔离生效(A 栋角色看不到 F 栋数据)
  • 账号登录、操作留痕、审计日志可查