# bye-odms **Repository Path**: flynnGroup/bye-odms ## Basic Information - **Project Name**: bye-odms - **Description**: ODMS(Owner Decision Management System,业主决策管理系统)面向业主委员会、物业服务人员、社区管理人员和小区业主,提供多小区档案管理、业主认证、议题投票、公告活动、档案归集、报事报修、物业考核、组织权限、登录风控和操作审计能力。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-08 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ODMS 业主决策管理系统 ODMS(Owner Decision Management System,业主决策管理系统)面向业主委员会、物业服务人员、社区管理人员和小区业主,提供多小区档案管理、业主认证、议题投票、公告活动、档案归集、报事报修、物业考核、组织权限、登录风控和操作审计能力。 ![后台登录页面](./docs/assets/系统功能说明/01-后台登录.png) ## 目录结构 ```text apps/ admin-web/ 管理后台前端 owner-app/ 业主端应用(移动端优先,可迁移到 uni-app) services/ odms-service/ Spring Boot 服务端 docs/ README.md 系统功能说明.md 产品方案.md 功能架构.md 开发说明.md 开发规范.md 接口与验收.md 原型图/ 产品原型图 ``` ## 文档 > - 系统功能说明:[`系统功能说明.md`](./docs/系统功能说明.md) > - 产品与范围:[`产品方案.md`](./docs/产品方案.md) > - 功能与技术模块:[`功能架构.md`](./docs/功能架构.md) > - 系统详细设计:[`ODMS-系统详细方案设计.md`](./docs/ODMS-系统详细方案设计.md) > - 本地运行与联调:[`开发说明.md`](./docs/开发说明.md) > - 详细开发约束:[`开发规范.md`](./docs/开发规范.md) > - 接口与验收:[`接口与验收.md`](./docs/接口与验收.md) ## 快速启动 ### 服务端 ```powershell cd services/odms-service mvn spring-boot:run ``` 服务端默认地址:`http://localhost:8080`。默认数据库为本地 H2;登录和认证提交需要可用 Redis,默认使用 9 库。 接入 MySQL 8 和 Redis 时通过环境变量注入连接信息,禁止将密码写入仓库: ```powershell $env:ODMS_DB_URL='jdbc:mysql://:/bye_odms?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai' $env:ODMS_DB_USERNAME='' $env:ODMS_DB_PASSWORD='' $env:ODMS_DB_DRIVER='com.mysql.cj.jdbc.Driver' $env:ODMS_REDIS_HOST='' $env:ODMS_REDIS_PORT='' $env:ODMS_REDIS_PASSWORD='' $env:ODMS_REDIS_DATABASE='9' mvn spring-boot:run ``` ### 管理后台 ```powershell npm install npm run dev:admin ``` 后台默认地址:`http://localhost:5173`。 本地初始管理员账号:`admin` / `admin123`。部署前应接入正式管理员账号和权限体系。 ### 业主端应用 ```powershell npm run dev:owner ``` 应用端默认地址:`http://localhost:5174`。系统不预置业主数据,业主需先完成业务认证,由后台审核后领取动态账号和初始密码。 ## 当前实现范围 - 小区完整档案新增、编辑和状态维护,多小区切换和按小区实时统计;支持楼栋—单元一对多维护、认证位置统计和结构化位置校验;联系人姓名、手机号加密落库。 - 首页提供只读的小区全景成品展示,自动读取当前小区楼栋、路线、设施与区域;“系统管理 > 全景图设置”支持背景颜色/图片、路线、配套设施、功能区域、内容、位置、尺寸、颜色、图标和显示状态配置,并可拖拽调整对象与路线控制点。 - 后台登录、真实驾驶舱聚合、业主名册、认证审核、投票权数、议题与投票管理、人数/面积结果、合规校验、报修流转、服务评价、物业考核、活动、档案、富文本公告和操作审计。 - 管理端和业主端登录均强制图片滑块验证;已知账号连续输错 5 次冻结 30 分钟,同一 IP 连续失败 10 次封禁,后台“系统管理 > 登录风控管理”支持账号解冻和 IP 解封。 - 系统岗位、角色和用户管理;新建用户可选择岗位、分配多个角色和授权多个小区,维修转派与考核负责人均选择具体系统人员。 - 业主端账号密码登录、选择小区、认证申请、审核结果查询、账号领取、真实投票提交、公告查询和报修提交。 - 认证敏感字段使用短期密钥执行 SM4-CBC 加密和 HMAC-SM3 完整性校验,服务端解密后使用主密钥重新加密保存;密码使用 BCrypt 强哈希。 - 登录账号和密码同样使用一次性短期密钥加密传输;短期密钥保存在 Redis 9 库,五分钟过期且使用后立即删除。 - Flyway V1-V18 管理业务表,表、字段均有中文注释,枚举字段注释包含 Java 枚举类名;申请查询凭证仅保存 SHA-256 摘要。 - 服务端提供认证、小区、驾驶舱、业主、投票、报修、公告、活动、档案、评价、考核、组织权限、审计和文件接口,Knife4j 地址为 `http://localhost:8080/doc.html`。 - 文件内容默认保存到本地,可通过 `odms.storage.type` 切换 MinIO、OSS 或 S3;文件元数据持久化到数据库。 ## 当前边界 - 页面不再提供静态业务数据或接口失败后的假数据降级;空库展示真实空状态,接口失败展示明确错误。 - 岗位、角色、权限项、用户角色和用户小区授权已持久化;当前会话令牌尚未接入完整的 Spring Security/JWT 权限拦截链路,生产环境不能直接暴露现有接口。 - `apps/owner-app` 是按小程序尺寸和交互实现的 Vue 3 移动端应用;发布微信小程序前需迁移为 uni-app 页面和构建结构。 - 议题资格快照、投票结果不可变版本、细粒度权限执行、外部实名认证、电子签名和消息通知仍属于生产化开发范围。 文档总览见 `docs/README.md`。实际页面与操作见 `docs/系统功能说明.md`,详细开发约束见 `docs/开发规范.md`,其余产品、架构、设计、联调和验收资料均可由文档总览进入。 ## 自动化测试 ```powershell cd services/odms-service mvn test cd ../.. npm run build:admin npm run build:owner npm run test:e2e ``` Playwright 会在 `18081/15173/15174` 自动启动隔离的 H2 服务端和两个 Vite 前端,使用内存短期密钥与验证码存储,不连接远程 MySQL/Redis。测试覆盖全部菜单路由、滑块验证码与加密登录、组织用户授权、小区完整档案、只读首页全景、背景与路线配置、对象拖拽、设施颜色、配套设施和功能区域配置、具体人员维修流转、富文本公告、活动、档案附件、评价、考核、审计、多小区隔离,以及业主认证、动态账号、投票和报修闭环。