Compare commits

...

7 Commits

Author SHA1 Message Date
史悦
817a7f6da6 优化统计计算器HTML结构和代码 2025-09-16 17:34:34 +08:00
史悦
c9e1bb951c 修复计算 2025-09-16 16:36:53 +08:00
史悦
0d7d5b0a43 根据提供的统计摘要,我看到有3个文件发生了变化:
- 新增了一个关于汇率预测的markdown文件(125行新增)
- 修改了一个工作计划汇报的HTML文件(大量修改)
- 新增了一个统计计算器的HTML文件(451行新增)

基于这些变化,生成的常规提交信息如下:

feat: 新增汇率预测文档和统计计算器功能

- 新增汇率预测相关的markdown文档
- 新增统计计算器HTML页面,提供数据分析功能
- 重构工作计划汇报页面,优化内容结构和布局
2025-09-16 15:51:00 +08:00
史悦
5c9a60ee27 我已经收到了你的文档,里面包含了一个 Git 提交信息生成器的系统指令。
从文档内容来看,这是一个专门用于分析 Git diff 输出并生成符合 Conventional Commits 规范的提交信息的工具。我注意到:

1. **当前状态**:你在 `master` 分支上,刚刚添加了一个名为 `...规划汇报.html` 的新文件(1059行新增内容)

2. **最近的提交历史**显示你在开发一个产品相关的项目,包括:
   - 产品生命周期指标曲线图
   - 精益画布和智能回收终端UI
   - 产品需求文档优化
   - 高保真UI原型设计

根据提供的 diff 统计信息,这次的变更是添加了一个新的 HTML 文件,看起来是产品规划汇报相关的内容。

按照 Conventional Commits 规范,我建议的提交信息是:

feat: 新增产品规划汇报HTML页面

如果你需要我根据更详细的 diff 内容来优化这个提交信息,或者有其他关于这个提交信息生成器的问题,请告诉我!
2025-09-15 18:03:31 +08:00
史悦
e31bf2855a feat: 新增产品生命周期指标曲线图SVG文件 2025-09-15 16:33:58 +08:00
史悦
83f1a51ae5 feat: 重构产品画布为精益画布并添加智能回收终端多角色UI界面 2025-09-15 16:19:57 +08:00
史悦
450f08d05c docs: 优化产品需求文档和功能模块文档结构
- 重构了产品需求文档的章节组织和内容结构
- 改进了智能功能模块的文档格式和可读性
- 优化了一键邻回收和用户故事文档的排版
- 新增了完整的规格文档模板和内容框架
- 统一了文档风格和格式规范,提升文档质量
2025-09-15 14:07:29 +08:00
12 changed files with 3190 additions and 492 deletions

View File

