105 lines
3.6 KiB
Python
105 lines
3.6 KiB
Python
from reportlab.lib.pagesizes import letter
|
||
from reportlab.pdfgen import canvas
|
||
from reportlab.pdfbase import pdfmetrics
|
||
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
|
||
|
||
# Register a Chinese-capable font
|
||
pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))
|
||
|
||
# File path
|
||
file_path = "E:/ministry_of_helpers_requirements.pdf"
|
||
|
||
# Create PDF
|
||
c = canvas.Canvas(file_path, pagesize=letter)
|
||
width, height = letter
|
||
|
||
# Title
|
||
c.setFont("STSong-Light", 18)
|
||
c.drawString(50, height - 50, "Ministry of Helpers 网站需求分析报告")
|
||
|
||
c.setFont("STSong-Light", 14)
|
||
y = height - 80
|
||
c.drawString(50, y, "一、前端功能分析")
|
||
y -= 24
|
||
|
||
c.setFont("STSong-Light", 12)
|
||
frontend_lines = [
|
||
"1. 首页 / 品牌介绍:平台口号及核心价值展示",
|
||
"2. 角色入口切换:雇主 / 家佣 双向导航",
|
||
"3. 查找 & 发布:雇主浏览候选人,家佣申请职位",
|
||
"4. 订阅计划 & 服务包:Lite/Standard/Premium 套餐展示",
|
||
"5. 常见问题(FAQs):费用、合同流程等解答",
|
||
"6. 客户评价 & 合作伙伴:好评轮播与合作机构展示",
|
||
"7. 社区 & 内容运营:论坛、博客入口",
|
||
"8. 移动端推广:App 下载按钮(App Store / Google Play)",
|
||
"9. 多渠道联系:Sign up/Log in/Contact us/Policy 链接",
|
||
]
|
||
for line in frontend_lines:
|
||
if y < 60:
|
||
c.showPage()
|
||
y = height - 50
|
||
c.setFont("STSong-Light", 12)
|
||
c.drawString(60, y, line)
|
||
y -= 18
|
||
|
||
# Backend section
|
||
if y < 100:
|
||
c.showPage()
|
||
y = height - 50
|
||
c.setFont("STSong-Light", 14)
|
||
c.drawString(50, y, "二、后端开发需求分析")
|
||
y -= 24
|
||
|
||
c.setFont("STSong-Light", 12)
|
||
backend_lines = [
|
||
"模块 | 职能描述 | 技术要点",
|
||
"1. 用户与权限 | 注册登录、角色控制 | JWT/Session, OAuth, RBAC",
|
||
"2. 数据存储 | 档案、简历、订阅记录 | PostgreSQL/MySQL, MongoDB",
|
||
"3. 搜索与筛选 | 多维度检索、分页、收藏 | ElasticSearch, Redis 缓存",
|
||
"4. 订阅与支付 | 计划管理、计费续费 | Stripe/PayPal API, 定时任务",
|
||
"5. 表单与流程 | 预约、申请、多步状态机 | 后端验证, 流程引擎, 邮件/SMS",
|
||
"6. CMS管理 | 博客、FAQ、评价后台维护 | Strapi/自研 Admin, 富文本",
|
||
"7. 社区论坛 | 帖子评论、点赞、审核 | Discourse 或自建, WebSocket",
|
||
"8. 移动 App 支持 | API接口, 文件上传 | REST/GraphQL, S3 签名 URL",
|
||
"9. 安全与合规 | 防注入、速率限制、WAF | OWASP, Nginx+WAF, HTTPS",
|
||
"10. 性能与监控 | 缓存、日志、监控 | Redis, Prometheus/Grafana, ELK",
|
||
"11. 第三方集成 | 地图、邮件/SMS、政府 API | Google Maps, Twilio, 错误重试",
|
||
]
|
||
for line in backend_lines:
|
||
if y < 60:
|
||
c.showPage()
|
||
y = height - 50
|
||
c.setFont("STSong-Light", 12)
|
||
c.drawString(50, y, line)
|
||
y -= 18
|
||
|
||
# Tech stack section
|
||
if y < 100:
|
||
c.showPage()
|
||
y = height - 50
|
||
c.setFont("STSong-Light", 14)
|
||
c.drawString(50, y, "三、推荐技术栈示例")
|
||
y -= 24
|
||
|
||
c.setFont("STSong-Light", 12)
|
||
tech_lines = [
|
||
"- 后端框架:Node.js (Express/Koa) 或 Python (FastAPI/Django)",
|
||
"- 数据库:PostgreSQL + Redis 缓存 + S3 对象存储",
|
||
"- 认证:OAuth2 + JWT;RBAC",
|
||
"- 异步消息:RabbitMQ / Kafka",
|
||
"- 搜索:Elasticsearch",
|
||
"- CMS:Strapi 或 Keystone",
|
||
"- 部署:Docker + Kubernetes / AWS ECS;CI/CD",
|
||
]
|
||
for line in tech_lines:
|
||
if y < 60:
|
||
c.showPage()
|
||
y = height - 50
|
||
c.setFont("STSong-Light", 12)
|
||
c.drawString(60, y, line)
|
||
y -= 18
|
||
|
||
c.save()
|
||
|
||
file_path
|