diff --git a/docs/项目方案.md b/docs/项目方案.md new file mode 100644 index 0000000..9743f21 --- /dev/null +++ b/docs/项目方案.md @@ -0,0 +1,119 @@ +# 集团股权架构梳理与可视化项目方案 + +> 创建:2026-08-06 | 负责人:小五(协调+开发),小强(数据采集/维护),小马(风险分析/报告) +> 目标:梳理集团几百家公司的股权架构(投资公司、股权比例、诉讼/法人限高风险),网页仪表盘可视化 + +--- + +## 〇、轻量方案(立即可用):Excel → drawio 自动生成架构图 ✅ 已实现 + +> 爸爸提的需求:手里有一张 Excel(母/子公司名单),想同步用 drawio 生成股权架构图。 + +**现状:已完成并验证(2026-08-06)** +- 脚本:`股权架构/excel2drawio.py`(纯 Python + openpyxl) +- 示例:`股权架构/股权架构示例.xlsx` → `股权架构/股权架构示例.drawio`(8 公司/7 关系验证通过) + +**Excel 格式(表头固定)**: +| 母公司名称 | 子公司名称 | 股权比例(%) | 备注 | +|---|---|---|---| +| 集团总公司 | 全资子公司A | 100 | 全资 | +| 集团总公司 | 控股子公司B | 60 | 控股 | +| 全资子公司A | 孙公司A1 | 100 | 全资 | + +- 每行 = 一条股权关系;无父公司的公司自动识别为根节点(集团) +- 支持任意层级,自动布局(根在上、逐层下排) +- 连线自动标注股权比例 + 备注 +- 样式区分:根=深蓝、中间公司=浅蓝、叶子=灰(后续可加风险标色) + +**用法**: +```bash +python3 excel2drawio.py 股权架构.xlsx 股权架构.drawio +# 改 Excel → 重跑一遍 → drawio 自动刷新(F5) +``` + +**后续增强(待定)**: +- [ ] 风险标色:Excel 加“风险”列(诉讼/限高/失信)→ 节点变黄/红 +- [ ] 自动监视 Excel 文件变化,保存即重新生成(watchdog) +- [ ] 与主仪表盘集成:drawio 嵌入网页,或统一用 ECharts + +--- + +## 一、整体架构 + +``` +[数据源] [采集层] [存储层] [服务层] [展示层] +企查查/天眼查API ──→ Python采集脚本 ──→ PostgreSQL ──→ FastAPI后端 ──→ ECharts网页 +工商公示系统 (小强负责) (群晖) (小五) (仪表盘) +内部投资台账 数据清洗/去重 +执行信息公开网(限高) 定时更新 +裁判文书网(诉讼) +``` + +## 二、分步实施计划 + +### 阶段 0:需求确认与数据源调研(1周) +- [ ] 确认集团主体公司清单来源(内部台账 or 外部查询) +- [ ] 确定数据源方案: + - 方案A:企查查/天眼查开放平台 API(付费,数据全、稳定,几百家≈几千元级) + - 方案B:国家企业信用信息公示系统(免费,但无API、抓取受限、无反查诉讼) + - 方案C:内部资料为主 + 免费源补充(最省钱,但股权比例可能不全) +- [ ] 确认穿透深度(一级子公司 / 二级 / 三级?参股比例阈值?) +- [ ] 确认风险指标口径:诉讼(被告/原告、金额、状态)、法人限高、失信被执行人 +- [ ] 是否有境外主体(BVI/开曼/香港),境外数据源另议 + +### 阶段 1:数据模型与存储设计(0.5周) +- [ ] 建库:PostgreSQL(群晖已有) +- [ ] 核心表: + - `companies`(公司:统一社会信用代码、名称、法人、注册资本、状态) + - `shareholdings`(股权关系:股东公司→被投公司、比例、金额) + - `risk_events`(风险事件:类型[诉讼/限高/失信]、时间、金额、状态) +- [ ] 统一社会信用代码为主键,公司名归一化(去重核心) + +### 阶段 2:数据采集(2-3周,小强主力) +- [ ] 一级子公司清单:从集团内部台账导入(最准确) +- [ ] 股东穿透:逐家查股东结构 → 股权比例 → 二级/三级公司 +- [ ] 循环采集:新发现的公司继续穿透,直到达到设定深度 +- [ ] 风险数据采集:诉讼记录、法人限高、失信信息 +- [ ] 采集脚本断点续传 + 限速防封(企查查API按次数计费需控量) + +### 阶段 3:数据清洗与验证(1周) +- [ ] 公司名归一化、去重(同一公司多种写法合并) +- [ ] 股权比例校验(同层加总≤100%、控股关系判定) +- [ ] 数据质量报告(小强产出,发Gitea issue) +- [ ] 人工抽验 10-20 家关键公司 + +### 阶段 4:可视化仪表盘开发(2周,小五主力) +- [ ] 前端:ECharts 组织树图/力导向图,节点=公司,连线=股权比例 +- [ ] 交互:点击节点展开下级、搜索公司、点击公司看详情(股权链路+风险列表) +- [ ] 风险标识:节点颜色(绿=无风险/黄=有诉讼/红=限高或失信),角标显示风险数 +- [ ] 总览卡片:公司总数、层级数、风险公司占比、限高/诉讼统计 +- [ ] 后端:FastAPI 提供公司查询/关系图/风险数据接口 +- [ ] 部署:群晖 Nginx 静态页 + API 服务(Docker) + +### 阶段 5:持续更新与运维(长期) +- [ ] 定时任务:风险数据每日/每周更新,股权结构季度核对 +- [ ] 小马:定期输出《股权风险周报》(新增诉讼/限高/股权变更摘要) +- [ ] 告警:重点公司出现限高/失信 → 主动通知爸爸 +- [ ] 文档与交接(Gitea 项目仓库托管代码+文档) + +## 三、角色分工 + +| 角色 | 职责 | +|---|---| +| 小五 | 项目架构、数据模型、后端API、可视化开发、整体协调 | +| 小强 | 采集脚本、数据清洗、数据库维护、定时更新 | +| 小马 | 风险分析、周报、图表解读、数据质量复核 | + +## 四、风险与注意 + +- 数据源合规:公开工商数据可爬,但需控制频率;付费API最稳 +- 数据时效:工商数据本身有滞后(变更公示期),需标注数据日期 +- 免费源诉讼数据不全(裁判文书网公开率下降),建议付费源 +- 境外主体数据获取成本高,建议一期先做境内 + +## 五、待爸爸确认的关键决策 + +1. **数据源预算**:是否接受企查查/天眼查 API 付费?(决定采集效率和数据完整度) +2. **穿透深度**:梳理到几级?参股<5%的要不要? +3. **公司清单**:集团内部有没有现成的投资台账/子公司清单? +4. **更新频率**:一次性梳理 or 长期持续监控?