@@ -0,0 +1,337 @@
<svg width="1200" height="1400" viewBox="0 0 1200 1400" xmlns="http://www.w3.org/2000/svg">
<!-- 背景 -->
<rect fill="#f8f9fa" width="100%" height="100%"/>
<!-- 主标题 -->
<text x="600" y="30" text-anchor="middle" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="24" font-weight="bold" fill="#28a745">绿邻回收智能终端系统 - 产品生命周期关键指标曲线图</text>
<!-- 短期规划标题 -->
<text x="600" y="70" text-anchor="middle" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="bold" fill="#1976d2">短期规划 (3年)</text>
<!-- 短期图表区域背景 -->
<rect x="80" y="90" width="1040" height="350" fill="white" stroke="#e1e4e8" stroke-width="1"/>
<!-- 短期图表水平网格线 -->
<g stroke="#e8e8e8" stroke-width="0.5">
<line x1="80" y1="130" x2="1120" y2="130"/>
<line x1="80" y1="170" x2="1120" y2="170"/>
<line x1="80" y1="210" x2="1120" y2="210"/>
<line x1="80" y1="250" x2="1120" y2="250"/>
<line x1="80" y1="290" x2="1120" y2="290"/>
<line x1="80" y1="330" x2="1120" y2="330"/>
<line x1="80" y1="370" x2="1120" y2="370"/>
<line x1="80" y1="410" x2="1120" y2="410"/>
</g>
<!-- 短期图表垂直网格线 -->
<g stroke="#e8e8e8" stroke-width="0.5">
<line x1="200" y1="90" x2="200" y2="440"/>
<line x1="350" y1="90" x2="350" y2="440"/>
<line x1="500" y1="90" x2="500" y2="440"/>
<line x1="650" y1="90" x2="650" y2="440"/>
<line x1="800" y1="90" x2="800" y2="440"/>
<line x1="950" y1="90" x2="950" y2="440"/>
</g>
<!-- 短期X轴标签 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="12" fill="#666" text-anchor="middle">
<text x="140" y="460">Q1</text>
<text x="200" y="460">Q2</text>
<text x="275" y="460">Q3</text>
<text x="350" y="460">Q4</text>
<text x="425" y="460">第2年</text>
<text x="575" y="460">第2年末</text>
<text x="725" y="460">第3年</text>
<text x="875" y="460">第3年末</text>
</g>
<!-- 短期阶段描述 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="10" fill="#888" text-anchor="middle">
<text x="140" y="475">启动</text>
<text x="200" y="475">验证</text>
<text x="275" y="475">增长</text>
<text x="350" y="475">扩张</text>
<text x="425" y="475">规模化</text>
<text x="575" y="475">成熟</text>
<text x="725" y="475">稳定</text>
<text x="875" y="475">优化</text>
</g>
<!-- 短期Y轴标签 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="11" fill="#666" text-anchor="end">
<text x="75" y="95">100%</text>
<text x="75" y="170">75%</text>
<text x="75" y="250">50%</text>
<text x="75" y="330">25%</text>
<text x="75" y="410">0%</text>
</g>
<!-- 短期用户增长曲线 -->
<path d="M 140,400 Q 170,380 200,350 Q 240,300 275,250 Q 315,200 350,170 Q 390,150 425,140 Q 500,130 575,125 Q 650,120 725,118 Q 800,115 875,113"
stroke="#4caf50" stroke-width="3" fill="none"/>
<!-- 短期收入增长曲线 -->
<path d="M 140,420 Q 170,400 200,370 Q 240,320 275,270 Q 315,220 350,180 Q 390,150 425,135 Q 500,125 575,120 Q 650,115 725,112 Q 800,110 875,108"
stroke="#2196f3" stroke-width="3" fill="none"/>
<!-- 短期终端部署曲线 -->
<path d="M 140,410 Q 170,390 200,360 Q 240,310 275,260 Q 315,210 350,175 Q 390,145 425,138 Q 500,128 575,123 Q 650,118 725,115 Q 800,112 875,110"
stroke="#ff9800" stroke-width="3" fill="none"/>
<!-- 短期关键节点标记 -->
<g fill="white" stroke-width="2">
<circle cx="140" cy="400" r="4" stroke="#4caf50"/>
<circle cx="200" cy="350" r="4" stroke="#4caf50"/>
<circle cx="275" cy="250" r="4" stroke="#4caf50"/>
<circle cx="350" cy="170" r="4" stroke="#4caf50"/>
<circle cx="575" cy="125" r="4" stroke="#4caf50"/>
<circle cx="875" cy="113" r="4" stroke="#4caf50"/>
</g>
<!-- 短期关键数据标注 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="9" fill="#666">
<text x="140" y="385" text-anchor="middle" font-weight="bold">5个终端</text>
<text x="200" y="335" text-anchor="middle" font-weight="bold">20个终端</text>
<text x="275" y="235" text-anchor="middle" font-weight="bold">100个终端</text>
<text x="350" y="155" text-anchor="middle" font-weight="bold">500个终端</text>
<text x="575" y="110" text-anchor="middle" font-weight="bold">2000个终端</text>
<text x="875" y="98" text-anchor="middle" font-weight="bold">5000个终端</text>
</g>
<!-- 短期图例 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="11">
<rect x="950" y="100" width="150" height="80" fill="white" stroke="#e1e4e8" stroke-width="1" rx="3"/>
<text x="1025" y="118" text-anchor="middle" font-weight="bold" fill="#333">短期指标</text>
<line x1="960" y1="130" x2="980" y2="130" stroke="#4caf50" stroke-width="2"/>
<text x="985" y="135" fill="#4caf50">用户增长</text>
<line x1="960" y1="145" x2="980" y2="145" stroke="#2196f3" stroke-width="2"/>
<text x="985" y="150" fill="#2196f3">收入增长</text>
<line x1="960" y1="160" x2="980" y2="160" stroke="#ff9800" stroke-width="2"/>
<text x="985" y="165" fill="#ff9800">终端部署</text>
</g>
<!-- 长期规划标题 -->
<text x="600" y="520" text-anchor="middle" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="bold" fill="#1976d2">长期规划 (6年)</text>
<!-- 定义图表区域 -->
<defs>
<linearGradient id="userGrowth" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#4caf50;stop-opacity:0.3"/>
<stop offset="100%" style="stop-color:#4caf50;stop-opacity:0.8"/>
</linearGradient>
<linearGradient id="revenueGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#2196f3;stop-opacity:0.3"/>
<stop offset="100%" style="stop-color:#2196f3;stop-opacity:0.8"/>
</linearGradient>
<linearGradient id="terminalGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#ff9800;stop-opacity:0.3"/>
<stop offset="100%" style="stop-color:#ff9800;stop-opacity:0.8"/>
</linearGradient>
</defs>
<!-- 长期图表背景和网格 -->
<rect x="80" y="540" width="1040" height="600" fill="white" stroke="#e1e4e8" stroke-width="1"/>
<!-- 长期水平网格线 -->
<g stroke="#e8e8e8" stroke-width="0.5">
<line x1="80" y1="600" x2="1120" y2="600"/>
<line x1="80" y1="660" x2="1120" y2="660"/>
<line x1="80" y1="720" x2="1120" y2="720"/>
<line x1="80" y1="780" x2="1120" y2="780"/>
<line x1="80" y1="840" x2="1120" y2="840"/>
<line x1="80" y1="900" x2="1120" y2="900"/>
<line x1="80" y1="960" x2="1120" y2="960"/>
<line x1="80" y1="1020" x2="1120" y2="1020"/>
<line x1="80" y1="1080" x2="1120" y2="1080"/>
</g>
<!-- 长期垂直网格线 -->
<g stroke="#e8e8e8" stroke-width="0.5">
<line x1="150" y1="540" x2="150" y2="1140"/>
<line x1="280" y1="540" x2="280" y2="1140"/>
<line x1="410" y1="540" x2="410" y2="1140"/>
<line x1="540" y1="540" x2="540" y2="1140"/>
<line x1="670" y1="540" x2="670" y2="1140"/>
<line x1="800" y1="540" x2="800" y2="1140"/>
<line x1="930" y1="540" x2="930" y2="1140"/>
<line x1="1060" y1="540" x2="1060" y2="1140"/>
</g>
<!-- 长期X轴标签 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="12" fill="#666" text-anchor="middle">
<text x="150" y="1160">启动期</text>
<text x="280" y="1160">成长期</text>
<text x="410" y="1160">快速发展期</text>
<text x="540" y="1160">扩张期</text>
<text x="670" y="1160">成熟期</text>
<text x="800" y="1160">稳定期</text>
<text x="930" y="1160">优化期</text>
<text x="1060" y="1160">转型期</text>
</g>
<!-- 长期阶段描述 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="10" fill="#888" text-anchor="middle">
<text x="150" y="1175">0-6月</text>
<text x="280" y="1175">6-12月</text>
<text x="410" y="1175">1-2年</text>
<text x="540" y="1175">2-3年</text>
<text x="670" y="1175">3-4年</text>
<text x="800" y="1175">4-5年</text>
<text x="930" y="1175">5-6年</text>
<text x="1060" y="1175">6年+</text>
</g>
<!-- 长期Y轴标签 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="11" fill="#666" text-anchor="end">
<text x="75" y="545"></text>
<text x="75" y="660">75%</text>
<text x="75" y="780">50%</text>
<text x="75" y="900">25%</text>
<text x="75" y="1020">0%</text>
<text x="75" y="1140"></text>
</g>
<!-- 长期用户增长曲线 (绿色) -->
<path d="M 150,1080 Q 200,1040 280,960 Q 350,840 410,780 Q 480,700 540,660 Q 600,620 670,600 Q 730,580 800,570 Q 860,565 930,568 Q 990,572 1060,575"
stroke="#4caf50" stroke-width="3" fill="none" marker-end="url(#arrowGreen)"/>
<!-- 长期收入增长曲线 (蓝色) -->
<path d="M 150,1110 Q 200,1090 280,1040 Q 350,940 410,840 Q 480,740 540,680 Q 600,630 670,600 Q 730,575 800,565 Q 860,560 930,562 Q 990,565 1060,568"
stroke="#2196f3" stroke-width="3" fill="none" marker-end="url(#arrowBlue)"/>
<!-- 长期终端部署数量曲线 (橙色) -->
<path d="M 150,1100 Q 200,1070 280,1000 Q 350,880 410,800 Q 480,720 540,670 Q 600,630 670,605 Q 730,585 800,575 Q 860,570 930,572 Q 990,575 1060,578"
stroke="#ff9800" stroke-width="3" fill="none" marker-end="url(#arrowOrange)"/>
<!-- 长期运营成本曲线 (红色,先升后降) -->
<path d="M 150,960 Q 200,910 280,840 Q 350,780 410,760 Q 480,750 540,760 Q 600,780 670,810 Q 730,840 800,880 Q 860,910 930,940 Q 990,960 1060,980"
stroke="#f44336" stroke-width="3" fill="none" marker-end="url(#arrowRed)"/>
<!-- 长期市场占有率曲线 (紫色) -->
<path d="M 150,1120 Q 200,1100 280,1060 Q 350,980 410,900 Q 480,820 540,760 Q 600,710 670,680 Q 730,660 800,650 Q 860,645 930,648 Q 990,652 1060,655"
stroke="#9c27b0" stroke-width="3" fill="none" marker-end="url(#arrowPurple)"/>
<!-- 箭头标记定义 -->
<defs>
<marker id="arrowGreen" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#4caf50"/>
</marker>
<marker id="arrowBlue" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#2196f3"/>
</marker>
<marker id="arrowOrange" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#ff9800"/>
</marker>
<marker id="arrowRed" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#f44336"/>
</marker>
<marker id="arrowPurple" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#9c27b0"/>
</marker>
</defs>
<!-- 长期关键节点标记 -->
<g fill="white" stroke-width="2">
<!-- 启动期关键节点 -->
<circle cx="150" cy="1080" r="6" stroke="#4caf50"/>
<circle cx="150" cy="1110" r="6" stroke="#2196f3"/>
<circle cx="150" cy="1100" r="6" stroke="#ff9800"/>
<!-- 成长期关键节点 -->
<circle cx="280" cy="960" r="6" stroke="#4caf50"/>
<circle cx="280" cy="1040" r="6" stroke="#2196f3"/>
<circle cx="280" cy="1000" r="6" stroke="#ff9800"/>
<!-- 快速发展期关键节点 -->
<circle cx="410" cy="780" r="6" stroke="#4caf50"/>
<circle cx="410" cy="840" r="6" stroke="#2196f3"/>
<circle cx="410" cy="800" r="6" stroke="#ff9800"/>
<!-- 扩张期关键节点 -->
<circle cx="540" cy="660" r="6" stroke="#4caf50"/>
<circle cx="540" cy="680" r="6" stroke="#2196f3"/>
<circle cx="540" cy="670" r="6" stroke="#ff9800"/>
<!-- 成熟期关键节点 -->
<circle cx="670" cy="600" r="6" stroke="#4caf50"/>
<circle cx="670" cy="600" r="6" stroke="#2196f3"/>
<circle cx="670" cy="605" r="6" stroke="#ff9800"/>
</g>
<!-- 长期图例 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="12">
<!-- 图例背景 -->
<rect x="850" y="550" width="260" height="140" fill="white" stroke="#e1e4e8" stroke-width="1" rx="5"/>
<!-- 图例标题 -->
<text x="980" y="570" text-anchor="middle" font-weight="bold" fill="#333">长期关键指标</text>
<!-- 图例项目 -->
<g>
<line x1="860" y1="585" x2="885" y2="585" stroke="#4caf50" stroke-width="3"/>
<text x="895" y="590" fill="#4caf50">用户增长率</text>
<line x1="860" y1="605" x2="885" y2="605" stroke="#2196f3" stroke-width="3"/>
<text x="895" y="610" fill="#2196f3">收入增长率</text>
<line x1="860" y1="625" x2="885" y2="625" stroke="#ff9800" stroke-width="3"/>
<text x="895" y="630" fill="#ff9800">终端部署数量</text>
<line x1="860" y1="645" x2="885" y2="645" stroke="#f44336" stroke-width="3"/>
<text x="895" y="650" fill="#f44336">运营成本</text>
<line x1="860" y1="665" x2="885" y2="665" stroke="#9c27b0" stroke-width="3"/>
<text x="895" y="670" fill="#9c27b0">市场占有率</text>
</g>
</g>
<!-- 长期关键节点数据标注 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="10" fill="#666">
<!-- 启动期 -->
<text x="150" y="1040" text-anchor="middle" font-weight="bold">启动期目标</text>
<text x="150" y="1053" text-anchor="middle">• 10个终端部署</text>
<text x="150" y="1066" text-anchor="middle">• 500+用户注册</text>
<!-- 成长期 -->
<text x="280" y="920" text-anchor="middle" font-weight="bold">成长期目标</text>
<text x="280" y="933" text-anchor="middle">• 100个终端</text>
<text x="280" y="946" text-anchor="middle">• 5000+用户</text>
<!-- 快速发展期 -->
<text x="410" y="740" text-anchor="middle" font-weight="bold">发展期目标</text>
<text x="410" y="753" text-anchor="middle">• 500个终端</text>
<text x="410" y="766" text-anchor="middle">• 3万+用户</text>
<!-- 扩张期 -->
<text x="540" y="620" text-anchor="middle" font-weight="bold">扩张期目标</text>
<text x="540" y="633" text-anchor="middle">• 2000个终端</text>
<text x="540" y="646" text-anchor="middle">• 15万+用户</text>
<!-- 成熟期 -->
<text x="670" y="560" text-anchor="middle" font-weight="bold">成熟期目标</text>
<text x="670" y="573" text-anchor="middle">• 5000个终端</text>
<text x="670" y="586" text-anchor="middle">• 50万+用户</text>
</g>
<!-- 长期关键里程碑标注 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="11" fill="#f57c00" font-weight="bold">
<text x="280" y="1205">首次盈利</text>
<text x="410" y="1205">规模化复制</text>
<text x="540" y="1205">市场领先</text>
<text x="670" y="1205">生态完善</text>
<text x="800" y="1205">平台化</text>
</g>
<!-- 分隔线和说明 -->
<line x1="80" y1="500" x2="1120" y2="500" stroke="#ddd" stroke-width="2"/>
<!-- 底部说明 -->
<g font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="11" fill="#888">
<text x="80" y="1250">说明上方显示3年短期规划的快速发展轨迹下方展示6年长期规划的完整生命周期包含用户增长、收入增长、终端部署、运营成本和市场占有率五个核心指标的变化趋势。</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,112 +1,184 @@
<svg width="1200" height="800" viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg">
<svg width="900" height="550" viewBox="0 0 900 550" xmlns="http://www.w3.org/2000/svg" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif">
<defs>
<style>
.box { fill: white; stroke: #333; stroke-width: 2; }
.main-title { font-size: 20px; font-weight: bold; text-anchor: middle; }
.number { font-size: 32px; font-weight: bold; fill: #444; text-anchor: end; }
.title { font-size: 14px; font-weight: bold; text-anchor: middle; }
.desc { font-size: 10px; fill: #666; text-anchor: middle; }
.content { font-size: 9px; fill: #333; text-anchor: start; }
.content-bold { font-size: 9px; fill: #333; font-weight: bold; text-anchor: start; }
</style>
</defs>
<!-- 背景 -->
<rect fill="#f8f9fa" width="100%" height="100%"/>
<!-- 主标题 -->
<text x="600" y="45" text-anchor="middle" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="28" font-weight="bold" fill="#28a745">产品画布 - 绿邻回收 (Green Neighbor Recycling)</text>
<text x="450" y="35" class="main-title" fill="#28a745">产品精益画布 - 绿邻回收智能终端系统</text>
<!-- Column 1 -->
<g id="col1">
<!-- 目标用户 (Customer Segments) -->
<rect x="25" y="80" width="370" height="350" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="25" y="80" width="370" height="40" fill="#e6f7eb"/>
<text x="35" y="105" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">1. 目标用户 (Customer Segments)</text>
<text x="35" y="140" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">C端用户 (居民):</text>
<text x="35" y="165" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 社区中老年人 (对价格敏感, 在意便利性)</text>
<text x="35" y="185" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 注重环保的年轻家庭 (追求品质生活)</text>
<text x="35" y="205" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 图方便的上班族 (时间宝贵)</text>
<text x="35" y="240" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">B端伙伴 (小站):</text>
<text x="35" y="265" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 社区小超市、便利店</text>
<text x="35" y="285" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 快递驿站、干洗店</text>
<text x="35" y="305" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">(诉求: 增加额外收入, 吸引更多客流)</text>
<!-- 核心问题 (Problem) -->
<rect x="25" y="440" width="370" height="330" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="25" y="440" width="370" height="40" fill="#e6f7eb"/>
<text x="35" y="465" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">2. 核心问题 (Problem)</text>
<text x="35" y="500" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">对居民:</text>
<text x="35" y="525" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 卖废品麻烦: 需囤积、等待、走远路。</text>
<text x="35" y="545" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 价格不透明: 流动商贩随意定价。</text>
<text x="35" y="565" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 渠道不稳定: 回收车时有时无。</text>
<text x="35" y="600" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">对小站伙伴:</text>
<text x="35" y="625" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 线下门店客流变现难。</text>
<text x="35" y="645" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 缺乏稳定、低成本的增收方式。</text>
<text x="35" y="680" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">现有替代方案:</text>
<text x="35" y="705" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 流动回收车 (不方便, 不稳定)</text>
<text x="35" y="725" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 大型回收站 (距离远)</text>
<text x="35" y="745" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 直接丢弃 (不环保, 浪费)</text>
<!-- Canvas Grid starting at y=60, centered in 900px width -->
<g transform="translate(75, 60)">
<!-- ROW 1 & 2 -->
<!-- Box 1: 问题 (rowspan=2) -->
<g transform="translate(0, 0)">
<rect width="150" height="300" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#ffebee"/>
<g transform="translate(75, 20)">
<text class="title" fill="#c62828">问题</text>
</g>
<text x="10" y="50" class="content-bold">居民痛点:</text>
<text x="10" y="62" class="content">• 卖废品麻烦,需囤积等人</text>
<text x="10" y="74" class="content">• 老人操作困难,现有方案不友好</text>
<text x="10" y="86" class="content">• 价格不透明,缺乏信任</text>
<text x="10" y="108" class="content-bold">商家痛点:</text>
<text x="10" y="120" class="content">• 人工成本高,需专人管理</text>
<text x="10" y="132" class="content">• 技术门槛高,缺乏智能方案</text>
<text x="10" y="154" class="content-bold">现有替代方案局限:</text>
<text x="10" y="166" class="content">• 流动回收车时间不固定</text>
<text x="10" y="178" class="content">• 人工回收点成本高</text>
<text x="130" y="280" class="number">1</text>
</g>
<!-- Column 2 -->
<g id="col2">
<!-- 独特价值主张 (Unique Value Proposition) -->
<rect x="415" y="80" width="370" height="200" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="415" y="80" width="370" height="40" fill="#e6f7eb"/>
<text x="425" y="105" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">3. 独特价值主张 (UVP)</text>
<text x="425" y="150" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="bold" fill="#f57c00">下楼就卖废品,</text>
<text x="425" y="180" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="bold" fill="#f57c00">方便、透明、还能换东西!</text>
<text x="425" y="220" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 对用户: 极致便利, 公平价格</text>
<text x="425" y="240" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 对伙伴: 零成本增收, 锁定客流</text>
<!-- 解决方案 (Solution) -->
<rect x="415" y="290" width="370" height="220" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="415" y="290" width="370" height="40" fill="#e6f7eb"/>
<text x="425" y="315" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">4. 解决方案 (Solution)</text>
<text x="425" y="345" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">微信小程序 (核心载体):</text>
<text x="425" y="370" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 用户端: LBS找站、个人账户、价格公示。</text>
<text x="425" y="390" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444"> (适老化设计: 大字体/图标/语音播报)</text>
<text x="425" y="415" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 小站端: 扫码识客、称重计价、数据汇总。</text>
<text x="425" y="445" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">线下运营体系:</text>
<text x="425" y="470" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 小站 → 小仓 → 大仓 → 打包站 的SOP流程。</text>
<!-- 渠道 (Channels) -->
<rect x="415" y="520" width="370" height="250" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="415" y="520" width="370" height="40" fill="#e6f7eb"/>
<text x="425" y="545" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">5. 渠道 (Channels)</text>
<text x="425" y="575" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 线下: 社区地推、合作点(小站)引流、</text>
<text x="425" y="595" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444"> 与物业/居委会合作。</text>
<text x="425" y="620" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 线上: 微信群、本地生活公众号。</text>
<text x="425" y="645" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 传播: 用户口碑、小礼品激励分享。</text>
<!-- Box 4: 解决方案 -->
<g transform="translate(150, 0)">
<rect width="150" height="150" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#e3f2fd"/>
<g transform="translate(75, 20)">
<text class="title" fill="#1976d2">解决方案</text>
</g>
<text x="10" y="50" class="content-bold">智能终端系统:</text>
<text x="10" y="62" class="content">• 平板显示二维码供扫描</text>
<text x="10" y="74" class="content">• 蓝牙电子秤自动称重</text>
<text x="10" y="86" class="content">• 大字体显示金额重量</text>
<text x="10" y="108" class="content-bold">多角色管理:</text>
<text x="10" y="120" class="content">• 普通用户/管理员/清运员</text>
<text x="10" y="132" class="content">• 统一平台,智能分权</text>
<text x="130" y="130" class="number">4</text>
</g>
<!-- Column 3 -->
<g id="col3">
<!-- 收入来源 (Revenue Streams) -->
<rect x="805" y="80" width="370" height="200" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="805" y="80" width="370" height="40" fill="#e6f7eb"/>
<text x="815" y="105" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">6. 收入来源 (Revenue Streams)</text>
<text x="815" y="140" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">• 核心收入: 废品差价</text>
<text x="815" y="160" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">(打包站售价 - 居民收购价)</text>
<text x="815" y="190" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#333" font-weight="bold">• 增值收入:</text>
<text x="815" y="210" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">- 小站商品导流佣金</text>
<text x="815" y="230" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">- 小程序内广告 (如环保品牌)</text>
<text x="815" y="250" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">- To B/G 数据服务</text>
<!-- Box 3: 独特卖点 (rowspan=2) -->
<g transform="translate(300, 0)">
<rect width="150" height="300" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#fff3e0"/>
<g transform="translate(75, 20)">
<text class="title" fill="#f57c00">独特卖点</text>
</g>
<g transform="translate(75, 60)">
<text class="desc" style="font-size: 14px; font-weight: bold;" fill="#f57c00">
<tspan x="0" dy="0">微信扫一扫,</tspan>
<tspan x="0" dy="20">老少皆宜智能回收</tspan>
</text>
</g>
<text x="10" y="120" class="content-bold">对用户价值:</text>
<text x="10" y="132" class="content">• 扫码即用,操作超简单</text>
<text x="10" y="144" class="content">• 价格透明,立即到账</text>
<text x="10" y="166" class="content-bold">对商家价值:</text>
<text x="10" y="178" class="content">• 零人工成本,智能管理</text>
<text x="10" y="190" class="content">• 稳定增收,吸引客流</text>
<text x="130" y="280" class="number">3</text>
</g>
<!-- 成本结构 (Cost Structure) -->
<rect x="805" y="290" width="370" height="220" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="805" y="290" width="370" height="40" fill="#e6f7eb"/>
<text x="815" y="315" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">7. 成本结构 (Cost Structure)</text>
<text x="815" y="345" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 技术研发成本 (小程序开发、服务器)</text>
<text x="815" y="370" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 线下运营成本 (仓储、物流、车辆)</text>
<text x="815" y="395" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 人力成本 (管理团队、司机、分拣员)</text>
<text x="815" y="420" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 市场营销成本 (地推、物料、活动)</text>
<text x="815" y="445" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 小站补贴/分成 (给合作方的激励)</text>
<!-- Box 9: 门槛优势 -->
<g transform="translate(450, 0)">
<rect width="150" height="150" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#fce4ec"/>
<g transform="translate(75, 20)">
<text class="title" fill="#ad1457">门槛优势</text>
</g>
<text x="10" y="50" class="content-bold">产品壁垒:</text>
<text x="10" y="62" class="content">• 老人友好设计(市场空白)</text>
<text x="10" y="74" class="content">• 低成本智能化方案</text>
<text x="10" y="96" class="content-bold">运营壁垒:</text>
<text x="10" y="108" class="content">• 点位网络效应</text>
<text x="10" y="120" class="content">• 先发优势抢占资源</text>
<text x="130" y="130" class="number">9</text>
</g>
<!-- 关键指标 (Key Metrics) -->
<rect x="805" y="520" width="370" height="150" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="805" y="520" width="370" height="40" fill="#e6f7eb"/>
<text x="815" y="545" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">8. 关键指标 (Key Metrics)</text>
<text x="815" y="575" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 用户增长: 注册用户数、日/月活用户(DAU/MAU)</text>
<text x="815" y="600" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 业务量: 日均回收单量、回收品类重量</text>
<text x="815" y="625" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 网络扩张: 成功签约并运营的小站数量</text>
<text x="815" y="650" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 用户粘性: 用户复用率、单用户月均交易次数</text>
<!-- Box 2: 客户群体分类 (rowspan=2) -->
<g transform="translate(600, 0)">
<rect width="150" height="300" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#e8f5e8"/>
<g transform="translate(75, 20)">
<text class="title" fill="#2e7d32">客户群体分类</text>
</g>
<text x="10" y="50" class="content-bold">核心用户 (C端):</text>
<text x="10" y="62" class="content">• 社区中老年人 (扫码即用)</text>
<text x="10" y="74" class="content">• 环保意识强的年轻家庭</text>
<text x="10" y="86" class="content">• 图方便的上班族</text>
<text x="10" y="108" class="content-bold">合作伙伴 (B端):</text>
<text x="10" y="120" class="content">• 社区超市、便利店</text>
<text x="10" y="132" class="content">• 快递驿站、物业服务点</text>
<text x="10" y="154" class="content-bold">需求特征:</text>
<text x="10" y="166" class="content">• 操作简单、零成本增收</text>
<text x="10" y="178" class="content">• 智能化管理、吸引客流</text>
<text x="130" y="280" class="number">2</text>
</g>
<!-- 竞争壁垒 (Unfair Advantage) -->
<rect x="805" y="680" width="370" height="90" fill="#ffffff" stroke="#e1e4e8" stroke-width="1"/>
<rect x="805" y="680" width="370" height="40" fill="#e6f7eb"/>
<text x="815" y="705" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="18" font-weight="600" fill="#0d442a">9. 竞争壁垒 (Unfair Advantage)</text>
<text x="815" y="735" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 强大的线下运营和地推能力 (最核心)</text>
<text x="815" y="755" font-family="'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#444">• 率先抢占的社区点位网络效应</text>
<!-- ROW 2 (remaining cells) -->
<!-- Box 8: 关键指标 -->
<g transform="translate(150, 150)">
<rect width="150" height="150" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#e0f2f1"/>
<g transform="translate(75, 20)">
<text class="title" fill="#00695c">关键指标</text>
</g>
<text x="10" y="50" class="content-bold">运营指标:</text>
<text x="10" y="62" class="content">• 单终端日均交易量</text>
<text x="10" y="74" class="content">• 终端网络覆盖社区数</text>
<text x="10" y="96" class="content-bold">用户指标:</text>
<text x="10" y="108" class="content">• 操作成功率、用户满意度</text>
<text x="10" y="120" class="content">• 用户复购率、推荐率</text>
<text x="130" y="130" class="number">8</text>
</g>
<!-- Box 5: 渠道 -->
<g transform="translate(450, 150)">
<rect width="150" height="150" class="box"/>
<rect x="0" y="0" width="150" height="30" fill="#f3e5f5"/>
<g transform="translate(75, 20)">
<text class="title" fill="#7b1fa2">渠道</text>
</g>
<text x="10" y="50" class="content-bold">线下布点:</text>
<text x="10" y="62" class="content">• 社区超市、快递站合作</text>
<text x="10" y="74" class="content">• 与物业/居委会合作</text>
<text x="10" y="96" class="content-bold">用户触达:</text>
<text x="10" y="108" class="content">• 微信生态扫一扫直达</text>
<text x="10" y="120" class="content">• 业主群推广分享</text>
<text x="130" y="130" class="number">5</text>
</g>
<!-- ROW 3 -->
<!-- Box 7: 成本分析 (colspan=3) -->
<g transform="translate(0, 300)">
<rect width="375" height="150" class="box"/>
<rect x="0" y="0" width="375" height="30" fill="#fff8e1"/>
<g transform="translate(187.5, 20)">
<text class="title" fill="#f57f17">成本分析</text>
</g>
<text x="10" y="50" class="content-bold">单点成本:</text>
<text x="10" y="62" class="content">• 硬件成本: 1000元/终端 • 部署成本: 2000元/点</text>
<text x="10" y="84" class="content-bold">运营成本:</text>
<text x="10" y="96" class="content">• 技术维护、云服务 • 清运物流、客服支持</text>
<text x="10" y="118" class="content-bold">分成成本:</text>
<text x="10" y="130" class="content">• 与场地方交易额分账</text>
<text x="355" y="130" class="number">7</text>
</g>
<!-- Box 6: 收入分析 (colspan=3) -->
<g transform="translate(375, 300)">
<rect width="375" height="150" class="box"/>
<rect x="0" y="0" width="375" height="30" fill="#e8f5e8"/>
<g transform="translate(187.5, 20)">
<text class="title" fill="#2e7d32">收入分析</text>
</g>
<text x="10" y="50" class="content-bold">主要收入流:</text>
<text x="10" y="62" class="content">• 废品回收差价 (终端回收价 vs 批发销售价的差额) - 核心收入</text>
<text x="10" y="74" class="content">• 与合作场地按交易量分成 - 激励合作</text>
<text x="10" y="96" class="content-bold">增值收入流:</text>
<text x="10" y="108" class="content">• 规模化后的数据服务收入 • 绿色积分商城佣金</text>
<text x="10" y="130" class="content">• 单点投入3000元预期4-10个月回本</text>
<text x="355" y="130" class="number">6</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -58,47 +58,69 @@
```mermaid
graph TD
subgraph 用户端 (User Layer)
C_MP[C端居民小程序<br>(uni-app / Vue.js)]
B_MP[B端小站小程序<br>(uni-app / Vue.js)]
C_MP[C端用户小程序<br>(uni-app / Vue.js)]
Admin[管理后台Web<br>(Vue 3 + Element Plus)]
Maintenance[运维端APP<br>(Flutter / React Native)]
end
subgraph 智能终端层 (Terminal Layer)
Terminal1[智能终端设备#1<br>(嵌入式Linux + Qt)]
Terminal2[智能终端设备#2<br>(嵌入式Linux + Qt)]
TerminalN[智能终端设备#N<br>(嵌入式Linux + Qt)]
end
subgraph 网关层 (API Gateway)
Gateway[API Gateway<br>(Nginx)]
Gateway[API Gateway<br>(Nginx + Load Balancer)]
end
subgraph 后端服务 (Backend Service)
Backend[后端应用服务器<br>(Node.js + NestJS)]
AIService[AI识别服务<br>(Python + TensorFlow)]
DeviceManager[设备管理服务<br>(MQTT Broker)]
end
subgraph 数据层 (Data Layer)
DB[(PostgreSQL<br>核心业务数据)]
Cache[(Redis<br>缓存/会话)]
TimeSeries[(InfluxDB<br>设备时序数据)]
end
C_MP --> Gateway
B_MP --> Gateway
Admin --> Gateway
Maintenance --> Gateway
Terminal1 --> DeviceManager
Terminal2 --> DeviceManager
TerminalN --> DeviceManager
Gateway --> Backend
Backend --> AIService
Backend --> DeviceManager
Backend --> DB
Backend --> Cache
DeviceManager --> TimeSeries
AIService --> Cache
```
### 3.2 技术选型理由
- **前端 (uni-app + Vue)**: 一次开发多端发布极大提升MVP开发效率统一技术栈。
- **后端 (Node.js + NestJS)**: 全栈语言统一TypeScript架构清晰适合企业级应用保证代码质量和可维护性
- **数据库 (PostgreSQL + Redis)**: PostgreSQL功能强大满足地理位置查询等复杂需求Redis作为缓存保证系统响应速度
- **前端 (uni-app + Vue)**: 一次开发多端发布极大提升MVP开发效率C端小程序和运维端APP统一技术栈。
- **智能终端 (嵌入式Linux + Qt)**: 稳定可靠的嵌入式系统Qt提供良好的触屏界面开发体验支持多媒体和网络通信
- **后端 (Node.js + NestJS)**: 全栈语言统一TypeScript微服务架构清晰适合处理高并发的设备连接
- **AI服务 (Python + TensorFlow)**: 成熟的机器学习框架,支持物品识别模型的训练和推理。
- **设备通信 (MQTT)**: 轻量级物联网协议,适合终端设备与云端的实时通信。
- **数据库 (PostgreSQL + Redis + InfluxDB)**: PostgreSQL处理业务数据Redis提供缓存和会话InfluxDB专门存储设备时序数据。
### 3.3 风险评估与应对策略
- **技术风险**:
- **风险点**: `uni-app` 在部分低端安卓机型上可能存在性能瓶颈
- **应对策略**: 在开发中期,选取核心页面(如扫码、列表)进行专项性能测试,预留优化时间
- **团队风险**:
- **风险点**: 团队成员对 `NestJS``uni-app` 的熟练度可能不一
- **应对策略**: 在项目启动前安排1-2天的技术预研Spike统一代码规范和最佳实践
- **需求风险**:
- **风险点**: MVP开发期间出现重大需求变更影响核心交付范围
- **应对策略**: 建立需求变更控制流程。所有需求变更需经由产品、项目、研发三方共同评估影响后,再决定是否纳入当前版本
- **硬件风险**:
- **风险点**: 智能终端设备的硬件稳定性和恶劣环境适应性
- **应对策略**: 选择工业级硬件组件,进行充分的环境测试(高温、低温、湿度、振动)
- **AI识别风险**:
- **风险点**: 物品识别准确率可能达不到预期,影响用户体验
- **应对策略**: 建立持续学习机制,收集错误样本不断优化模型;设置人工审核机制作为兜底
- **网络风险**:
- **风险点**: 终端设备网络不稳定导致数据传输中断
- **应对策略**: 实现本地数据缓存机制,支持断网重连和数据补传
- **成本风险**:
- **风险点**: 单台设备成本超出3000元预算影响盈利模式。
- **应对策略**: 严格控制硬件BOM成本探索批量采购降本优化设计减少不必要功能。
---
@@ -111,6 +133,7 @@ graph TD
CREATE TABLE users (
id SERIAL PRIMARY KEY,
wx_openid VARCHAR(255) UNIQUE NOT NULL,
phone_number VARCHAR(20) UNIQUE,
nickname VARCHAR(255),
avatar_url TEXT,
balance DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
@@ -118,26 +141,33 @@ CREATE TABLE users (
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- 2. B端回收小站
CREATE TABLE stations (
-- 2. 智能终端设备
CREATE TABLE terminals (
id SERIAL PRIMARY KEY,
device_code VARCHAR(100) UNIQUE NOT NULL,
name VARCHAR(255) NOT NULL,
address TEXT NOT NULL,
location GEOGRAPHY(POINT, 4326),
manager_name VARCHAR(100),
phone_number VARCHAR(20),
status VARCHAR(20) NOT NULL DEFAULT 'active',
venue_type VARCHAR(50) NOT NULL, -- supermarket, express_station, etc.
venue_contact_name VARCHAR(100),
venue_contact_phone VARCHAR(20),
status VARCHAR(20) NOT NULL DEFAULT 'online', -- online, offline, maintenance, error
hardware_version VARCHAR(50),
software_version VARCHAR(50),
deployment_cost DECIMAL(10, 2) DEFAULT 3000.00,
deployment_date DATE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- 3. 小站员工
CREATE TABLE staff (
-- 3. 终端配置
CREATE TABLE terminal_configs (
id SERIAL PRIMARY KEY,
station_id INT NOT NULL REFERENCES stations(id),
phone_number VARCHAR(20) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL DEFAULT 'staff',
terminal_id INT NOT NULL REFERENCES terminals(id),
bag_count INT NOT NULL DEFAULT 3,
max_weight_per_bag DECIMAL(10, 2) DEFAULT 50.00,
ai_confidence_threshold DECIMAL(3, 2) DEFAULT 0.85,
network_config JSONB,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
@@ -146,7 +176,9 @@ CREATE TABLE staff (
CREATE TABLE categories (
id SERIAL PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
code VARCHAR(20) UNIQUE NOT NULL, -- bottle, paper, textile
unit VARCHAR(20) NOT NULL DEFAULT 'kg',
ai_model_labels TEXT[], -- AI识别标签数组
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
@@ -155,20 +187,22 @@ CREATE TABLE categories (
CREATE TABLE prices (
id SERIAL PRIMARY KEY,
category_id INT NOT NULL REFERENCES categories(id),
station_id INT NOT NULL REFERENCES stations(id),
terminal_id INT NOT NULL REFERENCES terminals(id),
price DECIMAL(10, 2) NOT NULL,
effective_date TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(category_id, station_id)
UNIQUE(category_id, terminal_id)
);
-- 6. 交易记录总表
CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL REFERENCES users(id),
station_id INT NOT NULL REFERENCES stations(id),
staff_id INT NOT NULL REFERENCES staff(id),
terminal_id INT NOT NULL REFERENCES terminals(id),
total_amount DECIMAL(10, 2) NOT NULL,
payment_method VARCHAR(20) DEFAULT 'balance', -- balance, wechat_pay
ai_confidence_score DECIMAL(3, 2),
transaction_images TEXT[], -- 交易过程图片
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
@@ -177,9 +211,44 @@ CREATE TABLE transaction_items (
id SERIAL PRIMARY KEY,
transaction_id INT NOT NULL REFERENCES transactions(id) ON DELETE CASCADE,
category_id INT NOT NULL REFERENCES categories(id),
bag_number INT NOT NULL, -- 投入的袋子编号
weight DECIMAL(10, 2) NOT NULL,
price_per_unit DECIMAL(10, 2) NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
ai_identified_category VARCHAR(100), -- AI识别的品类
ai_confidence DECIMAL(3, 2), -- AI置信度
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- 8. 终端状态监控表
CREATE TABLE terminal_status (
id SERIAL PRIMARY KEY,
terminal_id INT NOT NULL REFERENCES terminals(id),
cpu_usage DECIMAL(5, 2),
memory_usage DECIMAL(5, 2),
disk_usage DECIMAL(5, 2),
network_status VARCHAR(20),
temperature DECIMAL(5, 2),
bag_weights JSONB, -- 各袋子当前重量 {"bag1": 25.5, "bag2": 30.2}
error_codes VARCHAR(255)[],
last_heartbeat TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- 9. 设备维护记录表
CREATE TABLE maintenance_records (
id SERIAL PRIMARY KEY,
terminal_id INT NOT NULL REFERENCES terminals(id),
maintenance_type VARCHAR(50) NOT NULL, -- routine, repair, emergency
operator_name VARCHAR(100),
operator_phone VARCHAR(20),
description TEXT,
before_images TEXT[],
after_images TEXT[],
cost DECIMAL(10, 2),
status VARCHAR(20) DEFAULT 'completed', -- pending, in_progress, completed
scheduled_at TIMESTAMPTZ,
completed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
```
@@ -189,28 +258,43 @@ CREATE TABLE transaction_items (
## 5. 核心API接口设计
### 5.1 管理后台API (`/api/admin`)
- **终端管理**: `GET, POST, PUT /terminals/:id`
- **品类管理**: `GET, POST, PUT /categories/:id`
- **小站管理**: `GET, POST, PUT /stations/:id`
- **价格管理**: `GET, POST /prices`
- **员工管理**: `GET, POST /staff`
- **维护管理**: `GET, POST /maintenance`
- **数据监控**: `GET /monitoring/dashboard`
### 5.2 C端小程序API (`/api/c`)
- **认证**: `POST /auth/login` (微信Code换JWT)
- **用户信息**: `GET /profile`
- **核心功能**:
- `GET /features/prices` (今日回收价)
- `GET /features/nearby-stations` (附近小站)
- `GET /features/nearby-terminals` (附近终端)
- `GET /features/transactions` (交易记录)
- `GET /features/qrcode` (生成登录二维码)
### 5.3 B端小程序API (`/api/b`)
- **认证**: `POST /auth/login` (手机号密码登录)
- **回收流程**:
- `GET /recycle/user-info` (扫码识客)
- `POST /recycle/transactions` (创建交易)
- **数据查询**:
- `GET /data/summary` (今日汇总)
- `GET /data/inventory` (库存盘点)
- `GET /data/categories` (可用回收品类)
### 5.3 智能终端设备API (`/api/terminal`)
- **设备认证**: `POST /auth/device` (设备注册登录)
- **用户识别**: `POST /user/identify` (二维码/手机号识别)
- **交易流程**:
- `POST /transaction/start` (开始交易)
- `POST /transaction/weigh` (称重数据上传)
- `POST /transaction/ai-verify` (AI识别验证)
- `POST /transaction/complete` (完成交易)
- **设备状态**:
- `POST /status/heartbeat` (设备心跳)
- `POST /status/error` (错误报告)
- `GET /config` (获取设备配置)
### 5.4 运维端API (`/api/maintenance`)
- **认证**: `POST /auth/login` (运维人员登录)
- **任务管理**:
- `GET /tasks` (获取维护任务)
- `POST /tasks/:id/start` (开始任务)
- `POST /tasks/:id/complete` (完成任务)
- **设备检测**:
- `POST /device/:id/diagnose` (设备诊断)
- `POST /device/:id/repair` (维修记录)
---

View File

@@ -15,25 +15,29 @@
| 一级菜单 | 二级菜单 (页面) | 功能模块 | 细节描述 | 对应PRD/用户故事 |
| :--- | :--- | :--- | :--- | :--- |
| **数据中心** | **运营驾驶舱** | 核心KPI展示 | - 今日交易总额、总单数、总重量<br>- 活跃用户数 (DAU/MAU)<br>- 新增用户数 | PRD 6.1.1 |
| | | 业务数据图表 | - 各品类回收趋势图 (近7/30天)<br>- 各小站回收量动态排名<br>- 用户活跃时段分布图 | PRD 6.1.1 |
| **运营管理** | **小站管理** | 小站列表 | - 显示小站ID、名称、地址、负责人、联系电话、状态(营业/休息中/已关闭)<br>- 支持按名称、地址、负责人搜索<br>- 支持按状态筛选 | PRD 6.1.3 |
| | | 小站详情/编辑 | - **基本信息**查看和修改名称、地址、地理位置(地图选点)、负责人、营业时间<br>- **员工管理**:关联/解绑小站员工账号<br>- **服务状态**手动切换小站营业/休息状态<br>- **交易数据**查看该小站的历史交易流水 | PRD 6.1.3, 用户故事 5.2.3 |
| | | 入驻审核 | - 查看待审核的小站申请列表<br>- 点击审核,可查看提交资料,并执行“通过”或“驳回”操作 | PRD 6.1.3 |
| | **品类价格管理** | 回收品类列表 | - 显示品类ID、名称、单位如kg、状态启用/停用)<br>- 支持新增、编辑、停用品类 | PRD 6.1.4, 用户故事 6.3.2 |
| | | 价格策略配置 | - 选择一个或多个小站,为指定品类设置回收单价<br>- 支持批量调价和设置价格生效时间<br>- 可查看历史价格调整记录 | PRD 6.1.4, 用户故事 5.2.2 |
| | | 物流损耗配置 | - 为不同品类设置全局或区域性的运输损耗比例纸壳损耗2% | PRD 6.1.4, 用户故事 6.3.3 |
| **交易管理** | **订单流水** | 交易列表 | - 列表展示所有交易记录交易ID、用户昵称、回收小站、总金额、创建时间<br>- 支持按交易ID、用户、小站、时间范围进行复合查询 | PRD 6.1.5, 初步设计 2. MVP |
| | | 订单详情 | - 查看单笔交易的详细信息,包括所有回收物品的品类、重量、单价、金额 | PRD 6.1.5 |
| **用户管理** | **C端用户列表** | 用户信息查询 | - 列表展示所有C端用户信息用户ID、微信昵称、头像、账户余额、注册时间<br>- 支持按用户ID、昵称查询 | PRD 6.1.2 |
| | | 用户详情 | - 查看用户的基本信息、账户余额、完整的交易记录列表 | PRD 6.1.2 |
| **物流管理** | **揽收任务** | 任务列表 | - 查看所有物流任务任务ID、状态待揽收/运输中/已入库)、司机、关联小站、创建时间<br>- 支持按状态、司机、小站筛选 | PRD 6.1.6, V1.1规划 |
| | | 任务详情 | - 查看任务包含的所有待交接的品类和重量信息,以及实际交接的记录 | PRD 6.1.6, V1.1规划 |
| | | 司机管理 | - 管理物流司机信息(姓名、联系方式、关联车辆) | PRD 6.1.6, V1.1规划 |
| **财务管理** | **结算管理** | 对账单 | - 生成与小站、物流司机的周期性结算账单<br>- 账单需清晰列出所有明细,并扣除平台服务费/损耗 | PRD 6.1.7, V1.2规划 |
| | | 提现审批 | - (若C端提现需人工审核)处理C端用户的提现申请 | PRD 3.1.3 (V1.1) |
| | | 账单导出 | - 支持将结算账单导出为Excel格式 | PRD 6.1.7 |
| **系统管理** | **角色与权限** | 角色管理 | - 创建、编辑后台角色(如:运营、财务、客服)<br>- 为角色分配不同的菜单和操作权限(增删改查) | PRD 6.1.8 |
| | | 账号管理 | - 创建后台操作员账号,并为其分配角色 | PRD 6.1.8 |
| | **系统监控** | 登录日志 | - 查看所有后台账号的登录历史记录包括登录IP、时间、设备信息 | PRD 6.1.8 |
| | | 报警中心 | - 集中展示系统产生的各类业务异常报警库存预警、交易异常、API错误<br>- 支持查看报警详情、标记处理状态、记录处理过程 | PRD 6.1.9, 用户故事 6.3.4 |
| **数据中心** | **运营驾驶舱** | 核心KPI展示 | - 今日交易总额、总单数、总重量<br>- 活跃用户数 (DAU/MAU)<br>- 在线设备数/故障设备数<br>- 设备利用率和平均交易频次 | PRD 7.1.1 |
| | | 实时监控大屏 | - 地图展示所有终端位置和状态<br>- 各终端实时交易数据<br>- 设备健康状态色彩编码<br>- 异常设备实时告警 | PRD 7.1.1, 用户故事 4.2.1 |
| **设备管理** | **终端设备列表** | 设备信息管理 | - 显示设备编号、名称、地址、场地方信息、运行状态<br>- 支持按设备编号、地址、状态搜索<br>- 设备部署成本和投资回收期显示 | PRD 7.1.2 |
| | | 设备详情/编辑 | - **基本信息**设备编号、位置、场地方联系方式<br>- **硬件配置**袋子数量、最大承重、AI识别阈值<br>- **运行状态**在线/离线/故障/维护中<br>- **交易数据**该设备的历史交易流水和收益分析 | PRD 7.1.2 |
| | | 设备部署管理 | - 新设备入网配置和参数设置<br>- 设备软件版本管理和远程更新<br>- 设备网络配置和连接状态监控 | PRD 7.1.2 |
| | **设备监控** | 实时状态监控 | - 各设备CPU、内存、存储使用率<br>- 网络连接状态和数据传输质量<br>- 各袋子实时重量和容量预警<br>- 设备温度和环境监控 | PRD 7.1.2, 用户故事 4.2.1 |
| | | 故障预警系统 | - AI预测设备故障风险<br>- 自动生成维护提醒<br>- 故障类型统计和趋势分析 | PRD 7.1.9, 用户故事 4.2.2 |
| **运营管理** | **品类价格管理** | 回收品类列表 | - 显示品类ID、名称、代码、单位、AI识别标签<br>- 支持新增、编辑、停用品类<br>- AI识别模型标签配置 | PRD 7.1.4 |
| | | 价格策略配置 | - 选择一个或多个终端,为指定品类设置回收单价<br>- 支持批量调价和设置价格生效时间<br>- 可查看历史价格调整记录和市场价格对比 | PRD 7.1.4 |
| | | AI识别配置 | - 设置不同品类的AI识别置信度阈值<br>- 上传训练样本和错误样本管理<br>- 模型识别准确率统计和优化建议 | PRD 7.1.4 |
| **交易管理** | **订单流水** | 交易列表 | - 列表展示所有交易记录:交易ID、用户昵称、终端设备、总金额、AI置信度、创建时间<br>- 支持按交易ID、用户、设备、时间范围进行复合查询 | PRD 7.1.5 |
| | | 订单详情 | - 查看单笔交易的详细信息,包括所有回收物品的品类、重量、单价、金额<br>- 显示AI识别结果和置信度<br>- 交易过程图片查看 | PRD 7.1.5 |
| | | 异常交易处理 | - 低置信度交易人工审核<br>- 用户投诉处理和退款管理<br>- 异常交易模式分析 | PRD 7.1.5 |
| **用户管理** | **C端用户列表** | 用户信息查询 | - 列表展示所有C端用户信息用户ID、微信昵称、手机号、账户余额、注册时间<br>- 用户行为分析:常用设备、交易频次、偏好品类 | PRD 7.1.3 |
| | | 用户详情 | - 查看用户的基本信息、账户余额、完整的交易记录列表<br>- 用户设备使用热力图和行为轨迹 | PRD 7.1.3 |
| **运维管理** | **维护任务** | 任务列表 | - 查看所有运维任务任务ID、类型巡检/维修/清运)、设备、运维人员、状态<br>- 支持按任务类型、状态、设备筛选 | PRD 7.1.6 |
| | | 任务详情 | - 查看任务的详细信息、维修记录、更换备件<br>- 维修前后照片对比<br>- 维修成本和时长统计 | PRD 7.1.6 |
| | | 运维人员管理 | - 管理运维工程师信息(姓名、联系方式、技能等级、负责区域) | PRD 7.1.6 |
| | **库存清运** | 清运计划 | - 基于设备容量自动生成清运计划<br>- 最优路线规划和运输成本计算<br>- 清运记录和重量核对 | PRD 7.1.5 |
| **财务管理** | **结算管理** | 对账单 | - 生成与场地方、运维团队的周期性结算账单<br>- 设备投资成本分摊和回收期计算<br>- 账单需清晰列出所有明细和分润比例 | PRD 7.1.7 |
| | | 成本分析 | - 单台设备成本构成分析<br>- 运营成本趋势和优化建议<br>- ROI计算和盈利预测 | PRD 7.1.7 |
| | | 提现审批 | - (若C端提现需人工审核)处理C端用户的提现申请 | PRD 4.1.4 |
| **系统管理** | **角色与权限** | 角色管理 | - 创建、编辑后台角色(如:运营、技术、财务、客服)<br>- 为角色分配不同的菜单和操作权限(增删改查) | PRD 7.1.8 |
| | | 账号管理 | - 创建后台操作员账号,并为其分配角色<br>- 设备访问权限管理 | PRD 7.1.8 |
| | **智能监控** | 系统日志 | - 查看所有后台账号的登录历史记录、设备操作日志<br>- 异常操作行为分析和告警 | PRD 7.1.8 |
| | | 智能报警中心 | - 集中展示设备故障、容量预警、交易异常、网络中断等告警<br>- AI辅助故障诊断和处理建议<br>- 告警处理流程跟踪和效果评估 | PRD 7.1.9 |

View File

@@ -5,9 +5,9 @@
## 1. 执行摘要 (Executive Summary)
**绿邻回收**是一个旨在革新城市社区废品回收模式的环保科技项目。我们通过构建一个以微信小程序为载体,连接居民、社区小站和回收产业链的超便捷回收网络,解决当前城市废品回收中存在的最后一公里难题。
**绿邻回收**是一个旨在革新城市社区废品回收模式的环保科技项目。我们通过在各大超市、快递门口部署智能回收终端,结合微信小程序后台管理系统,打造一个全自动化、高效透明的废品回收网络,解决当前城市废品回收中存在的"最后一公里"难题。
我们的核心业务是,用户(特别是中老年人)可以方便地将家中的可回收废品(初期聚焦于塑料瓶、纸壳、旧衣物)送到楼下的合作小站(如超市、快递驿站),通过一个极其简单的“适老化”小程序进行称重、计价,并立即获得现金或兑换商品。小站的废品将由我们的物流体系每日归集到城市中心仓,再统一销售给大型打包站,从而形成一个高效、透明、共赢的商业闭环
我们的核心产品是智能回收终端设备配备1-3个回收袋用于分类收集饮料瓶、废纸、织物等可回收物品通过AI摄像头自动识别监控回收物品平板电脑显示重量和操作界面整个系统由坚固的铝合金骨架组合而成。用户只需将废品投入对应的回收袋系统自动称重计价通过简单的身份识别即可完成交易实现真正的无人值守智能回收
本项目致力于通过技术手段和创新的运营模式,提升回收效率,改善用户体验,为环保事业贡献力量,并创造可观的经济价值。
@@ -55,57 +55,59 @@
## 4. 产品与服务 (Product and Service)
### 4.1 核心载体:微信小程序
分为两个端:用户端和小站端
### 4.1 核心产品:智能回收终端
我们的核心产品是部署在各大超市、快递门口的智能回收终端设备
- **用户端**:
- **核心功能**: 查看附近小站、回收价格公示、个人账户(交易记录、余额)。
- **“适老化”设计**: 超大字体、语音播报、极简流程、无需复杂注册。
- **硬件组成**:
- **分类回收袋**: 1-3个可配置回收袋用于分类收集饮料瓶、废纸、织物等不同品类
- **AI视觉监控**: 高清摄像头实时监控回收物品,确保分类正确性和防止异物投入
- **智能称重**: 精准称重传感器,实时显示重量和计算价格
- **交互平板**: 用户友好的触摸屏界面,支持身份识别、重量显示、交易确认
- **结构骨架**: 坚固的铝合金框架,确保设备稳定性和防护性能
- **小站端**:
- **核心功能**: 扫码识别用户、称重品类录入、自动计价、结算(现金/兑换)、当日汇总。
- **设计理念**: 操作直观,功能聚焦,稳定可靠。
- **软件系统**:
- **用户端微信小程序**: 查看附近终端、回收价格公示、个人账户管理
- **终端操作系统**: 支持多种身份识别方式,自动称重计价,实时数据上传
- **后台管理系统**: 远程监控终端状态、数据统计分析、故障预警
### 4.2 业务流程
这是一个完整闭环系统,从居民到最终的打包站。
这是一个基于智能终端的完整闭环系统,从居民到最终的打包站。
``` mermaid
graph TD
subgraph 用户端
A[居民在家整理废品] --> B{下楼前往小站};
A[居民在家整理废品] --> B[前往超市/快递门口终端];
end
subgraph 小站
B --> C[站长使用小程序称重];
C --> D[系统自动计算价格];
D --> E{选择结算方式};
E --> F[获得现金/兑换商品];
E --> G[积分存入账户];
F --> H[完成回收];
G --> H;
C --> I[废品暂存小站];
subgraph 智能终端
B --> C[用户身份识别登录];
C --> D[选择回收品类投入对应袋子];
D --> E[AI摄像头监控验证物品];
E --> F[系统自动称重计价];
F --> G[用户确认交易];
G --> H[积分/现金到账];
H --> I[废品自动存储在终端];
end
subgraph 物流与仓储
I --> J(每日由专人从小站收集);
J --> K[转运至邻近小仓];
K --> L(专车每日从小仓归集);
L --> M[送达城市大仓];
M --> N[分类、压缩、存储];
I --> J[终端满载自动预警];
J --> K[物流团队定期清运];
K --> L[运输至城市大仓];
L --> M[分类、压缩、存储];
end
subgraph 供应链末端
N --> O(定期从大仓转运);
O --> P[销售给大型打包站];
M --> N[定期从大仓转运];
N --> O[销售给大型打包站];
end
P --> |资金回流| Q((分润体系));
O --> |资金回流| P((分润体系));
subgraph 收益分配
Q --> |利润| CEO/公司;
Q --> |服务费| B端小站;
Q --> |回收金| A;
Q --> |工资/运费| 物流与仓储;
P --> |利润| 公司运营;
P --> |场地费| 超市/快递站;
P --> |回收金| A;
P --> |运维成本| 设备维护;
end
```
@@ -143,11 +145,12 @@ graph TD
## 7. 财务规划 (Financial Plan)
### 7.1 成本结构 (Cost Structure)
- **技术开发成本**: 小程序开发、服务器、数据库等。
- **人力成本**: 核心团队、线下运营及物流人员的工资。
- **营销成本**: 地推活动、物料制作费用。
- **运营成本**: 仓储租金、运输车辆油耗及维护
- **设备成本**: 每个终端设备约2500元包含摄像头、平板、称重传感器、铝合金骨架、组装调试
- **部署成本**: 每个站点部署费用约300元包含运输、安装、调试、培训
- **运维成本**: 每个站点月运维成本约200元包含设备维护、软件更新、故障处理
- **技术开发成本**: 软件系统开发、云服务器、数据库等
- **给用户的回收金**: 支付给用户的废品费用。
- **总投入**: 每个站点总投入成本约3000元实现一期自循环目标。
### 7.2 收入来源 (Revenue Streams)
- **核心收入**: 将从大仓集中处理后的可回收物,以更高的价格批量出售给大型打包站或处理厂,赚取其中的差价。
@@ -165,21 +168,25 @@ graph TD
```mermaid
sequenceDiagram
participant User as 用户
participant Station as 小站端小程序
participant Terminal as 智能终端
participant Camera as AI摄像头
participant Server as 后端服务器
User->>User: 在家整理好废品
User->>Station: 带着废品到楼下小站
Station->>User: 站长:欢迎,请出示您的手机号/会员码
User->>Station: (提供手机号后4位)
Station->>Server: 查询用户信息 (手机号:xxxx)
Server-->>Station: 返回用户信息
Station->>Station: 站长选择品类(纸壳),放置上称
Station->>Server: 上传数据(用户ID, 品类:纸壳, 重量:2.5kg)
Server-->>Station: 返回计算价格(3.75元)
Station->>User: 站长一共3块7毛5您要现金还是换东西
User->>Station: 就要现金吧
Station->>Server: 确认交易(用户ID, 金额:3.75, 方式:现金)
Server-->>Station: 交易成功
Station->>User: (支付现金)好了,欢迎下次再来!
User->>Terminal: 前往超市/快递门口的智能终端
Terminal->>User: 显示欢迎界面,请选择登录方式
User->>Terminal: 手机号/扫码/刷卡登录
Terminal->>Server: 验证用户身份
Server-->>Terminal: 返回用户信息
Terminal->>User: 显示用户昵称,请选择回收品类
User->>Terminal: 选择"废纸"并投入对应袋子
Camera->>Terminal: AI识别确认是废纸类物品
Terminal->>Terminal: 自动称重 (2.5kg)
Terminal->>Server: 上传数据(用户ID, 品类:废纸, 重量:2.5kg)
Server-->>Terminal: 返回计算价格(3.75元)
Terminal->>User: 显示"废纸2.5kg价值3.75元,确认交易吗?"
User->>Terminal: 点击确认
Terminal->>Server: 确认交易(用户ID, 金额:3.75)
Server-->>Terminal: 交易成功
Terminal->>User: 语音播报"交易成功获得3.75元"并显示交易完成界面
```

View File

@@ -0,0 +1,125 @@
### **第一部分:关键数据假设与市场调研**
为了让财务模型尽可能贴近现实,我们首先需要基于公开数据和行业惯例,对几个核心运营指标进行合理假设。
#### **假设1回收品类与价格**
四线城市废品回收价格相对稳定,但利润空间较一线城市薄。我们选取最常见、居民产生量最大的**废纸板**和**塑料瓶**作为核心分析对象。
* **废纸板 (黄板纸)**
* **回收价 (给用户)**:¥ 0.8元/公斤 (¥ 0.4元/斤)
* **出售价 (给打包站)**:¥ 1.2元/公斤 (¥ 0.6元/斤)
* **毛利**:¥ 0.4元/公斤
* **塑料瓶 (PET)**
* **回收价 (给用户)**:¥ 1.4元/公斤 (¥ 0.7元/斤)
* **出售价 (给打包站)**:¥ 2.0元/公斤 (¥ 1.0元/斤)
* **毛利**:¥ 0.6元/公斤
> **分析**:价差是核心盈利来源。这个价差需要覆盖场地、物流、设备折旧、运营等所有成本。
#### **假设2单站点日均回收量**
这是决定收入的关键变量,也是最难预测的。一个部署在超市或快递驿站门口的回收点,其回收量受社区大小、居民习惯、竞争等多种因素影响。参考行业数据,我们做一个**保守的**估算。
* **覆盖户数**:假设站点能有效覆盖周边 300-500 户常住居民。
* **日均有效投递户数**:假设每天有 5% 的家庭前来投递,即 15-25 户。
* **平均每户投递量**:假设每户平均投递 1.5 公斤的可回收物。
* **日均总回收量**22.5公斤 - 37.5公斤。为方便计算,我们取一个中间值 **30公斤/天**
* **品类构成**:根据生活经验,废纸板通常占大头。我们假设 **废纸板:塑料瓶 = 2:1**
* 废纸板20公斤/天
* 塑料瓶10公斤/天
#### **假设3运营成本参数**
* **场地合作费 (给超市/驿站)**:在四线城市,直接给付高额租金不现实。采用**利润分成**或**低额固定费用**是主流。我们按 **“营业额的10%”** 作为场地合作费,这样能更好地激励合作伙伴。
* **物流清运成本**假设一个物流人员兼职或专职配备一辆三轮车每天可负责清运10-15个站点。单个站点的清运成本被摊薄。
* 人员薪资(四线城市):¥ 3000/月
* 车辆折旧及电费:¥ 300/月
* 总物流成本:¥ 3300/月
* **分摊到单站的月物流成本** (按15个站计算):¥ 3300 / 15 = **¥ 220/月**
* **设备维护与网络费**您的计划书中提到200元/月这在初期可能偏高。我们采用一个更贴近实际的估算硬件年度维护成本5%+ 物联网卡及服务器费用。
* (¥ 1500 * 5%) / 12个月 + ¥ 20/月 ≈ **¥ 27/月**
* **其他运营成本**:包括小程序维护、客服、可能的坏账损失等,计提 **¥ 50/月**。
---
### **第二部分:单站点财务模型分析 (月度)**
基于以上假设,我们来构建一个单站点的月度财务模型。
#### **A. 月度收入估算**
* **月总回收量**:
* 废纸板: 20公斤/天 * 30天 = 600公斤
* 塑料瓶: 10公斤/天 * 30天 = 300公斤
* **月度毛利 (收入)**:
* 废纸板毛利: 600公斤 * ¥ 0.4/公斤 = ¥ 240
* 塑料瓶毛利: 300公斤 * ¥ 0.6/公斤 = ¥ 180
* **合计月度毛利**: ¥ 240 + ¥ 180 = **¥ 420**
#### **B. 月度成本估算**
1. **给用户的回收金 (变动成本)**
* 废纸板: 600公斤 * ¥ 0.8 = ¥ 480
* 塑料瓶: 300公斤 * ¥ 1.4 = ¥ 420
* **合计回收金**: ¥ 900
2. **月度运营成本 (固定成本)**
* **场地合作费**: (¥ 480 + ¥ 420) * 10% = **¥ 90**
* **物流清运成本**: **¥ 220**
* **设备维护网络费**: **¥ 27**
* **其他运营成本**: **¥ 50**
* **合计月度运营成本**: ¥ 90 + ¥ 220 + ¥ 27 + ¥ 50 = **¥ 387**
#### **C. 月度利润计算**
* **单站月度净利润** = 月度毛利 - 月度运营成本
* **单站月度净利润** = ¥ 420 - ¥ 387 = **¥ 33**
---
### **第三部分:投资回报分析**
#### **1. 初始投资成本 (CAPEX)**
* 设备投入: ¥ 1500
* 部署成本: ¥ 300 (如您计划书所述)
* **单站总投资**: **¥ 1800**
#### **2. 投资回收期 (Payback Period)**
* **计算公式**: 总投资 / 月度净利润
* **回收期**: ¥ 1800 / ¥ 33/月 ≈ **54.5个月**
#### **3. 年化投资回报率 (Annual ROI)**
* **计算公式**: (年净利润 / 总投资) * 100%
* **年净利润**: ¥ 33/月 * 12个月 = ¥ 396
* **年化ROI**: (¥ 396 / ¥ 1800) * 100% = **22%**
---
### **第四部分:结论与专业建议**
#### **分析结论**
1. **盈利能力非常脆弱**在当前保守的回收量假设下单个站点的月净利润仅为33元。这意味着模型对任何变量的波动都极其敏感。例如如果日均回收量下降到25公斤项目就会开始亏损。
2. **投资回收期过长**54.5个月约4年半的回收期对于一个硬件设备可能只有3-5年寿命的轻资产项目来说风险非常高。在收回成本之前设备可能就需要更新换代了。
3. **规模效应是关键**:单个站点无法盈利,但项目的核心在于通过规模化运营来摊薄成本、提升效率。特别是**物流成本**,只有当一个清运人员能覆盖足够多的站点时,单站成本才能降下来。
#### **专业建议与破局之道**
您的商业模式很有潜力,但必须优化财务模型才能走通。以下是几条关键建议:
1. **提升单点回收量是第一要务**
* **精准选址**:必须选择社区活跃度高、老年人多、且周边缺少竞争的“黄金点位”。前期需要投入大量精力进行地推和市场调研。
* **强效地推和用户教育**您的营销策略非常正确。“回收换鸡蛋”等活动虽然会短期增加成本但如果能将日均回收量从30公斤提升到50公斤整个模型就会发生质变月净利将超过200元回收期缩短至1年以内
2. **优化成本结构**
* **降低物流成本**能否与驿站或超市老板达成更深度的合作由他们进行“暂存”和“集包”当废品达到一定量级如500公斤您再派车统一清运这将极大降低物流频次和成本。
* **探索“众包物流”**:利用社区内的闲散劳动力(如三轮车主、退休人员),以订单制或兼职形式进行清运,进一步降低固定的人力成本。
3. **开拓多元化收入来源**
* **押注高价值品类**:除了纸板和塑料,能否增加对**旧衣物、金属(易拉罐)**等高毛利品类的回收?特别是旧衣物,其回收和处理链条利润空间更大。
* **广告收入前置**在设备屏幕和微信小程序上为社区周边的商家如小餐馆、理发店、菜市场摊主提供极其廉价如50-100元/月)的广告位。这笔收入虽然不多,但在项目初期可能是“救命钱”,可以直接覆盖掉一部分运营成本。
* **政府补贴**:积极与当地街道、环保部门沟通。垃圾分类和资源回收是政府的重点工作,很有可能申请到环保项目试点补贴或一次性的设备购置补贴,这将极大改善您的初始投资压力。

View File

@@ -30,19 +30,20 @@
### 1.3 项目目标
- **V1.0 (MVP) 目标**:
- 验证核心商业模式:居民到小站的回收流程
- 在1-2个试点社区,实现每周100+笔交易。
- C端用户次月留存率达到30%B端小站无主动流失
- 验证智能终端的核心商业模式:无人值守自动回收
- 部署10-15台终端设备,实现每周200+笔交易。
- 单台设备日均交易量达到15笔用户重复使用率达到40%。
- 实现每台设备3000元投入成本的自循环盈利模式。
### 1.4 核心用户画像
- **C端 - 居民**:
- **王大妈**: 65岁退休在家对价格敏感会用微信但对复杂操作有困难。希望卖废品能像去超市买菜一样简单。
- **B端 - 小站站长**:
- **李老板**: 45岁社区超市店主。希望回收操作不影响主业记账清晰能快速和上游完成交接结算。
- **物流端 - 司机**:
- **张师傅**: 35岁回收车队司机。希望能有清晰的揽收路线交接时不用手写单据扫个码就能搞定
- **后台 - 运营经理**:
- **小陈**: 28岁公司运营。希望实时看到各小站的回收数据,能灵活调整回收品类和价格
- **C端 - 居民用户**:
- **王大妈**: 65岁退休在家对价格敏感希望24小时随时能卖废品操作要像ATM一样简单直观
- **小张**: 30岁上班族希望下班路过超市时能快速处理家里的快递纸箱不用排队等人工服务。
- **B端 - 场地方**:
- **超市老板**: 希望终端设备不占用过多空间,不影响正常营业,还能获得稳定的场地租金收入。
- **快递站点**: 希望设备能吸引更多客流,带动快递业务,增加额外收入来源
- **运营端 - 设备管理员**:
- **小陈**: 28岁负责终端设备的远程监控、故障处理、定期清运等运维工作
---
@@ -50,166 +51,202 @@
```mermaid
graph TD
subgraph C端用户
A[1.居民携带废品到小站] --> B{2.出示个人收款码};
subgraph 用户
A[1.居民携带废品到终端] --> B[2.终端屏幕身份识别];
end
subgraph B端用户
B --> C[3.站长扫码识别用户];
C --> D[4.选择品类, 输入重量];
D --> E[5.确认金额, 完成交易];
E --> F((资金计入用户余额));
E --> G[6.定期向上游发起交接];
subgraph 智能终端
B --> C[3.选择回收品类];
C --> D[4.投入对应回收袋];
D --> E[5.AI摄像头识别验证];
E --> F[6.自动称重计价];
F --> G[7.用户确认交易];
G --> H((资金计入用户余额));
G --> I[8.废品存储在终端];
end
subgraph 物流端
G --> H[7.司机接单, 前往小站];
H --> I[8.扫小站出库码, 核对品类重量];
I --> J[9.确认揽收, 运输至打包站];
subgraph 后台监控
I --> J[9.终端容量监控];
J --> K{是否达到清运阈值?};
K -->|是| L[10.自动派发清运任务];
K -->|否| M[继续接收废品];
end
subgraph 物流清运
L --> N[11.物流团队接收任务];
N --> O[12.前往终端清运];
O --> P[13.运输至处理中心];
end
subgraph 管理后台
K[品类/价格管理] --> D;
F --> L[订单流水监控];
G --> M[库存数据监控];
I --> N[物流状态跟踪];
J --> O[财务结算管理];
Q[终端设备管理] --> C;
R[品类/价格管理] --> F;
H --> S[交易流水监控];
I --> T[库存状态监控];
L --> U[物流任务管理];
P --> V[财务结算管理];
end
```
---
## 3. C端居民端小程序
## 3. 智能终端系统
**核心定位:让卖废品像收钱一样简单。**
**核心定位:24小时无人值守的智能回收站。**
### 3.1 功能模块详述
### 3.1 硬件组成详述
#### 3.1.1 登录/注册
- **需求**: 微信一键授权登录,自动创建账户,无需额外注册步骤。
#### 3.1.1 回收袋模块
- **配置**: 1-3个可配置回收袋根据场地大小和回收品类需求调整
- **分类**: 饮料瓶袋、废纸袋、织物袋,每个袋子有独立的称重传感器
- **容量**: 每个袋子设计容量约50-80升支持自动容量检测
#### 3.1.2 首页 (核心页面)
- **界面元素**:
1. **【我的卖品码】**: 页面最中心、最大的按钮,点击后全屏显示个人专属二维码,并调高屏幕亮度。
2. **【附近小站】**: 列表或地图形式,展示附近合作小站的位置、**实时营业状态(营业中/休息中)、距离我有多远**、联系电话。
3. **【今日回收价】**: 醒目位置展示主要品类(纸壳、塑料瓶等)的单价(元/斤)。
#### 3.1.2 AI视觉监控
- **摄像头**: 高清摄像头,支持物品识别和分类验证
- **功能**: 实时监控投入物品,防止异物污染,记录投入过程
- **AI算法**: 基于深度学习的物品分类识别,准确率>95%
#### 3.1.3 “我的”页面
- **界面元素**:
1. **【我的余额】**: 突出显示当前账户余额。
2. **【提现】(V1.1)**: 将余额提现至微信零钱。需进行实名认证。
3. **【交易记录】**: 列表形式,展示每一笔交易的时间、地点、品类、重量、金额。
4. **【联系客服】**: 提供客服电话或在线咨询入口。
#### 3.1.3 交互平板系统
- **规格**: 10-12寸触摸屏支持多点触控
- **功能**: 用户身份识别、操作引导、重量显示、交易确认
- **登录方式**: 支持手机号、二维码扫描、NFC卡片等多种方式
#### 3.1.4 消息通知
- **需求**:
- 交易成功后,收到模板消息推送,告知本次收入金额。
- 提现成功后,收到模板消息推送。
#### 3.1.4 结构骨架
- **材料**: 铝合金框架,具备防水、防盗、耐候性能
- **设计**: 模块化设计,便于运输安装和维护
- **安全**: 配备防撬锁、振动报警等安全措施
### 3.2 软件系统详述
#### 3.2.1 终端操作系统
- **界面**: 适老化设计,大字体、高对比度、语音引导
- **流程**: 登录→选择品类→投入物品→AI验证→称重计价→确认交易
- **离线**: 支持网络断开时的离线操作和数据缓存
#### 3.2.2 数据采集与上传
- **实时数据**: 称重数据、交易记录、设备状态、故障信息
- **定时上传**: 每10分钟向后台上传一次数据
- **异常报警**: 设备故障、满载、异常操作自动报警
---
## 4. B端(小站端)小程序
## 4. C端(用户端)小程序
**核心定位:高效的移动回收工作站。**
**核心定位:便捷的个人回收助手。**
### 4.1 功能模块详述
#### 4.1.1 登录
- **需求**: 由管理员在后台创建账号,站长通过“手机号+验证码”登录
#### 4.1.1 登录/注册
- **需求**: 微信一键授权登录,自动创建账户,无需额外注册步骤
- **支持**: 同时支持手机号快速注册,便于在终端设备上使用。
#### 4.1.2 工作台 (首页)
#### 4.1.2 首页 (核心页面)
- **界面元素**:
1. **开始回收】**: 核心操作按钮,点击进入扫码回收流程
2. **【今日汇总】**: 数据卡片,展示当日回收总单数、总重量、总金额
3. **库存盘点】**: 查看当前各类废品的库存重量。**当库存达到预警阈值时,系统应有明显提示。**
4. **向上游交接】**: 生成出库单,**一键通知物流团队上门揽收**,并出示出库二维码
1. **附近终端】**: 地图或列表形式,展示附近智能终端的位置、设备状态(正常/故障/满载)、距离
2. **【今日回收价】**: 醒目位置展示主要品类(饮料瓶、废纸、织物)的实时单价
3. **快速回收】**: 一键跳转到最近的可用终端,并生成二维码用于终端登录。
4. **我的余额】**: 显示当前账户余额和今日收入
#### 4.1.3 回收流程 (核心业务)
1. **扫码识客**: 点击“开始回收”启动扫码器扫描C端用户的“卖品码”。成功后显示用户昵称
2. **录入信息**:
- **品类选择**: 大按钮形式选择“纸壳”、“塑料瓶”等
- **重量输入**: 手动输入称重后的重量。
- 系统自动计算金额并显示。
3. **确认交易**: 与用户核对无误后,点击“确认”。系统二次弹窗确认。
4. **语音播报**: 交易成功后,必须有清晰的语音播报,如“**收款成功5.8元**”,方便老年用户确认。
#### 4.1.3 终端交互功能
- **二维码登录**: 生成个人专属二维码,用于在终端设备上快速登录
- **交易确认**: 接收终端发送的交易确认通知,可在手机上再次确认。
- **实时反馈**: 显示正在进行的交易状态,包括称重、计价过程
#### 4.1.4 账单与库存
- **账单**: 查看每日、每周的交易流水和收入汇总。
- **库存**: 实时查看各品类库存,达到阈值时有提醒
#### 4.1.4 "我的"页面
- **界面元素**:
1. **【我的余额】**: 突出显示当前账户余额和累计收入
2. **【提现】**: 将余额提现至微信零钱,支持实名认证。
3. **【交易记录】**: 列表形式,展示每一笔交易的时间、终端位置、品类、重量、金额。
4. **【设备反馈】**: 用户可对使用过的终端设备进行评价和故障反馈。
#### 4.1.5 消息通知
- **需求**:
- 交易成功后,收到模板消息推送,告知本次收入金额。
- 提现成功后,收到模板消息推送。
- 设备故障或维护通知推送。
---
## 5. 物流端 (打包站/司机端)
## 5. 运维端 (设备维护)
**核心定位:精准、高效的废品“快递员”。** (初期可为H5页面或集成在B端小程序中)
**核心定位:智能终端的"医生",确保设备正常运行。**
### 5.1 功能模块详述
#### 5.1.1 揽收任务
- **需求**: 查看系统(或后台运营)派发的揽收任务列表,包含小站地址、预计揽收重量、联系方式
- **功能**: 支持路线规划。
#### 5.1.1 设备巡检任务
- **需求**: 查看系统自动生成的巡检任务列表,包含终端位置、巡检类型(定期保养/故障维修/清运)、预计时间
- **功能**: 支持路线规划,优化巡检效率
#### 5.1.2 扫码交接
- **需求**: 到达小站后,扫描小站端生成的“出库码”
- **流程**: 扫码后,页面显示待交接的品类和重量。司机确认实际收到的重量,可进行修改。双方确认后,完成交接
#### 5.1.2 设备状态检测
- **需求**: 到达终端后通过手机APP连接设备进行状态检测
- **流程**: 检测各硬件模块(摄像头、称重、屏幕、网络)状态,记录检测结果
- **报告**: 自动生成巡检报告,上传设备照片和维修记录。
#### 5.1.3 状态更新
- **需求**: 可手动更新任务状态,如“运输中”、“已入库”
#### 5.1.3 清运管理
- **需求**: 根据终端容量预警,及时清运回收物品
- **流程**: 扫描终端二维码,查看各品类存储量,记录清运重量,更新库存状态。
#### 5.1.4 故障处理
- **需求**: 接收设备故障报警,快速响应维修。
- **功能**: 常见故障诊断指导,备件管理,维修记录。
---
## 6. 大仓管理端 (Web/PC)
## 6. 数据中心 (Web/PC)
**核心定位:业务流转的仓储枢纽,数据准确性的最终保障。**
**核心定位:智能终端网络的"大脑",提供数据驱动的决策支持。**
### 6.1 功能模块详述
#### 6.1.1 扫码确认入库
- **需求**: 司机运抵大仓后,仓管员扫描司机任务单(或出库单)上的二维码
- **流程**: 系统自动带出司机、来源小站、货品品类及重量等信息。仓管员核对实物后确认,完成入库操作。库存数据自动更新
#### 6.1.1 实时监控大屏
- **需求**: 在PC端或数据大屏上实时显示所有终端的运行状态、交易数据、库存情况
- **可视化**: 地图展示终端分布,状态色彩编码(绿色正常/黄色预警/红色故障)
- **告警**: 设备故障、满载、异常操作实时告警。
#### 6.1.2 实时库存监控
- **需求**: 在PC端或数据大屏上以可视化图表展示所有品类的实时库存量、库存周转天数、存放位置等。
- **目标**: 为仓储规划和销售决策提供数据支持
#### 6.1.2 数据分析中心
- **需求**: 提供深度数据分析,包括用户行为分析、设备效率分析、收益分析等。
- **报表**: 自动生成日报、周报、月报,支持数据导出
- **预测**: 基于历史数据预测设备维护需求、清运时间等。
#### 6.1.3 库管理
- **需求**: 当与下游回收商(如打包站)达成交易后,可在系统中选择品类和重量,一键生成标准化的出库单
- **凭证**: 出库单可打印,作为与下游结算和备货的依据
#### 6.1.3 库存汇总管理
- **需求**: 汇总所有终端的库存数据,为集中清运和销售提供决策支持
- **功能**: 库存预警、最优清运路线规划、销售时机建议
---
## 7. 统一管理后台 (Web端)
**核心定位:公司的“大脑”,驱动业务运转。**
**核心定位:智能终端网络的"指挥中心",驱动业务运转。**
### 6.1 功能模块详述
### 7.1 功能模块详述
#### 6.1.1 Dashboard 数据看板
- **需求**: 实时展示核心KPI今日交易额、活跃用户数、**各小站回收量排名**、各品类回收趋势图等,形成数据驾驶舱
#### 7.1.1 Dashboard 数据看板
- **需求**: 实时展示核心KPI今日交易额、活跃用户数、**各终端设备回收量排名**、各品类回收趋势图、设备在线率等
#### 6.1.2 用户管理
- **需求**: 查询C端用户信息、交易记录、账户状态
#### 7.1.2 终端设备管理
- **需求**: 设备的入网配置、信息管理(**设备编号、地理位置、场地方信息、运行状态**)、地理位置分布图、设备状态监控
- **功能**: 远程设备重启、参数配置、软件更新推送。
#### 6.1.3 小站管理
- **需求**: 小站的入驻审核、信息管理(**名称、地址、地理位置、负责人、营业时间**)、地理位置分布图、服务状态(营业/休息)管理
#### 7.1.3 用户管理
- **需求**: 查询C端用户信息、交易记录、账户状态、使用习惯分析
#### 6.1.4 品类与价格管理
- **需求**: 动态添加/修改/停用回收品类,实时调整各品类在不同区域或站点的回收单价。**支持设置不同品类的物流损耗参数。**
#### 7.1.4 品类与价格管理
- **需求**: 动态添加/修改/停用回收品类,实时调整各品类在不同区域或终端的回收单价。**支持设置不同品类的AI识别阈值参数。**
#### 6.1.5 订单与库存管理
- **需求**: 查询全平台所有交易流水。实时监控各小站、各打包站的库存情况
#### 7.1.5 交易与库存管理
- **需求**: 查询全平台所有交易流水。实时监控各终端设备的库存情况,自动生成清运计划
#### 6.1.6 物流管理
- **需求**: 查看物流司机信息,手动派发或调整揽收任务,跟踪任务状态。
#### 7.1.6 运维管理
- **需求**: 查看运维人员信息,手动派发或调整巡检任务,跟踪设备维护状态。
#### 6.1.7 财务管理
- **需求**: 管理与小站、物流司机的结算周期和账单,支持账单导出
#### 7.1.7 财务管理
- **需求**: 管理与场地方、运维团队的结算周期和账单,支持成本分析和收益计算
#### 6.1.8 系统管理
- **需求**: 后台操作员的角色与权限管理。**对异常登录行为进行告警**。
#### 7.1.8 系统管理
- **需求**: 后台操作员的角色与权限管理。**对异常登录行为和设备异常操作进行告警**。
#### 6.1.9 报警中心
- **需求**: 集中查看和处理系统产生的各类业务异常报警(如库存异常、交易异常、物流延误),记录处理过程与结果,并支持上报给相关负责人
#### 7.1.9 智能报警中心
- **需求**: 集中查看和处理系统产生的各类异常报警(设备故障、容量预警、交易异常、网络中断AI辅助诊断问题原因
---
@@ -229,16 +266,16 @@ graph TD
## 9. 版本迭代规划 (Roadmap)
- **V1.0 (MVP)**:
- 核心功能: C端 + B端核心回收流程、管理后台基础框架品类价格、订单查看)。
- 目标: 跑通“居民->小站”核心商业模式闭环
- 核心功能: 智能终端硬件系统、C端小程序、基础管理后台设备监控、品类价格、订单查看)。
- 目标: 跑通"用户->智能终端"无人值守回收模式验证3000元/台设备的自循环盈利
- **V1.1**:
- 新增功能: 物流端H5、后台物流管理、后台小站管理、C端提现功能。
- 目标: 引入物流角色,实现“小站->大仓”规范化清运
- 新增功能: 运维端APP、设备远程诊断、AI识别算法优化、C端提现功能。
- 目标: 完善设备运维体系,提升设备稳定性和识别准确率
- **V1.2**:
- 新增功能: 大仓管理模块、后台财务结算模块、数据报表优化
- 目标: 完善全链路管理,提升运营和财务效率。
- 新增功能: 数据分析中心、智能清运调度、财务自动结算、设备健康管理
- 目标: 实现数据驱动运营,提升运营效率和设备利用率。
- **V1.3**:
- 新增功能: C端积分商城、精细化运营工具(如用户分层、活动配置)。
- 目标: 探索增值服务,提升用户粘性
- 新增功能: 积分商城、社区互动、碳积分系统、多品类扩展(电子垃圾等)。
- 目标: 构建环保生态圈,探索更多盈利模式

View File

@@ -15,25 +15,25 @@
### 1.2. 用户故事
#### **故事1查看回收价格**
#### **故事1查看回收价格和终端位置**
- **作为** 王大妈,
- **我想要** 在出门前就能通过小程序看到今天纸壳子、塑料瓶卖多少钱一斤
- **以便于** 我决定今天是否值得跑一趟,并且心里有底,不怕被坑
- **我想要** 在出门前就能通过小程序看到今天各种废品的回收价格,以及最近的智能终端在哪里、是否正常运行
- **以便于** 我决定今天是否值得跑一趟,并且选择最方便的终端设备
#### **故事2找到最近的回收**
- **作为** 刚搬来小区的年轻人小张,
- **我想要** 在小程序上用地图直接看到最近的回收站在哪,离我有多远,现在是否在营业
- **以便于** 我能快速方便地处理掉家里堆积的快递纸箱
#### **故事224小时随时回收**
- **作为** 上班族小张,
- **我想要** 下班后或周末任何时间都能使用智能终端处理家里的快递纸箱,不受营业时间限制
- **以便于** 我能根据自己的时间安排处理废品,不用专门请假或赶时间
#### **故事3极速卖品**
#### **故事3全自动回收体验**
- **作为** 王大妈,
- **我想要** 到小站后让站长扫一下我的手机二维码他称重、确认后钱就能马上到我的小程序账户里并且能听到“收款成功5块8”这样的语音提醒
- **以便于** 整个过程像在超市用付款码一样简单,不用我输密码、点确认,甚至不用掏手机看,听声音就知道交易成功了,非常安心
- **我想要** 在智能终端上用手机号登录后,按照屏幕提示选择废纸类型,把纸箱投入对应袋子,系统自动称重计价并语音播报"收款成功5块8毛"
- **以便于** 整个过程像使用ATM一样简单不需要等人服务也不用担心被骗秤或算错账
#### **故事4查看我的收入**
#### **故事4实时了解收益**
- **作为** 王大妈,
- **我想要** 在“我的”页面清楚地看到我的账户里还有多少钱,并且能翻看每一笔卖废品的记录,
- **以便于** 我知道这个月靠卖废品攒了多少零花钱,感觉很有成就感
- **我想要** 在手机小程序里实时看到交易完成的通知,查看我的账户余额变化和每笔交易的详细记录,
- **以便于** 我知道这个月通过智能终端攒了多少零花钱,对这种新方式更有信心
---
@@ -71,59 +71,64 @@
---
## 角色三:下站运输员 (物流司机)
## 角色三:设备运维人员
### 3.1. 核心诉求:路线清晰,任务明确,交接高效,权责分明
### 3.1. 核心诉求:设备状态清晰,故障快速定位,维护高效便捷
#### **用户画像:张师傅**
- **身份**: 35岁回收车队司机
- **习惯**: 每天需要跑多个点,时间观念强,不希望在交接流程上浪费时间
- **痛点**: 路线规划不合理导致绕路,手写单据字迹潦草易出错,跟小站站长核对重量时偶尔会发生争执
- **身份**: 35岁智能终端设备运维工程师
- **习惯**: 熟悉各种电子设备,有一定的技术基础,注重工作效率
- **痛点**: 设备分布较广需要跑多个点,故障诊断耗时,备件管理混乱,用户投诉处理压力大
### 3.2. 用户故事
#### **故事1查看揽收任务**
- **作为** 运输员张师傅,
- **我想要** 在我的手机端H5或小程序看到今天所有需要去揽收的任务列表,并能一键开启导航,
- **以便于** 我可以合理规划路线,节省运输时间
#### **故事1智能巡检任务**
- **作为** 运维工程师张师傅,
- **我想要** 在运维APP上看到系统根据设备状态自动生成的巡检任务包括设备位置、故障类型、优先级,并能一键导航,
- **以便于** 我可以高效规划巡检路线,优先处理紧急故障,提升设备可用率
#### **故事2无纸化扫码交接**
- **作为** 运输员张师傅,
- **我想要** 到达小站后,直接扫描站长出示的出库二维码,手机上就能显示出待交接的品类和重量
- **以便于** 我可以快速核对,确认无误后双方点击确认即可完成交接,无需手写单据,高效且有据可查
#### **故事2远程诊断与现场维修**
- **作为** 运维工程师张师傅,
- **我想要** 通过手机APP连接到智能终端远程查看设备各模块状态并获得故障诊断建议和维修指导
- **以便于** 我能快速定位问题,携带正确的备件前往现场,提高一次修复成功率
#### **故事3更新任务状态**
- **作为** 运输员张师傅,
- **我想要** 在完成揽收、运输、入库等关键节点时,能在手机上方便地更新任务状态
- **以便于** 公司后台能实时了解我的工作进展,也方便了后续的流程协同
#### **故事3设备清运与库存管理**
- **作为** 运维工程师张师傅,
- **我想要** 当终端设备发出满载预警时能在APP上查看各袋子的准确重量并记录清运数据
- **以便于** 我能合理安排清运车辆,确保数据准确性,避免与后台系统数据不一致
#### **故事4维修记录与绩效跟踪**
- **作为** 运维工程师张师傅,
- **我想要** 每次维修后能在APP上记录维修过程、更换的备件、维修时间并拍照存档
- **以便于** 建立完整的设备维护档案,也让我的工作成果得到准确记录和考核。
---
## 角色四:大仓库管理员
## 角色四:数据中心管理员
### 4.1. 核心诉求:入库清晰,库存准确,出库便捷
### 4.1. 核心诉求:数据准确,监控全面,决策支持
#### **用户画像:赵主管**
- **身份**: 50岁城市大仓的仓库主管。
- **习惯**: 工作严谨,对数据准确性要求高
- **痛点**: 司机运回来的货物品类和重量与预期不符,库存盘点耗时耗力,与下游打包站的销售记录对账困难
- **身份**: 50岁智能终端网络数据中心主管。
- **习惯**: 工作严谨,善于数据分析,关注系统整体运行状况
- **痛点**: 设备数量多分布广难以全面监控,数据异常发现不及时,缺乏有效的预测分析工具
### 4.2. 用户故事
#### **故事1扫码确认入库**
- **作为** 仓库主管赵主管,
- **我想要** 在司机把废品运到大仓时,我能扫描他任务单上的二维码,系统就自动记录某某司机在什么时间、从哪些小站运来了多少斤什么废品
- **以便于** 我可以快速完成入库登记,保证数据的准确性,并自动更新仓库库存
#### **故事1实时监控大屏**
- **作为** 数据中心主管赵主管,
- **我想要** 在数据中心的大屏上实时看到所有智能终端的运行状态、交易数据、库存情况,并用不同颜色标识设备健康状态
- **以便于** 我能一目了然地掌握整个终端网络的运行情况,及时发现异常设备
#### **故事2实时库存监控**
- **作为** 仓库主管赵主管,
- **我想要** 在后台系统的大屏或电脑上,实时看到仓库里所有品类的库存量、存放位置和存放天数
- **以便于** 我可以合理规划仓储空间,并在某种废品库存达到一定数量时,及时安排出库销售
#### **故事2智能预警与分析**
- **作为** 数据中心主管赵主管,
- **我想要** 系统能基于历史数据自动预测设备维护需求、最佳清运时间,并在设备即将出现故障前提前预警
- **以便于** 我能提前安排运维资源,实现预防性维护,降低设备故障率
#### **故事3生成出库单**
- **作为** 仓库主管赵主管,
- **我想要** 当联系好下游的打包站后,能在系统里选择品类和重量,一键生成标准化的出库单
- **以便于** 我可以指导工人备货,并作为与打包站结算的凭证,让整个出库流程规范化
#### **故事3数据报表与决策支持**
- **作为** 数据中心主管赵主管,
- **我想要** 系统能自动生成各类运营报表,包括设备利用率、用户活跃度、收益分析等,并支持自定义查询和数据导出
- **以便于** 我能为公司管理层提供准确的数据支持,协助制定运营策略和扩张计划
---

View File

@@ -0,0 +1,326 @@
# 智能回收终端设备技术规格文档 V1.0
> **文档状态**: 初稿
> **版本**: 1.0
> **修订日期**: 2024-09-15
> **作者**: 产品技术团队
---
## 1. 产品概述
### 1.1 产品定位
智能回收终端是一款部署在超市、快递门口的便携式废品回收设备通过AI视觉识别、自动称重、智能分类等技术在营业时间内提供智能化回收服务。设备可根据营业时间灵活收纳。
### 1.2 设计原则
- **成本控制**: 设备硬件成本控制在1000元以内
- **便携设计**: 支持营业时间外的收纳存放
- **用户友好**: 操作简单直观,适合中老年用户使用
- **简化部署**: 利用现有电源,无需复杂安装
---
## 2. 硬件规格
### 2.1 主要组成部件
#### 2.1.1 交互平板
- **平板电脑**: 10.1英寸Android/Windows平板2GB RAM + 32GB存储
- **触控**: 电容触摸屏,支持多点触控
- **连接**: WiFi + 4G LTE网络
- **可收纳**: 支持营业结束后收进室内保管
- **成本预算**: ≤350元
#### 2.1.2 AI摄像头
- **摄像头**: USB接口200万像素摄像头
- **视野**: 覆盖回收袋投入口区域
- **连接**: USB连接至平板即插即用
- **防护**: 基础防尘设计
- **成本预算**: ≤150元
#### 2.1.3 称重系统
- **称重模块**: 便携式电子秤模块×3
- **量程**: 单袋最大承重50kg精度±50g
- **连接**: 蓝牙/USB连接至平板
- **便携**: 支持快速拆装和收纳
- **成本预算**: ≤300元
#### 2.1.4 分类回收袋
- **回收袋**: 3个标准回收袋容积40L/袋
- **材料**: 牛津布或帆布材质,可清洗
- **标识**: 丝印分类标识无需LED灯
- **便携**: 可折叠收纳
- **成本预算**: ≤100元
#### 2.1.5 支撑骨架
- **材料**: 铝合金便携式支架
- **设计**: 可折叠设计,便于收纳运输
- **稳定**: 确保使用时的结构稳定性
- **重量**: 整套骨架≤15kg
- **成本预算**: ≤100元
### 2.2 整机规格
| 项目 | 规格参数 |
|------|----------|
| 展开尺寸 | 1000mm(H) × 600mm(W) × 400mm(D) |
| 收纳尺寸 | 200mm(H) × 600mm(W) × 400mm(D) |
| 整机重量 | ≤20kg |
| 工作温度 | 0°C ~ +40°C (室内使用) |
| 存储温度 | -10°C ~ +50°C |
| 工作湿度 | 20%~80% RH (无凝露) |
| 防护等级 | IP20 (基础防尘) |
| 供电要求 | 使用现有220V市电 |
| 功耗 | 工作≤30W |
| 通信方式 | Wi-Fi + 4G LTE + 蓝牙 |
| 认证标准 | 3C认证 |
---
## 3. 软件架构
### 3.1 平板应用软件
- **平台**: Android 8.0+ 或 Windows 10
- **开发**: 原生应用或H5网页应用
- **界面**: 简洁易用的触控界面
- **更新**: 应用商店更新或远程更新
### 3.2 外设连接
- **摄像头**: USB即插即用标准UVC驱动
- **称重模块**: 蓝牙或USB连接标准HID协议
- **网络**: Wi-Fi优先4G备用
- **数据同步**: 实时上传至云端服务器
### 3.3 AI识别引擎
- **框架**: 云端AI识别 + 本地缓存
- **识别方式**: 拍照上传至云端识别
- **识别品类**: 塑料瓶、废纸、织物等
- **准确率**: ≥90% (依赖云端算法)
- **响应时间**: ≤5秒 (含网络传输)
### 3.4 应用功能
- **用户登录**: 手机号验证码登录,小程序扫码登录
- **品类选择**: 大按钮选择回收品类
- **称重计价**: 自动读取称重数据并计价
- **交易确认**: 语音播报和屏幕确认
### 3.5 云端对接
- **协议**: HTTPS + MQTT over SSL
- **数据同步**: 实时上传交易数据
- **远程控制**: 支持远程参数配置
- **监控**: 实时状态监控和告警
---
## 4. 用户界面设计
### 4.1 界面设计原则
- **适老化设计**: 大字体、高对比度、简化操作
- **多语言支持**: 中文、英文界面切换
- **语音提示**: 全程语音引导和反馈
- **视觉反馈**: 丰富的动画和状态提示
### 4.2 主要界面流程
```mermaid
graph TD
A[待机界面<br>显示回收价格] --> B[用户登录<br>手机号/扫码]
B --> C[选择品类<br>塑料瓶/废纸/织物]
C --> D[投入物品<br>AI识别验证]
D --> E[自动称重<br>计算价格]
E --> F[确认交易<br>语音播报]
F --> G[交易完成<br>返回待机]
D --> H{识别失败}
H --> I[重新投入<br>或人工客服]
```
### 4.3 界面元素规范
- **主要文字**: 36px 思源黑体
- **按钮**: 最小80×60px圆角8px
- **颜色**: 主色调绿色#2E8B57,警告色红色#DC143C
- **图标**: 简洁线条风格,支持夜间模式
---
## 5. 网络与通信
### 5.1 通信架构
- **主通道**: 4G LTE网络连接云端服务器
- **备份通道**: Wi-Fi网络作为备用连接
- **本地通信**: 蓝牙5.0支持维护人员本地连接
### 5.2 数据传输
- **实时数据**: 交易数据实时上传
- **状态监控**: 每分钟上报设备状态
- **大文件**: 图片和日志文件压缩后传输
- **离线缓存**: 支持7天离线数据缓存
### 5.3 网络安全
- **加密**: TLS 1.3端到端加密
- **认证**: 设备证书双向认证
- **防护**: DDoS攻击防护
- **审计**: 完整的通信日志记录
---
## 6. 运行环境要求
### 6.1 部署环境
- **场地**: 超市内部或有顶棚的门口区域
- **电源**: 就近使用超市现有220V电源插座
- **网络**: Wi-Fi环境优先+ 4G信号覆盖
- **地面**: 平整地面即可,无需特殊承重要求
### 6.2 使用空间
- **展开时**: 营业时间内在指定区域展开使用
- **收纳时**: 营业结束后可收纳至室内存放
- **操作空间**: 前方预留1m用户操作区域
- **存放空间**: 室内预留0.5m²存放空间
### 6.3 部署要求
- **安装**: 无需复杂安装,即插即用
- **固定**: 临时固定方式,防止意外移动
- **收纳**: 支持快速拆装和室内存放
- **安全**: 平板等贵重设备可收进室内
---
## 7. 性能指标
### 7.1 关键性能指标
| 指标类别 | 具体指标 | 目标值 | 备注 |
|----------|----------|--------|------|
| **可用性** | 设备在线率 | ≥99% | 月度统计 |
| **可靠性** | 故障率(MTBF) | ≥2000小时 | 平均故障间隔 |
| **准确性** | 称重精度 | ±10g | 单次称重 |
| **识别率** | AI识别准确率 | ≥95% | 标准光线条件 |
| **响应性** | 交易完成时间 | ≤60秒 | 从投入到完成 |
| **容量** | 日处理能力 | 50-100笔 | 根据使用频率 |
| **效率** | 单笔交易时间 | ≤60秒 | 平均处理时间 |
### 7.2 用户体验指标
- **操作简易度**: 3步完成交易
- **等待时间**: AI识别≤3秒称重≤2秒
- **语音反馈**: 清晰度≥85分贝
- **界面响应**: 触控响应≤200ms
---
## 8. 成本分析
### 8.1 硬件成本构成
| 组件 | 成本(元) | 占比 |
|------|----------|------|
| 交互平板 | 350 | 35.0% |
| 称重系统 | 300 | 30.0% |
| AI摄像头 | 150 | 15.0% |
| 分类回收袋 | 100 | 10.0% |
| 支撑骨架 | 100 | 10.0% |
| **硬件总计** | **1000** | **100%** |
### 8.2 总投资成本构成
- **硬件设备**: 1000元/台
- **部署安装**: 300元/台 (运输、安装、调试)
- **培训推广**: 200元/台 (场地方培训、用户推广)
- **运营启动**: 500元/台 (前3个月运营成本)
- **备品备件**: 1000元/台 (维修备件、损耗补充)
- **总投资**: 3000元/台
### 8.3 运营成本预估
- **网络费用**: 30元/月 (4G套餐)
- **设备维护**: 80元/月 (人工+备件)
- **电费**: 实际很少 (使用超市电源)
- **场地费**: 50元/月 (给超市的场地费)
- **月运营成本**: 160元/台
- **年运营成本**: 1920元/台
### 8.4 投资回收分析
- **总投入**: 3000元/台
- **预期日收入**: 15-30元/台 (基于交易分成)
- **月收入**: 450-900元/台
- **扣除运营成本**: 290-740元/台 (净收入)
- **投资回收期**: 4-10个月
---
## 9. 质量保证
### 9.1 测试标准
- **功能测试**: 100%功能覆盖测试
- **性能测试**: 7×24小时连续运行测试
- **环境测试**: 高低温、湿度、震动测试
- **EMC测试**: 电磁兼容性测试
- **安全测试**: 电气安全和机械安全测试
### 9.2 质量认证
- **国标认证**: GB 4943.1-2011信息技术设备安全
- **环保认证**: RoHS 2.0有害物质限制指令
- **通信认证**: 工信部无线电发射设备型号核准
- **安全认证**: CCC强制性产品认证
### 9.3 售后服务
- **质保期**: 整机保修24个月
- **维修响应**: 市区4小时郊区24小时
- **备件保证**: 常用备件5年供应保证
- **技术支持**: 7×24小时远程技术支持
---
## 10. 技术发展路线
### 10.1 V1.0版本 (MVP)
- 基础功能实现: 识别、称重、交易
- 支持3大类物品回收
- 基本的远程监控能力
### 10.2 V1.1版本 (优化版)
- AI识别算法优化准确率提升至98%
- 增加更多回收品类支持
- 优化用户界面和交互流程
- 增强故障自诊断能力
### 10.3 V1.2版本 (智能版)
- 集成更强大的边缘计算能力
- 支持用户行为分析和个性化服务
- 增加积分兑换和游戏化元素
- 实现预测性维护
### 10.4 未来发展
- 支持更多品类(电子垃圾、有害垃圾)
- 集成区块链技术实现碳积分
- AI算法持续优化和自学习
- 与智慧城市系统深度集成
---
## 11. 附录
### 11.1 相关标准
- GB/T 191-2008《包装储运图示标志》
- GB 4943.1-2011《信息技术设备 安全 第1部分》
- GB/T 2423《电工电子产品环境试验》
- YD/T 1538-2014《移动通信手持机充电器及接口技术要求》
### 11.2 供应商推荐
- **主控芯片**: 瑞芯微RK3399、全志H6
- **触控屏**: 京东方、天马微电子
- **称重传感器**: 梅特勒-托利多、赛多利斯
- **摄像头**: 海康威视、大华股份
- **结构件**: 富士康、比亚迪精密制造
### 11.3 部署检查清单
- [ ] 现场勘查和空间规划
- [ ] 确认电源插座位置
- [ ] WiFi网络配置和4G信号测试
- [ ] 设备组装和摆放
- [ ] 平板应用安装和配置
- [ ] 称重设备校准
- [ ] 场地方培训和说明
- [ ] 试运行和用户体验测试
- [ ] 运营数据对接确认
---
**文档版权**: 绿邻回收项目组所有,未经授权不得转载或使用。

513
UI.html
View File

@@ -64,17 +64,35 @@
<div class="screen p-4">
<div class="text-center my-8">
<button class="bg-green-500 text-white rounded-lg shadow-lg w-full py-6">
<i class="ri-qr-code-line text-6xl"></i>
<span class="block text-2xl font-bold mt-2">我的卖品码</span>
<i class="ri-qr-scan-line text-6xl"></i>
<span class="block text-2xl font-bold mt-2">扫一扫 开始回收</span>
</button>
<p class="text-center text-sm text-gray-500 mt-2">向小站站长出示此码,即可开始回收</p>
<p class="text-center text-sm text-gray-500 mt-2">使用微信扫一扫,扫描终端屏幕上的二维码即可回收</p>
</div>
<div class="bg-white p-4 rounded-lg shadow mb-4">
<h3 class="font-bold text-lg mb-2 flex items-center"><i class="ri-price-tag-3-line mr-2 text-green-500"></i>今日回收价</h3>
<div class="space-y-2 text-lg">
<div class="flex justify-between"><span>废纸壳</span><span class="font-bold text-green-600">0.85 元/斤</span></div>
<div class="flex justify-between"><span>塑料瓶</span><span class="font-bold text-green-600">0.10 元/个</span></div>
<div class="flex justify-between"><span>旧衣物</span><span class="font-bold text-green-600">0.50 元/斤</span></div>
<!-- 突出显示今日回收价格 -->
<div class="bg-gradient-to-r from-green-400 to-green-600 text-white p-6 rounded-2xl shadow-2xl mb-4">
<h3 class="font-bold text-2xl mb-4 text-center flex items-center justify-center">
<i class="ri-price-tag-3-line mr-3 text-3xl"></i>今日回收价格
</h3>
<div class="grid grid-cols-3 gap-4 text-center">
<div class="bg-white/20 backdrop-blur rounded-xl p-4">
<div class="text-xl font-bold mb-1">废纸壳</div>
<div class="text-3xl font-black">0.85</div>
<div class="text-lg opacity-90">元/斤</div>
</div>
<div class="bg-white/20 backdrop-blur rounded-xl p-4">
<div class="text-xl font-bold mb-1">塑料瓶</div>
<div class="text-3xl font-black">0.10</div>
<div class="text-lg opacity-90">元/个</div>
</div>
<div class="bg-white/20 backdrop-blur rounded-xl p-4">
<div class="text-xl font-bold mb-1">旧衣物</div>
<div class="text-3xl font-black">0.50</div>
<div class="text-lg opacity-90">元/斤</div>
</div>
</div>
<div class="text-center mt-4 text-lg opacity-90">
<i class="ri-time-line mr-2"></i>实时更新 · 当天有效
</div>
</div>
<div class="bg-white p-4 rounded-lg shadow">
@@ -172,120 +190,407 @@
</div>
</div>
<!-- B端 分组 -->
<!-- 智能终端平板 分组 -->
<div class="w-full max-w-screen-2xl mb-12 border-t pt-8 mt-8">
<h1 class="text-3xl font-bold text-center mb-6 text-gray-700">B端 (小站端)</h1>
<h1 class="text-3xl font-bold text-center mb-6 text-gray-700">智能回收终端界面</h1>
<div class="flex flex-wrap justify-center gap-5">
<!-- B端 - 工作台 -->
<div class="mobile-frame">
<div class="screen p-4">
<div class="flex justify-between items-center mb-6">
<div><h2 class="text-2xl font-bold">李老板</h2><p class="text-gray-500">社区便民超市站</p></div>
<i class="ri-logout-box-r-line text-2xl text-gray-500"></i>
<!-- 平板框架样式 -->
<style>
.tablet-frame {
width: 768px;
height: 1024px;
border: 12px solid #2c3e50;
border-radius: 25px;
background-color: #000;
overflow: hidden;
box-shadow: 0 15px 40px rgba(0,0,0,0.2);
position: relative;
display: flex;
flex-direction: column;
}
.tablet-screen {
width: 100%;
flex-grow: 1;
overflow-y: auto;
background-color: #f8f9fa;
}
</style>
<!-- 智能终端 - 待机界面(显示二维码供扫描) -->
<div class="tablet-frame">
<div class="tablet-screen p-8 flex flex-col">
<!-- 顶部状态栏 -->
<div class="flex justify-between items-center mb-6 p-4 bg-white rounded-lg shadow-sm">
<div class="flex items-center">
<div class="w-4 h-4 bg-green-500 rounded-full mr-3"></div>
<span class="text-lg font-semibold">社区便民超市 - 绿邻回收终端</span>
</div>
<div class="text-center my-8">
<button class="bg-blue-600 text-white rounded-lg shadow-lg w-full py-6"><i class="ri-scan-2-line text-6xl"></i><span class="block text-2xl font-bold mt-2">开始回收</span></button>
</div>
<div class="bg-white p-4 rounded-lg shadow mb-4">
<h3 class="font-bold text-lg mb-2 flex items-center"><i class="ri-price-tag-3-line mr-2 text-blue-600"></i>今日回收价</h3>
<div class="space-y-2 text-lg">
<div class="flex justify-between"><span>废纸壳</span><span class="font-bold text-green-600">0.85 元/斤</span></div>
<div class="flex justify-between"><span>塑料瓶</span><span class="font-bold text-green-600">0.10 元/个</span></div>
<div class="flex justify-between"><span>旧衣物</span><span class="font-bold text-green-600">0.50 元/斤</span></div>
<div class="text-right">
<div class="text-2xl font-bold">15:30</div>
<div class="text-sm text-gray-500">2025年8月15日</div>
<button class="ml-4 bg-blue-100 text-blue-600 px-4 py-2 rounded-lg text-sm">
<i class="ri-settings-line mr-1"></i>管理
</button>
</div>
</div>
<div class="bg-white p-4 rounded-lg shadow mb-4">
<h3 class="font-bold text-lg mb-3">今日汇总</h3>
<div class="grid grid-cols-3 text-center">
<div><p class="text-2xl font-bold">32</p><p class="text-sm text-gray-500">总单数</p></div>
<div><p class="text-2xl font-bold">158.7</p><p class="text-sm text-gray-500">总重量 (kg)</p></div>
<div><p class="text-2xl font-bold text-blue-600">¥245.50</p><p class="text-sm text-gray-500">总金额</p></div>
<!-- 主二维码区域 -->
<div class="flex-grow flex items-center justify-center">
<div class="text-center">
<div class="bg-white rounded-3xl p-12 shadow-2xl mb-8">
<div class="mb-8">
<h2 class="text-4xl font-bold text-gray-800 mb-4">微信扫一扫开始回收</h2>
<p class="text-xl text-gray-600">操作简单,老少皆宜</p>
</div>
<!-- 大尺寸二维码 -->
<div class="bg-gray-100 rounded-2xl p-8">
<img src="https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=https://weixin.qq.com/recycling/start?terminal=SHOP001"
alt="回收二维码" class="mx-auto">
</div>
<div class="bg-white p-4 rounded-lg shadow">
<div class="flex justify-between items-center mb-3"><h3 class="font-bold text-lg">库存盘点</h3><span class="text-red-500 font-semibold flex items-center"><i class="ri-error-warning-fill mr-1"></i>库存预警</span></div>
<div class="space-y-2">
<div class="flex justify-between items-center"><span>废纸壳</span><div class="w-1/2 bg-gray-200 rounded-full h-2.5"><div class="bg-red-500 h-2.5 rounded-full" style="width: 90%"></div></div><span class="font-bold">90 kg</span></div>
<div class="flex justify-between items-center"><span>塑料瓶</span><div class="w-1/2 bg-gray-200 rounded-full h-2.5"><div class="bg-blue-600 h-2.5 rounded-full" style="width: 45%"></div></div><span class="font-bold">45 kg</span></div>
<div class="mt-6 flex justify-center gap-6 text-gray-500">
<div class="flex items-center">
<i class="ri-smartphone-line text-2xl mr-2"></i>
<span>支持微信</span>
</div>
<button class="mt-4 w-full bg-blue-100 text-blue-700 font-bold py-3 rounded-lg"><i class="ri-truck-line mr-2"></i>一键通知物流交接</button>
<div class="flex items-center">
<i class="ri-qr-scan-2-line text-2xl mr-2"></i>
<span>扫码即用</span>
</div>
<!-- B端图表 -->
<div class="bg-white p-4 rounded-lg shadow mt-4">
<h3 class="font-bold text-lg mb-2 flex items-center"><i class="ri-pie-chart-box-line mr-2 text-blue-600"></i>今日品类分布 (按重量)</h3>
<canvas id="bCategoryChart" height="180"></canvas>
</div>
<div class="bg-white p-4 rounded-lg shadow mt-4">
<h3 class="font-bold text-lg mb-2 flex items-center"><i class="ri-bar-chart-box-line mr-2 text-blue-600"></i>近7日回收量 (kg)</h3>
<canvas id="bHistoryChart" height="180"></canvas>
</div>
</div>
<div class="bottom-nav">
<div class="nav-item active"><i class="ri-dashboard-fill text-2xl"></i><span>工作台</span></div>
<div class="nav-item"><i class="ri-bill-fill text-2xl"></i><span>账单</span></div>
</div>
</div>
<!-- B端 - 回收流程 -->
<div class="mobile-frame">
<div class="screen p-4 flex flex-col">
<div class="flex items-center mb-4"><i class="ri-arrow-left-s-line text-2xl mr-2"></i><h1 class="font-bold text-xl flex-grow">回收流程</h1></div>
<div class="text-center bg-gray-100 p-4 rounded-lg mb-4"><p>已识别用户</p><p class="font-bold text-2xl">王大妈</p></div>
<div class="mb-4">
<label class="font-bold text-lg">1. 选择品类</label>
<div class="grid grid-cols-3 gap-3 mt-2">
<button class="bg-blue-600 text-white p-4 rounded-lg font-bold">纸壳</button>
<button class="bg-gray-200 p-4 rounded-lg font-bold">塑料瓶</button>
<button class="bg-gray-200 p-4 rounded-lg font-bold">旧衣物</button>
</div>
</div>
<div class="mb-4">
<label class="font-bold text-lg">2. 输入重量 (斤)</label>
<input type="number" value="5.8" class="text-center text-4xl font-bold w-full mt-2 p-4 border-2 border-gray-300 rounded-lg focus:border-blue-500 focus:outline-none">
</div>
<div class="flex-grow"></div>
<div class="text-center p-4 bg-white border-t-2">
<p class="text-gray-600">合计金额</p><p class="text-4xl font-bold text-blue-600 mb-4">¥4.93</p>
<button class="w-full bg-blue-600 text-white font-bold py-4 rounded-lg text-xl flex items-center justify-center"><i class="ri-volume-up-fill mr-2 text-2xl"></i><span>确认并语音播报</span></button>
</div>
</div>
</div>
<!-- B端 - 账单 -->
<div class="mobile-frame">
<div class="screen">
<div class="p-4 bg-white border-b sticky top-0">
<div class="flex items-center"><i class="ri-arrow-left-s-line text-2xl mr-2"></i><h1 class="font-bold text-xl flex-grow text-center">账单</h1></div>
</div>
<div class="p-4">
<div class="text-center mb-4"><p class="text-gray-500">2025年8月 总收入</p><p class="text-4xl font-bold text-blue-600">¥ 3,450.70</p></div>
<div class="space-y-3">
<div class="bg-white p-3 rounded-lg shadow-sm flex justify-between items-center">
<div><p class="font-bold">8月15日 (今日)</p><p class="text-sm text-gray-500">共 32 笔</p></div>
<span class="text-xl font-bold">¥245.50</span>
</div>
<div class="bg-white p-3 rounded-lg shadow-sm flex justify-between items-center">
<div><p class="font-bold">8月14日</p><p class="text-sm text-gray-500">共 45 笔</p></div>
<span class="text-xl font-bold">¥312.80</span>
<div class="flex items-center">
<i class="ri-coin-line text-2xl mr-2"></i>
<span>立即到账</span>
</div>
</div>
</div>
</div>
</div>
<!-- B端 - 物流交接单 -->
<div class="mobile-frame">
<div class="screen p-4 flex flex-col items-center">
<h1 class="font-bold text-2xl mt-4 mb-2">出库交接单</h1>
<p class="text-gray-500 mb-6">请向物流司机出示此码</p>
<div class="bg-white p-4 rounded-lg shadow-lg"><img src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=STATION_001_OUT_20250815" alt="QR Code"></div>
<div class="w-full mt-6 p-4 bg-white rounded-lg shadow-sm">
<h3 class="font-bold text-lg mb-2">待交接物品</h3>
<div class="space-y-2">
<div class="flex justify-between"><span>废纸壳</span><span class="font-bold">90 kg</span></div>
<div class="flex justify-between"><span>塑料瓶</span><span class="font-bold">45 kg</span></div>
<!-- 底部价格展示 -->
<div class="bg-white rounded-2xl p-6 shadow-lg">
<div class="grid grid-cols-3 gap-6 text-center">
<div class="p-4 bg-green-50 rounded-xl">
<div class="text-lg font-semibold mb-1">废纸壳</div>
<div class="text-2xl font-bold text-green-600">0.85元/斤</div>
</div>
<div class="p-4 bg-blue-50 rounded-xl">
<div class="text-lg font-semibold mb-1">塑料瓶</div>
<div class="text-2xl font-bold text-blue-600">0.10元/个</div>
</div>
<div class="p-4 bg-purple-50 rounded-xl">
<div class="text-lg font-semibold mb-1">旧衣物</div>
<div class="text-2xl font-bold text-purple-600">0.50元/斤</div>
</div>
</div>
</div>
</div>
</div>
<!-- 智能终端 - 普通用户回收流程界面 -->
<div class="tablet-frame">
<div class="tablet-screen p-8">
<!-- 用户信息栏 -->
<div class="bg-white rounded-2xl p-6 shadow-lg mb-8">
<div class="flex items-center justify-between">
<div class="flex items-center">
<img src="https://images.unsplash.com/photo-1529665253569-6d01c0eaf7b6?q=80&w=80&auto=format&fit=crop"
class="w-16 h-16 rounded-full object-cover mr-4" alt="用户头像">
<div>
<h3 class="text-2xl font-bold">王大妈</h3>
<p class="text-gray-500">欢迎使用绿邻回收</p>
</div>
</div>
<button class="bg-red-100 text-red-600 px-6 py-3 rounded-lg font-semibold">
<i class="ri-close-line mr-2"></i>取消回收
</button>
</div>
</div>
<!-- 品类选择 -->
<div class="bg-white rounded-2xl p-8 shadow-lg mb-8">
<h3 class="text-3xl font-bold mb-8">请选择回收品类</h3>
<div class="grid grid-cols-3 gap-8">
<button class="p-8 bg-green-500 text-white rounded-2xl shadow-lg transform scale-105">
<i class="ri-file-paper-2-line text-6xl mb-4"></i>
<div class="text-2xl font-bold mb-2">废纸壳</div>
<div class="text-lg opacity-90">0.85元/斤</div>
</button>
<button class="p-8 bg-gray-100 text-gray-700 rounded-2xl hover:bg-gray-200 transition-colors">
<i class="ri-drop-line text-6xl mb-4"></i>
<div class="text-2xl font-bold mb-2">塑料瓶</div>
<div class="text-lg">0.10元/个</div>
</button>
<button class="p-8 bg-gray-100 text-gray-700 rounded-2xl hover:bg-gray-200 transition-colors">
<i class="ri-shirt-line text-6xl mb-4"></i>
<div class="text-2xl font-bold mb-2">旧衣物</div>
<div class="text-lg">0.50元/斤</div>
</button>
</div>
</div>
<!-- 称重和确认区域 -->
<div class="grid grid-cols-2 gap-8">
<!-- 称重区域 -->
<div class="bg-white rounded-2xl p-8 shadow-lg">
<h3 class="text-2xl font-bold mb-6">请放入回收袋中</h3>
<div class="text-center">
<div class="bg-gray-50 rounded-xl p-8 mb-6">
<i class="ri-scales-3-line text-5xl text-gray-400 mb-4"></i>
<div class="text-5xl font-bold text-green-600 mb-2">5.8</div>
<div class="text-xl text-gray-500"></div>
</div>
<div class="text-gray-600 text-lg">
<p>自动称重中...</p>
<p class="text-sm mt-2">请稍候片刻</p>
</div>
</div>
</div>
<!-- 确认信息 -->
<div class="bg-gradient-to-br from-green-500 to-green-600 text-white rounded-2xl p-8 shadow-lg">
<h3 class="text-2xl font-bold mb-6">回收信息确认</h3>
<div class="space-y-4 mb-8">
<div class="flex justify-between items-center text-lg">
<span>回收品类:</span>
<span class="font-bold">废纸壳</span>
</div>
<div class="flex justify-between items-center text-lg">
<span>重量:</span>
<span class="font-bold">5.8 斤</span>
</div>
<div class="flex justify-between items-center text-lg">
<span>单价:</span>
<span class="font-bold">0.85 元/斤</span>
</div>
<div class="border-t border-white/30 pt-4">
<div class="flex justify-between items-center">
<span class="text-xl">合计金额:</span>
<span class="text-4xl font-bold">¥ 4.93</span>
</div>
</div>
</div>
<button class="w-full bg-white text-green-600 py-6 rounded-xl font-bold text-2xl shadow-lg hover:shadow-xl transition-shadow">
<i class="ri-check-line mr-3"></i>确认回收
</button>
</div>
</div>
</div>
</div>
<!-- 智能终端 - 登录界面 -->
<div class="tablet-frame">
<div class="tablet-screen p-8 flex items-center justify-center">
<div class="bg-white rounded-3xl p-12 shadow-2xl max-w-md w-full">
<div class="text-center mb-8">
<i class="ri-shield-user-line text-6xl text-blue-600 mb-4"></i>
<h2 class="text-3xl font-bold text-gray-800 mb-2">终端管理登录</h2>
<p class="text-gray-600">请选择您的身份</p>
</div>
<div class="space-y-4">
<button class="w-full bg-blue-600 text-white p-6 rounded-2xl font-bold text-xl hover:bg-blue-700 transition-colors">
<i class="ri-user-settings-line text-3xl mb-2"></i>
<div>小站管理员</div>
<div class="text-sm opacity-90">李老板</div>
</button>
<button class="w-full bg-green-600 text-white p-6 rounded-2xl font-bold text-xl hover:bg-green-700 transition-colors">
<i class="ri-truck-line text-3xl mb-2"></i>
<div>清运人员</div>
<div class="text-sm opacity-90">物流收取</div>
</button>
<button class="w-full bg-gray-200 text-gray-700 p-4 rounded-2xl font-semibold hover:bg-gray-300 transition-colors">
<i class="ri-arrow-left-line mr-2"></i>返回用户界面
</button>
</div>
</div>
</div>
</div>
<!-- 智能终端 - 管理员工作台 -->
<div class="tablet-frame">
<div class="tablet-screen p-8">
<!-- 管理员顶部栏 -->
<div class="flex justify-between items-center mb-8 p-4 bg-blue-600 text-white rounded-lg shadow-sm">
<div class="flex items-center">
<i class="ri-user-settings-line text-2xl mr-3"></i>
<div>
<span class="text-lg font-semibold">管理员:李老板</span>
<div class="text-sm opacity-90">社区便民超市</div>
</div>
</div>
<div class="flex gap-4">
<div class="text-right">
<div class="text-xl font-bold">15:30</div>
<div class="text-sm opacity-90">8月15日</div>
</div>
<button class="bg-white text-blue-600 px-4 py-2 rounded-lg text-sm font-semibold">
<i class="ri-logout-box-line mr-1"></i>退出
</button>
</div>
</div>
<!-- 今日数据汇总 -->
<div class="grid grid-cols-3 gap-6 mb-8">
<div class="bg-white rounded-2xl p-6 shadow-lg text-center">
<i class="ri-shopping-bag-3-line text-4xl text-blue-600 mb-3"></i>
<div class="text-3xl font-bold text-blue-600">32</div>
<div class="text-gray-500">今日订单</div>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg text-center">
<i class="ri-scales-3-line text-4xl text-green-600 mb-3"></i>
<div class="text-3xl font-bold text-green-600">158.7</div>
<div class="text-gray-500">总重量(kg)</div>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg text-center">
<i class="ri-money-dollar-circle-line text-4xl text-yellow-600 mb-3"></i>
<div class="text-3xl font-bold text-yellow-600">¥245</div>
<div class="text-gray-500">今日收入</div>
</div>
</div>
<!-- 功能操作区 -->
<div class="grid grid-cols-2 gap-6 mb-8">
<button class="bg-white rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow">
<i class="ri-price-tag-3-line text-4xl text-green-600 mb-4"></i>
<div class="text-xl font-bold mb-2">修改回收价格</div>
<div class="text-gray-500">调整各品类回收价格</div>
</button>
<button class="bg-white rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow">
<i class="ri-file-list-3-line text-4xl text-blue-600 mb-4"></i>
<div class="text-xl font-bold mb-2">交易记录</div>
<div class="text-gray-500">查看所有回收记录</div>
</button>
<button class="bg-white rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow">
<i class="ri-stack-line text-4xl text-purple-600 mb-4"></i>
<div class="text-xl font-bold mb-2">库存管理</div>
<div class="text-gray-500">查看和管理库存</div>
</button>
<button class="bg-white rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow">
<i class="ri-truck-line text-4xl text-orange-600 mb-4"></i>
<div class="text-xl font-bold mb-2">通知清运</div>
<div class="text-gray-500">申请物流收取</div>
</button>
</div>
<!-- 返回用户界面 -->
<button class="w-full bg-gray-200 text-gray-700 p-4 rounded-2xl font-bold text-xl">
<i class="ri-arrow-left-line mr-2"></i>返回用户界面
</button>
</div>
</div>
<!-- 智能终端 - 清运人员界面 -->
<div class="tablet-frame">
<div class="tablet-screen p-8">
<!-- 清运人员顶部栏 -->
<div class="flex justify-between items-center mb-8 p-4 bg-green-600 text-white rounded-lg shadow-sm">
<div class="flex items-center">
<i class="ri-truck-line text-2xl mr-3"></i>
<div>
<span class="text-lg font-semibold">清运人员:张师傅</span>
<div class="text-sm opacity-90">绿邻物流</div>
</div>
</div>
<div class="flex gap-4">
<div class="text-right">
<div class="text-xl font-bold">15:30</div>
<div class="text-sm opacity-90">8月15日</div>
</div>
<button class="bg-white text-green-600 px-4 py-2 rounded-lg text-sm font-semibold">
<i class="ri-logout-box-line mr-1"></i>退出
</button>
</div>
</div>
<!-- 待收取库存 -->
<div class="bg-white rounded-2xl p-8 shadow-lg mb-8">
<h3 class="text-2xl font-bold mb-6 flex items-center">
<i class="ri-stack-line mr-3 text-green-600"></i>待收取物品
</h3>
<div class="grid grid-cols-3 gap-6">
<div class="bg-green-50 rounded-xl p-6 text-center">
<i class="ri-file-paper-2-line text-3xl text-green-600 mb-3"></i>
<div class="text-lg font-semibold mb-2">废纸壳</div>
<div class="text-3xl font-bold text-green-600">90</div>
<div class="text-sm text-gray-500">公斤</div>
</div>
<div class="bg-blue-50 rounded-xl p-6 text-center">
<i class="ri-drop-line text-3xl text-blue-600 mb-3"></i>
<div class="text-lg font-semibold mb-2">塑料瓶</div>
<div class="text-3xl font-bold text-blue-600">45</div>
<div class="text-sm text-gray-500">公斤</div>
</div>
<div class="bg-purple-50 rounded-xl p-6 text-center">
<i class="ri-shirt-line text-3xl text-purple-600 mb-3"></i>
<div class="text-lg font-semibold mb-2">旧衣物</div>
<div class="text-3xl font-bold text-purple-600">25</div>
<div class="text-sm text-gray-500">公斤</div>
</div>
</div>
</div>
<!-- 收取确认 -->
<div class="bg-white rounded-2xl p-8 shadow-lg mb-8">
<h3 class="text-2xl font-bold mb-6">收取确认</h3>
<div class="space-y-4">
<div class="flex justify-between items-center p-4 bg-gray-50 rounded-lg">
<span class="text-lg">总重量</span>
<span class="text-2xl font-bold">160 公斤</span>
</div>
<div class="flex justify-between items-center p-4 bg-gray-50 rounded-lg">
<span class="text-lg">预估价值</span>
<span class="text-2xl font-bold text-green-600">¥ 89.50</span>
</div>
</div>
</div>
<!-- 操作按钮 -->
<div class="grid grid-cols-2 gap-6 mb-8">
<button class="bg-green-600 text-white p-6 rounded-2xl font-bold text-xl hover:bg-green-700 transition-colors">
<i class="ri-checkbox-circle-line text-3xl mb-2"></i>
<div>确认收取</div>
</button>
<button class="bg-gray-200 text-gray-700 p-6 rounded-2xl font-bold text-xl hover:bg-gray-300 transition-colors">
<i class="ri-close-circle-line text-3xl mb-2"></i>
<div>暂不收取</div>
</button>
</div>
<!-- 返回用户界面 -->
<button class="w-full bg-gray-200 text-gray-700 p-4 rounded-2xl font-bold text-xl">
<i class="ri-arrow-left-line mr-2"></i>返回用户界面
</button>
</div>
</div>
<!-- 智能终端 - 回收完成界面 -->
<div class="tablet-frame">
<div class="tablet-screen p-8 flex flex-col justify-center items-center text-center">
<div class="bg-white rounded-3xl p-16 shadow-2xl max-w-2xl">
<div class="w-24 h-24 bg-green-500 rounded-full flex items-center justify-center mx-auto mb-8">
<i class="ri-check-line text-5xl text-white"></i>
</div>
<h2 class="text-4xl font-bold text-gray-800 mb-4">回收成功!</h2>
<p class="text-xl text-gray-600 mb-8">感谢您为环保事业做出的贡献</p>
<div class="bg-gray-50 rounded-2xl p-8 mb-8">
<div class="text-lg text-gray-600 mb-2">本次回收金额</div>
<div class="text-5xl font-bold text-green-600 mb-4">¥ 4.93</div>
<div class="text-gray-500">废纸壳 5.8斤 × 0.85元/斤</div>
</div>
<div class="text-gray-500 mb-8">
<p class="text-lg">回收金额已通过微信支付到账</p>
<p class="text-sm mt-2">如有疑问请联系客服400-123-4567</p>
</div>
<div class="text-6xl font-bold text-green-500 mb-4">5</div>
<div class="text-lg text-gray-500">秒后自动返回首页</div>
</div>
</div>
</div>
</div>
</div>
<!-- 物流端 (V1.1功能MVP版本中移除) -->

1027
商业规划汇报.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,369 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>回报率预测计算器</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2563eb',
secondary: '#38bdf8'
}
}
}
}
</script>
</head>
<body class="bg-gray-50 font-sans text-gray-800">
<div class="min-h-screen px-4 py-6 md:px-8 md:py-8">
<div class="max-w-6xl mx-auto bg-white/95 shadow-xl rounded-2xl p-6 md:p-8">
<header class="mb-8">
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 mb-2">回报率预测计算器</h1>
<p class="text-gray-600 text-sm md:text-base">根据《回报率预测》文档的假设提供默认值,可随场景调整实时查看财务指标。</p>
</header>
<!-- Summary Cards -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-8">
<div class="bg-gradient-to-br from-primary to-secondary rounded-xl p-5 text-white">
<h2 class="text-xs md:text-sm uppercase tracking-wider font-semibold mb-3">月度净利润</h2>
<div id="monthlyNetProfit" class="text-2xl md:text-3xl font-bold mb-2">¥ 33.00</div>
<p class="text-xs text-blue-100">= 月毛利 - 固定运营成本</p>
</div>
<div class="bg-gradient-to-br from-primary to-secondary rounded-xl p-5 text-white">
<h2 class="text-xs md:text-sm uppercase tracking-wider font-semibold mb-3">投资回收期</h2>
<div id="paybackPeriod" class="text-2xl md:text-3xl font-bold mb-2">54.5 个月</div>
<p class="text-xs text-blue-100">= 总投资 / 月净利润</p>
</div>
<div class="bg-gradient-to-br from-primary to-secondary rounded-xl p-5 text-white">
<h2 class="text-xs md:text-sm uppercase tracking-wider font-semibold mb-3">年化 ROI</h2>
<div id="annualROI" class="text-2xl md:text-3xl font-bold mb-2">22.0%</div>
<p class="text-xs text-blue-100">= (年净利润 / 总投资) × 100%</p>
</div>
</div>
<!-- Input Sections -->
<section class="mb-8">
<h3 class="text-lg md:text-xl font-semibold text-gray-900 mb-4">核心量化假设</h3>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4">
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">日均废纸板回收量 (公斤)</span>
<input id="dailyCardboard" type="number" min="0" step="0.1" value="20"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">日均塑料瓶回收量 (公斤)</span>
<input id="dailyPet" type="number" min="0" step="0.1" value="10"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">月计费天数 (天)</span>
<input id="daysPerMonth" type="number" min="1" step="1" value="30"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">运营站点数量 (个)</span>
<input id="siteCount" type="number" min="1" step="1" value="5"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">废纸板回收价 ¥/公斤 (给用户)</span>
<input id="buyPriceCardboard" type="number" min="0" step="0.01" value="0.8"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">废纸板出售价 ¥/公斤 (给打包站)</span>
<input id="sellPriceCardboard" type="number" min="0" step="0.01" value="1.2"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">塑料瓶回收价 ¥/公斤 (给用户)</span>
<input id="buyPricePet" type="number" min="0" step="0.01" value="1.4"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">塑料瓶出售价 ¥/公斤 (给打包站)</span>
<input id="sellPricePet" type="number" min="0" step="0.01" value="2.0"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
</div>
</section>
<section class="mb-8">
<h3 class="text-lg md:text-xl font-semibold text-gray-900 mb-4">运营及投入假设</h3>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">场地合作分成 (占销售总收入 %)</span>
<input id="siteFeePercent" type="number" min="0" step="0.1" value="10"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">月物流清运成本 (¥)</span>
<input id="logisticsCost" type="number" min="0" step="1" value="220"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">设备维护与网络费 (¥/月)</span>
<input id="maintenanceCost" type="number" min="0" step="1" value="27"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">其他运营成本 (¥/月)</span>
<input id="otherCost" type="number" min="0" step="1" value="50"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">单站设备投入 (¥)</span>
<input id="equipmentCost" type="number" min="0" step="10" value="1500"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
<label class="block">
<span class="text-sm font-medium text-gray-700 mb-2 block">部署及安装成本 (¥)</span>
<input id="deploymentCost" type="number" min="0" step="10" value="300"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-base focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none transition-colors" />
</label>
</div>
</section>
<!-- Results Section -->
<section class="space-y-6">
<h3 class="text-lg md:text-xl font-semibold text-gray-900">产出指标</h3>
<!-- 产出指标表格 -->
<div class="overflow-x-auto">
<table class="w-full border-collapse bg-white rounded-lg overflow-hidden shadow-sm">
<thead>
<tr class="bg-blue-50">
<th class="text-left px-4 py-3 text-sm font-semibold text-gray-900">指标</th>
<th class="text-right px-4 py-3 text-sm font-semibold text-gray-900">废纸板</th>
<th class="text-right px-4 py-3 text-sm font-semibold text-gray-900">塑料瓶</th>
<th class="text-right px-4 py-3 text-sm font-semibold text-gray-900">合计</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="px-4 py-3 text-sm text-gray-900">月度回收量 (公斤)</td>
<td id="monthlyCardboardKg" class="px-4 py-3 text-sm text-right text-gray-600">600.0</td>
<td id="monthlyPetKg" class="px-4 py-3 text-sm text-right text-gray-600">300.0</td>
<td id="monthlyTotalKg" class="px-4 py-3 text-sm text-right font-medium text-gray-900">900.0</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">给用户回收金 (¥)</td>
<td id="payoutCardboard" class="px-4 py-3 text-sm text-right text-gray-600">¥ 480.00</td>
<td id="payoutPet" class="px-4 py-3 text-sm text-right text-gray-600">¥ 420.00</td>
<td id="payoutTotal" class="px-4 py-3 text-sm text-right font-medium text-gray-900">¥ 900.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">销售收入 (¥)</td>
<td id="saleCardboard" class="px-4 py-3 text-sm text-right text-gray-600">¥ 720.00</td>
<td id="salePet" class="px-4 py-3 text-sm text-right text-gray-600">¥ 600.00</td>
<td id="saleTotal" class="px-4 py-3 text-sm text-right font-medium text-gray-900">¥ 1,320.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">毛利 (¥)</td>
<td id="grossCardboard" class="px-4 py-3 text-sm text-right text-gray-600">¥ 240.00</td>
<td id="grossPet" class="px-4 py-3 text-sm text-right text-gray-600">¥ 180.00</td>
<td id="grossTotal" class="px-4 py-3 text-sm text-right font-medium text-primary">¥ 420.00</td>
</tr>
</tbody>
</table>
</div>
<!-- 成本拆解表格 -->
<div class="overflow-x-auto">
<table class="w-full border-collapse bg-white rounded-lg overflow-hidden shadow-sm">
<thead>
<tr class="bg-blue-50">
<th class="text-left px-4 py-3 text-sm font-semibold text-gray-900">成本拆解</th>
<th class="text-right px-4 py-3 text-sm font-semibold text-gray-900">金额 (¥)</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="px-4 py-3 text-sm text-gray-900">场地合作费</td>
<td id="siteFee" class="px-4 py-3 text-sm text-right text-gray-600">¥ 90.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">月物流清运成本</td>
<td id="logisticsCostCell" class="px-4 py-3 text-sm text-right text-gray-600">¥ 220.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">设备维护与网络费</td>
<td id="maintenanceCostCell" class="px-4 py-3 text-sm text-right text-gray-600">¥ 27.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">其他运营成本</td>
<td id="otherCostCell" class="px-4 py-3 text-sm text-right text-gray-600">¥ 50.00</td>
</tr>
<tr class="bg-gray-50">
<td class="px-4 py-3 text-sm font-semibold text-gray-900">固定成本合计</td>
<td id="fixedCostTotal" class="px-4 py-3 text-sm text-right font-semibold text-gray-900">¥ 387.00</td>
</tr>
</tbody>
</table>
</div>
<!-- 投资与回报表格 -->
<div class="overflow-x-auto">
<table class="w-full border-collapse bg-white rounded-lg overflow-hidden shadow-sm">
<thead>
<tr class="bg-blue-50">
<th class="text-left px-4 py-3 text-sm font-semibold text-gray-900">投资与回报</th>
<th class="text-right px-4 py-3 text-sm font-semibold text-gray-900">金额 / 指标</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="px-4 py-3 text-sm text-gray-900">总投资 (Capex)</td>
<td id="totalInvestment" class="px-4 py-3 text-sm text-right text-gray-600">¥ 1,800.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">月度净利润</td>
<td id="netProfitCell" class="px-4 py-3 text-sm text-right font-medium text-primary">¥ 33.00</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">投资回收期</td>
<td id="paybackCell" class="px-4 py-3 text-sm text-right text-gray-600">54.5 个月</td>
</tr>
<tr>
<td class="px-4 py-3 text-sm text-gray-900">年化投资回报率</td>
<td id="annualRoiCell" class="px-4 py-3 text-sm text-right font-medium text-green-600">22.0%</td>
</tr>
</tbody>
</table>
</div>
<div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4">
<p class="text-sm text-yellow-800">
<span class="font-semibold">提示:</span>
若月度净利润≤0则投资回收期视为"尚无法回收",请通过提升日均回收量或优化成本结构来改进模型。
</p>
</div>
</section>
</div>
</div>
<script>
// 工具函数安全读取输入值若为空则返回0
function getValue(id) {
const value = parseFloat(document.getElementById(id).value);
return Number.isFinite(value) ? value : 0;
}
// 工具函数:格式化为货币展示
function formatCurrency(value) {
return `¥ ${value.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
}
// 工具函数:格式化数值,保留一位小数
function formatNumber(value) {
return value.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 });
}
// 核心计算逻辑
function recalc() {
const dailyCardboard = getValue("dailyCardboard");
const dailyPet = getValue("dailyPet");
const days = getValue("daysPerMonth");
const siteCount = Math.max(getValue("siteCount"), 0);
const buyCardboard = getValue("buyPriceCardboard");
const sellCardboard = getValue("sellPriceCardboard");
const buyPet = getValue("buyPricePet");
const sellPet = getValue("sellPricePet");
const siteFeePercent = getValue("siteFeePercent") / 100;
const logisticsCost = getValue("logisticsCost");
const maintenanceCost = getValue("maintenanceCost");
const otherCost = getValue("otherCost");
const equipmentCost = getValue("equipmentCost");
const deploymentCost = getValue("deploymentCost");
const monthlyCardboardKg = dailyCardboard * days * siteCount;
const monthlyPetKg = dailyPet * days * siteCount;
const monthlyTotalKg = monthlyCardboardKg + monthlyPetKg;
const payoutCardboard = monthlyCardboardKg * buyCardboard;
const payoutPet = monthlyPetKg * buyPet;
const payoutTotal = payoutCardboard + payoutPet;
const saleCardboard = monthlyCardboardKg * sellCardboard;
const salePet = monthlyPetKg * sellPet;
const saleTotal = saleCardboard + salePet;
const grossCardboard = saleCardboard - payoutCardboard;
const grossPet = salePet - payoutPet;
const grossTotal = grossCardboard + grossPet;
const logisticsCostTotal = logisticsCost * siteCount;
const maintenanceCostTotal = maintenanceCost * siteCount;
const otherCostTotal = otherCost * siteCount;
const siteFee = saleTotal * siteFeePercent;
const fixedCostTotal = siteFee + logisticsCostTotal + maintenanceCostTotal + otherCostTotal;
const monthlyNetProfit = grossTotal - fixedCostTotal;
const totalInvestmentPerSite = equipmentCost + deploymentCost;
const totalInvestment = totalInvestmentPerSite * siteCount;
const annualNetProfit = monthlyNetProfit * 12;
const paybackMonths = monthlyNetProfit > 0 ? totalInvestment / monthlyNetProfit : Infinity;
const annualROI = monthlyNetProfit > 0 ? (annualNetProfit / totalInvestment) * 100 : 0;
// 更新表格及摘要展示
document.getElementById("monthlyCardboardKg").textContent = formatNumber(monthlyCardboardKg);
document.getElementById("monthlyPetKg").textContent = formatNumber(monthlyPetKg);
document.getElementById("monthlyTotalKg").textContent = formatNumber(monthlyTotalKg);
document.getElementById("payoutCardboard").textContent = formatCurrency(payoutCardboard);
document.getElementById("payoutPet").textContent = formatCurrency(payoutPet);
document.getElementById("payoutTotal").textContent = formatCurrency(payoutTotal);
document.getElementById("saleCardboard").textContent = formatCurrency(saleCardboard);
document.getElementById("salePet").textContent = formatCurrency(salePet);
document.getElementById("saleTotal").textContent = formatCurrency(saleTotal);
document.getElementById("grossCardboard").textContent = formatCurrency(grossCardboard);
document.getElementById("grossPet").textContent = formatCurrency(grossPet);
document.getElementById("grossTotal").textContent = formatCurrency(grossTotal);
document.getElementById("siteFee").textContent = formatCurrency(siteFee);
document.getElementById("logisticsCostCell").textContent = formatCurrency(logisticsCostTotal);
document.getElementById("maintenanceCostCell").textContent = formatCurrency(maintenanceCostTotal);
document.getElementById("otherCostCell").textContent = formatCurrency(otherCostTotal);
document.getElementById("fixedCostTotal").textContent = formatCurrency(fixedCostTotal);
document.getElementById("totalInvestment").textContent = formatCurrency(totalInvestment);
const netProfitLabel = formatCurrency(monthlyNetProfit);
document.getElementById("monthlyNetProfit").textContent = netProfitLabel;
document.getElementById("netProfitCell").textContent = netProfitLabel;
if (monthlyNetProfit > 0) {
const paybackText = `${paybackMonths.toFixed(1)} 个月`;
const annualRoiText = `${annualROI.toFixed(1)}%`;
document.getElementById("paybackPeriod").textContent = paybackText;
document.getElementById("annualROI").textContent = annualRoiText;
document.getElementById("paybackCell").textContent = paybackText;
document.getElementById("annualRoiCell").textContent = annualRoiText;
} else {
const warningText = "尚无法回收";
document.getElementById("paybackPeriod").textContent = warningText;
document.getElementById("paybackCell").textContent = warningText;
document.getElementById("annualROI").textContent = "0.0%";
document.getElementById("annualRoiCell").textContent = "0.0%";
}
}
// 监听所有输入框,实时刷新
document.querySelectorAll("input[type='number']").forEach((input) => {
input.addEventListener("input", recalc);
});
// 初始化计算一次,确保默认值正确呈现
recalc();
</script>
</body>
</html>