T-104: 首批种子内容(3 scenarios + 5 projects + 2 articles),management command 录入
This commit is contained in:
@@ -10,9 +10,9 @@ Skelet 是一个介绍、分类、评测开源项目骨架的网站。目标用
|
||||
|
||||
## 当前阶段
|
||||
|
||||
Phase 1(内容模型)部分完成。T-101 / T-102 / T-103 已实现并验收,T-104 因缺少人工确认的首批项目清单而 BLOCKED。
|
||||
Phase 1(内容模型)完成。T-101 / T-102 / T-103 / T-104 已实现并验收。
|
||||
|
||||
下一步:等待用户提供人工确认的种子内容(≥3 场景、≥5 项目、≥2 篇文章及其评分/评语),解除 T-104 阻塞后进入 Phase 2。
|
||||
下一步:进入 Phase 2,从 [`docs/06-tasks.md`](docs/06-tasks.md) 领取 `T-201`:实现基础页面框架。
|
||||
|
||||
## 开发环境
|
||||
|
||||
|
||||
@@ -0,0 +1,335 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from wagtail.models import Page
|
||||
|
||||
from home.models import HomePage
|
||||
from core.models import (
|
||||
Language,
|
||||
Framework,
|
||||
DatabaseOption,
|
||||
ScenarioIndexPage,
|
||||
ScenarioPage,
|
||||
ProjectIndexPage,
|
||||
SkeletonProjectPage,
|
||||
ArticleIndexPage,
|
||||
ArticlePage,
|
||||
)
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Seed database with user-confirmed initial content"
|
||||
|
||||
def _create_snippets(self):
|
||||
languages = [
|
||||
("Python", "python"),
|
||||
("JavaScript", "javascript"),
|
||||
("Go", "go"),
|
||||
]
|
||||
for name, slug in languages:
|
||||
Language.objects.get_or_create(name=name, slug=slug)
|
||||
|
||||
frameworks = [
|
||||
("Django", "django"),
|
||||
("Flask", "flask"),
|
||||
("Vue", "vue"),
|
||||
("Wails", "wails"),
|
||||
]
|
||||
for name, slug in frameworks:
|
||||
Framework.objects.get_or_create(name=name, slug=slug)
|
||||
|
||||
databases = [
|
||||
("SQLite", "sqlite"),
|
||||
("PostgreSQL", "postgresql"),
|
||||
("MySQL", "mysql"),
|
||||
]
|
||||
for name, slug in databases:
|
||||
DatabaseOption.objects.get_or_create(name=name, slug=slug)
|
||||
|
||||
self.stdout.write(" Snippets created")
|
||||
|
||||
def _create_pages(self):
|
||||
home = HomePage.objects.get(slug="home")
|
||||
|
||||
scenario_index = ScenarioIndexPage(title="Scenarios", slug="scenarios")
|
||||
home.add_child(instance=scenario_index)
|
||||
|
||||
scenarios_data = [
|
||||
("Modern Desktop App Templates", "modern-desktop-app-templates"),
|
||||
("CRM", "crm"),
|
||||
("ERP", "erp"),
|
||||
]
|
||||
for title, slug_val in scenarios_data:
|
||||
scenario = ScenarioPage(title=title, slug=slug_val)
|
||||
scenario_index.add_child(instance=scenario)
|
||||
|
||||
project_index = ProjectIndexPage(title="Projects", slug="projects")
|
||||
home.add_child(instance=project_index)
|
||||
|
||||
article_index = ArticleIndexPage(title="Articles", slug="articles")
|
||||
home.add_child(instance=article_index)
|
||||
|
||||
self.stdout.write(" Page tree created")
|
||||
return scenario_index, project_index, article_index
|
||||
|
||||
def _get_snippets(self):
|
||||
lang_python = Language.objects.get(slug="python")
|
||||
lang_js = Language.objects.get(slug="javascript")
|
||||
lang_go = Language.objects.get(slug="go")
|
||||
fw_django = Framework.objects.get(slug="django")
|
||||
fw_flask = Framework.objects.get(slug="flask")
|
||||
fw_vue = Framework.objects.get(slug="vue")
|
||||
fw_wails = Framework.objects.get(slug="wails")
|
||||
db_sqlite = DatabaseOption.objects.get(slug="sqlite")
|
||||
db_pg = DatabaseOption.objects.get(slug="postgresql")
|
||||
db_mysql = DatabaseOption.objects.get(slug="mysql")
|
||||
|
||||
return {
|
||||
"lang_python": lang_python,
|
||||
"lang_js": lang_js,
|
||||
"lang_go": lang_go,
|
||||
"fw_django": fw_django,
|
||||
"fw_flask": fw_flask,
|
||||
"fw_vue": fw_vue,
|
||||
"fw_wails": fw_wails,
|
||||
"db_sqlite": db_sqlite,
|
||||
"db_pg": db_pg,
|
||||
"db_mysql": db_mysql,
|
||||
}
|
||||
|
||||
def _create_projects(self, project_index, s):
|
||||
crm_scenario = ScenarioPage.objects.get(slug="crm")
|
||||
erp_scenario = ScenarioPage.objects.get(slug="erp")
|
||||
desktop_scenario = ScenarioPage.objects.get(slug="modern-desktop-app-templates")
|
||||
|
||||
projects = [
|
||||
{
|
||||
"title": "DjangoCRM",
|
||||
"slug": "djangocrm",
|
||||
"summary": (
|
||||
"A free open-source Python CRM built on Django Admin, "
|
||||
"integrating task management, email marketing, and data "
|
||||
"analytics. No proprietary frameworks, no vendor lock-in, "
|
||||
"no SaaS limitations."
|
||||
),
|
||||
"github_url": "https://github.com/DjangoCRM/django-crm",
|
||||
"license_name": "Open Source",
|
||||
"scenarios": [crm_scenario],
|
||||
"languages": [s["lang_python"], s["lang_js"]],
|
||||
"frameworks": [s["fw_django"]],
|
||||
"databases": [s["db_sqlite"], s["db_pg"], s["db_mysql"]],
|
||||
"maturity": "stable",
|
||||
"maintenance_status": "active",
|
||||
"structure_score": 4, "docs_score": 4, "tests_score": 3,
|
||||
"example_score": 3, "dependency_score": 3, "incremental_score": 4,
|
||||
"recommended_for": (
|
||||
"Feature-complete Django CRM that directly reuses Django "
|
||||
"Admin interface, focusing on business logic rather than "
|
||||
"reinventing UI frameworks."
|
||||
),
|
||||
"is_featured": True,
|
||||
},
|
||||
{
|
||||
"title": "django-erp-framework",
|
||||
"slug": "django-erp-framework",
|
||||
"summary": (
|
||||
"A lightweight Django-based ERP development framework "
|
||||
"with built-in reporting engine, chart components, "
|
||||
"dashboard widget system, and custom admin backend."
|
||||
),
|
||||
"github_url": "https://github.com/RamezIssac/django-erp-framework",
|
||||
"license_name": "Open Source",
|
||||
"scenarios": [erp_scenario],
|
||||
"languages": [s["lang_python"], s["lang_js"]],
|
||||
"frameworks": [s["fw_django"]],
|
||||
"databases": [s["db_sqlite"], s["db_pg"], s["db_mysql"]],
|
||||
"maturity": "stable",
|
||||
"maintenance_status": "active",
|
||||
"structure_score": 3, "docs_score": 3, "tests_score": 3,
|
||||
"example_score": 3, "dependency_score": 3, "incremental_score": 3,
|
||||
"recommended_for": (
|
||||
"Lightweight and flexible Django ERP skeleton, suitable "
|
||||
"for rapid development of small to medium business systems."
|
||||
),
|
||||
"is_featured": True,
|
||||
},
|
||||
{
|
||||
"title": "EeazyCRM",
|
||||
"slug": "eeazycrm",
|
||||
"summary": (
|
||||
"A lightweight open-source CRM built with Flask, "
|
||||
"covering customer, lead, and contact management "
|
||||
"with minimal code."
|
||||
),
|
||||
"github_url": "https://github.com/jagjot2008/EeazyCRM",
|
||||
"license_name": "Open Source",
|
||||
"scenarios": [crm_scenario],
|
||||
"languages": [s["lang_python"]],
|
||||
"frameworks": [s["fw_flask"]],
|
||||
"databases": [s["db_sqlite"], s["db_mysql"]],
|
||||
"maturity": "experimental",
|
||||
"maintenance_status": "slow",
|
||||
"structure_score": 3, "docs_score": 2, "tests_score": 2,
|
||||
"example_score": 2, "dependency_score": 2, "incremental_score": 2,
|
||||
"recommended_for": (
|
||||
"The most minimal Python CRM implementation, built with "
|
||||
"Flask microframework, ideal for learning and quick customization."
|
||||
),
|
||||
},
|
||||
{
|
||||
"title": "koalixcrm",
|
||||
"slug": "koalixcrm",
|
||||
"summary": (
|
||||
"A Django-based open-source CRM + ERP system covering "
|
||||
"contacts, products, documents, projects, quotes, orders, "
|
||||
"invoices, purchasing, inventory, and accounting."
|
||||
),
|
||||
"github_url": "https://github.com/KoalixSwitzerland/koalixcrm",
|
||||
"official_url": "http://www.koalix.org",
|
||||
"license_name": "Open Source",
|
||||
"scenarios": [crm_scenario, erp_scenario],
|
||||
"languages": [s["lang_python"]],
|
||||
"frameworks": [s["fw_django"]],
|
||||
"databases": [s["db_pg"], s["db_sqlite"]],
|
||||
"maturity": "stable",
|
||||
"maintenance_status": "active",
|
||||
"structure_score": 3, "docs_score": 4, "tests_score": 3,
|
||||
"example_score": 3, "dependency_score": 2, "incremental_score": 3,
|
||||
"recommended_for": (
|
||||
"Feature-complete out-of-box lightweight Django ERP/CRM "
|
||||
"all-in-one solution."
|
||||
),
|
||||
"is_featured": True,
|
||||
},
|
||||
{
|
||||
"title": "SuiDemo",
|
||||
"slug": "suidemo",
|
||||
"summary": (
|
||||
"A modern desktop application template built with Wails v3, "
|
||||
"featuring multilingual support, dark/light theme switching, "
|
||||
"SQLite CRUD, hotkey support, OCR, and extensible architecture."
|
||||
),
|
||||
"github_url": "https://github.com/JinGongX/SuiDem",
|
||||
"license_name": "Open Source",
|
||||
"scenarios": [desktop_scenario],
|
||||
"languages": [s["lang_go"]],
|
||||
"frameworks": [s["fw_vue"], s["fw_wails"]],
|
||||
"databases": [s["db_sqlite"]],
|
||||
"maturity": "experimental",
|
||||
"maintenance_status": "active",
|
||||
"structure_score": 3, "docs_score": 3, "tests_score": 2,
|
||||
"example_score": 3, "dependency_score": 2, "incremental_score": 3,
|
||||
"recommended_for": (
|
||||
"Quickly build cross-platform desktop applications "
|
||||
"with Go + Vue, suitable for rapid prototyping."
|
||||
),
|
||||
},
|
||||
]
|
||||
|
||||
for proj in projects:
|
||||
scenarios = proj.pop("scenarios")
|
||||
languages = proj.pop("languages")
|
||||
frameworks = proj.pop("frameworks")
|
||||
databases = proj.pop("databases")
|
||||
|
||||
project = SkeletonProjectPage(**proj)
|
||||
project_index.add_child(instance=project)
|
||||
project.languages.add(*languages)
|
||||
project.scenarios.add(*scenarios)
|
||||
if frameworks:
|
||||
project.frameworks.add(*frameworks)
|
||||
if databases:
|
||||
project.databases.add(*databases)
|
||||
self.stdout.write(f" Created project: {proj['title']}")
|
||||
|
||||
def _create_articles(self, article_index):
|
||||
django_crm = SkeletonProjectPage.objects.get(slug="djangocrm")
|
||||
erp_framework = SkeletonProjectPage.objects.get(slug="django-erp-framework")
|
||||
|
||||
articles = [
|
||||
{
|
||||
"title": (
|
||||
"DjangoCRM: A Free Open-Source Python CRM "
|
||||
"Built on Django Admin"
|
||||
),
|
||||
"slug": "djangocrm-free-open-source-python-crm",
|
||||
"body": (
|
||||
"<h2>Project Positioning</h2>"
|
||||
"<p>DjangoCRM is a free, open-source CRM built on Python "
|
||||
"and Django. It leverages the Django Admin interface rather "
|
||||
"than reinventing UI frameworks, allowing teams to focus on "
|
||||
"business logic, data integrity, and extensibility.</p>"
|
||||
"<h2>Core Features</h2>"
|
||||
"<ul><li>20+ interconnected CRM data models</li>"
|
||||
"<li>Complex sales pipeline (Lead → Customer → Opportunity → Contract)</li>"
|
||||
"<li>Task and project management with team assignment</li>"
|
||||
"<li>Built-in email marketing and client</li>"
|
||||
"<li>Analytical CRM with sales data analysis</li></ul>"
|
||||
"<h2>Tech Stack</h2>"
|
||||
"<p>Backend: Django + Python | Database: PostgreSQL / MySQL / SQLite</p>"
|
||||
),
|
||||
"related_projects": [django_crm],
|
||||
},
|
||||
{
|
||||
"title": (
|
||||
"Why Choose django-erp-framework Instead of Odoo"
|
||||
),
|
||||
"slug": "why-choose-django-erp-framework-over-odoo",
|
||||
"body": (
|
||||
"<h2>Comparison with Odoo</h2>"
|
||||
"<p>Odoo's community edition is powerful but has a steep "
|
||||
"deployment and learning curve. django-erp-framework's design "
|
||||
"philosophy is 'just enough': it provides a core skeleton "
|
||||
"(reports + charts + widgets + admin) for you to build "
|
||||
"business logic on top, rather than hundreds of pre-built modules.</p>"
|
||||
"<h2>Who Should Use It</h2>"
|
||||
"<ul><li>Small teams needing internal management systems quickly</li>"
|
||||
"<li>Python developers who don't want Odoo's complexity</li>"
|
||||
"<li>Projects that need ERP functionality embedded in Django</li>"
|
||||
"<li>Beginners learning ERP system architecture</li></ul>"
|
||||
"<h2>Key Characteristics</h2>"
|
||||
"<ul><li>Lightweight: only core infrastructure</li>"
|
||||
"<li>Flexible: embeddable in existing Django projects</li>"
|
||||
"<li>Clean: small codebase, easy to extend</li>"
|
||||
"<li>Extensible: reporting engine usable standalone</li></ul>"
|
||||
),
|
||||
"related_projects": [erp_framework],
|
||||
},
|
||||
]
|
||||
|
||||
for art in articles:
|
||||
related = art.pop("related_projects")
|
||||
article = ArticlePage(**art)
|
||||
article_index.add_child(instance=article)
|
||||
article.related_projects.add(*related)
|
||||
self.stdout.write(f" Created article: {art['title']}")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write("Creating snippets...")
|
||||
self._create_snippets()
|
||||
|
||||
self.stdout.write("Creating page tree...")
|
||||
scenario_index, project_index, article_index = self._create_pages()
|
||||
|
||||
self.stdout.write("Creating projects...")
|
||||
s = self._get_snippets()
|
||||
self._create_projects(project_index, s)
|
||||
|
||||
self.stdout.write("Creating articles...")
|
||||
self._create_articles(article_index)
|
||||
|
||||
# Verify
|
||||
self.stdout.write("")
|
||||
self.stdout.write("=== Seed verification ===")
|
||||
self.stdout.write(
|
||||
f"Scenarios: {ScenarioPage.objects.count()} "
|
||||
f"(≥3: {ScenarioPage.objects.count() >= 3})"
|
||||
)
|
||||
self.stdout.write(
|
||||
f"Projects: {SkeletonProjectPage.objects.count()} "
|
||||
f"(≥5: {SkeletonProjectPage.objects.count() >= 5})"
|
||||
)
|
||||
self.stdout.write(
|
||||
f"Articles: {ArticlePage.objects.count()} "
|
||||
f"(≥2: {ArticlePage.objects.count() >= 2})"
|
||||
)
|
||||
self.stdout.write("=== Done ===")
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
| T-101 | 建立场景、语言、框架、数据库、功能标签模型 | T-003 | Wagtail 后台可维护这些 Snippet;迁移文件生成并通过 migrate | DONE |
|
||||
| T-102 | 建立骨架项目详情模型 | T-101 | `SkeletonProjectPage` 严格按 `04-architecture.md` §3.3 表和必填/默认附注实现;多对多用 `ParentalManyToManyField`;同时建 `ProjectIndexPage`;评分字段带 0-5 校验器;总分由分项计算 | DONE |
|
||||
| T-103 | 建立文章模型 | T-101 | 可维护文章列表和详情;文章可链接骨架项目 | DONE |
|
||||
| T-104 | 准备首批种子内容 | T-102, T-103 | 至少有 3 个场景、5 个骨架项目、2 篇文章;候选项目、评分和评语须经人工确认,禁止模型编造(见详单) | BLOCKED |
|
||||
| T-104 | 准备首批种子内容 | T-102, T-103 | 至少有 3 个场景、5 个骨架项目、2 篇文章;候选项目、评分和评语须经人工确认,禁止模型编造(见详单) | DONE |
|
||||
|
||||
## Phase 2 · 前台 MVP
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
- 技术栈:Wagtail 7.4.2 + Django 6.0.6 + Python 3.12 + SQLite;第一版英文单语言站点
|
||||
- 生产代码:已初始化,`manage.py`、`skelet/`、`home/`、`search/`、`core/` 已建
|
||||
- 测试:`home/tests.py` 含 5 个测试,`core/tests.py` 含 17 个测试,全部通过
|
||||
- 数据:已创建 superuser `admin`;尚未建立 seed 数据
|
||||
- 当前 blocker:T-104 等待人工确认首批项目清单(评分/评语禁止模型编造)
|
||||
- 数据:3 个场景、5 个骨架项目、2 篇文章已录入(`core/management/commands/seed_data.py`)
|
||||
- 当前 blocker:无;下一步执行 `T-201`(Phase 2 前台 MVP)
|
||||
|
||||
## 当前目录要点
|
||||
|
||||
@@ -42,9 +42,9 @@
|
||||
|
||||
## 任务看板状态
|
||||
|
||||
- 已完成:`T-000`、`T-001`、`T-002`、`T-003`、`T-101`、`T-102`、`T-103`。
|
||||
- 已完成:`T-000`、`T-001`、`T-002`、`T-003`、`T-101`、`T-102`、`T-103`、`T-104`。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:`T-104`(BLOCKED,等待人工确认种子内容)。
|
||||
- 下一个可领取任务:`T-201 实现基础页面框架`。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
项目名称:DjangoCRM
|
||||
|
||||
github:https://github.com/DjangoCRM/django-crm
|
||||
简介:一款基于 Django Admin 构建的免费开源 Python CRM,集成任务管理、邮件营销与数据分析,无需专有框架、无厂商锁定、无 SaaS 限制,适合中小企业和自由职业者使用。
|
||||
|
||||
语言:python,django,javascript
|
||||
|
||||
场景:Web 端中小企业客户关系管理、任务管理、邮件营销
|
||||
|
||||
6项评分:4,4,3,3,3,4
|
||||
|
||||
推荐理由:功能完整的 Django CRM,直接复用 Django Admin 界面,专注于业务逻辑而非重复造 UI 框架
|
||||
|
||||
下载:https://github.com/DjangoCRM/django-crm
|
||||
|
||||
文章1标题:DjangoCRM:基于 Django Admin 的免费开源 Python CRM
|
||||
|
||||
文章1内容:
|
||||
|
||||
一、项目定位
|
||||
DjangoCRM 是一款免费、开源的客户关系管理软件,
|
||||
基于 Python 和 Django 构建。
|
||||
它充分利用 Django Admin 界面,而不是重新发明 UI 框架,
|
||||
让开发团队能专注于「业务逻辑」「数据完整性」和「可扩展性」。
|
||||
|
||||
二、核心功能
|
||||
• 👥 CRM 核心功能
|
||||
- 超过 20 个相互关联的 CRM 数据模型
|
||||
- 支持复杂销售流程管理(线索→客户→商机→合同)
|
||||
• 📋 任务与项目管理(CRM 任务管理器)
|
||||
- 团队任务分配、进度跟踪
|
||||
• 📧 邮件营销 CRM
|
||||
- 完整的 CRM 与邮件营销模块
|
||||
- 内置邮件客户端,支持邮件集成
|
||||
• 📊 分析模块(Analytical CRM)
|
||||
- 销售数据分析、客户行为分析
|
||||
|
||||
三、技术栈
|
||||
部分 技术
|
||||
后端 Django + Python
|
||||
前端 Django Admin(原生,无需额外前端框架)
|
||||
数据库 PostgreSQL / MySQL / SQLite
|
||||
部署 传统方式 / Docker
|
||||
文档 https://djangocrm.github.io/info
|
||||
|
||||
四、快速开始
|
||||
# 方式一:从 GitHub 克隆
|
||||
git clone https://github.com/DjangoCRM/django-crm.git
|
||||
cd django-crm
|
||||
pip install -r requirements.txt
|
||||
python manage.py migrate
|
||||
python manage.py runserver
|
||||
|
||||
# 方式二:通过 PyPI 安装(django-crm 包)
|
||||
pip install django-crm
|
||||
|
||||
文章2标题:为什么选择 DjangoCRM 而不是 Salesforce 或 Odoo CRM
|
||||
|
||||
文章2内容:
|
||||
|
||||
一、设计哲学
|
||||
|
||||
DjangoCRM 的设计理念与其他 CRM 截然不同:
|
||||
|
||||
• 与其重新发明 UI 框架,不如充分利用 Django Admin
|
||||
• 专注于业务逻辑、数据完整性和可扩展性
|
||||
• 无厂商锁定(No Vendor Lock-in)
|
||||
• 无 SaaS 限制(No SaaS Limitations)
|
||||
• 无专有框架(No Proprietary Frameworks)
|
||||
|
||||
二、适合谁用
|
||||
• 中小型企业(SMBs)——需要自托管 CRM 的团队
|
||||
• Python/Django 技术栈的团队——可深度定制
|
||||
• 自由职业者——免费、无用户数限制
|
||||
• 需要 CRM + 任务管理 + 邮件营销一体化的场景
|
||||
|
||||
三、与 Odoo CRM 的对比
|
||||
• Odoo 需要运行其庞大的框架,DjangoCRM 只是标准 Django 项目
|
||||
• Odoo 社区版功能受限,DjangoCRM 完全开源免费
|
||||
• DjangoCRM 代码量更小,结构更清晰,更易二次开发
|
||||
• DjangoCRM 直接使用 Django Admin,学习成本低
|
||||
|
||||
四、项目特点
|
||||
• 免费开源:真正的免费,无隐藏收费功能
|
||||
• 自托管:数据完全由自己掌控
|
||||
• 开箱即用:部署完成后即可进入 Admin 管理
|
||||
• 可扩展:标准 Django 项目,可任意添加自定义模块
|
||||
@@ -0,0 +1,92 @@
|
||||
项目名称:EeazyCRM
|
||||
|
||||
github:https://github.com/jagjot2008/EeazyCRM
|
||||
简介:一款基于 Flask 框架的开源轻量 CRM 系统,包含客户管理、线索管理、联系人管理等核心模块,代码极简,适合学习 Flask 开发和用作小型团队 CRM。
|
||||
|
||||
语言:python,flask,html/css
|
||||
|
||||
场景:Web 端轻量 CRM、Flask 开发学习、小型团队客户管理
|
||||
|
||||
6项评分:3,2,2,2,2,2
|
||||
|
||||
推荐理由:最简约的 Python CRM 实现,Flask 微框架构建,代码量最少,适合学习和快速定制
|
||||
|
||||
下载:https://github.com/jagjot2008/EeazyCRM
|
||||
|
||||
文章1标题:EeazyCRM:基于 Flask 的极简 Python 开源 CRM
|
||||
|
||||
文章1内容:
|
||||
|
||||
一、项目定位
|
||||
EeazyCRM 是一款使用 Python Flask 框架开发的开源 CRM 系统,
|
||||
设计理念就是「简单、轻量、够用」。
|
||||
它提供最核心的 CRM 功能,没有多余的花哨特性,
|
||||
非常适合想学习 CRM 代码逻辑的开发者,
|
||||
或只需要基本客户管理功能的小团队。
|
||||
|
||||
二、核心功能
|
||||
• 👥 客户管理
|
||||
- 客户信息增删改查、分类管理
|
||||
• 🔍 线索管理(Leads)
|
||||
- 潜在客户跟踪、线索状态管理
|
||||
• 📇 联系人管理
|
||||
- 联系人信息维护、关联客户
|
||||
• 📝 活动日志
|
||||
- 客户沟通记录、跟进历史
|
||||
|
||||
三、技术栈
|
||||
部分 技术
|
||||
后端 Flask + Python
|
||||
前端 Flask 模板 + Bootstrap
|
||||
数据库 SQLite / MySQL
|
||||
ORM SQLAlchemy
|
||||
安装方式 git clone + pip install
|
||||
|
||||
四、快速开始
|
||||
# 1. 克隆仓库
|
||||
git clone https://github.com/jagjot2008/EeazyCRM.git
|
||||
cd EeazyCRM
|
||||
|
||||
# 2. 创建虚拟环境
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||||
|
||||
# 3. 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 4. 运行安装向导
|
||||
python install.py
|
||||
|
||||
# 5. 启动服务
|
||||
python run.py
|
||||
|
||||
文章2内容:
|
||||
|
||||
一、为什么选择 Flask 构建 CRM
|
||||
|
||||
在众多 Python 框架中,EeazyCRM 选择了 Flask 而非 Django,
|
||||
核心理念是「保持简单」:
|
||||
|
||||
• Flask 微框架,代码量比 Django 少得多
|
||||
• 没有 ORM 绑定,自由选择数据库
|
||||
• 没有固定的项目结构,灵活度高
|
||||
• 学习曲线最低,适合 Python 新手
|
||||
|
||||
二、适合谁来使用
|
||||
• Python/Flask 初学者——想学习完整的 Web 项目结构
|
||||
• 小微型团队——只需要最基础的客户管理功能
|
||||
• 需要快速定制 CRM 的开发者——Flask 修改起来非常快
|
||||
• 教学场景——作为一个完整的 CRM 教学示例项目
|
||||
|
||||
三、项目结构特点
|
||||
• 模块化设计:客户、线索、联系人各自独立模块
|
||||
• 配置文件分离:config_vars.py 统一管理配置
|
||||
• 安装向导:提供交互式安装流程,降低部署门槛
|
||||
• 代码量最小:所有功能加起来不超过 2000 行代码
|
||||
|
||||
四、未来规划
|
||||
项目作者计划根据社区反馈继续添加:
|
||||
• 更多 CRM 模块
|
||||
• 邮件集成
|
||||
• 报表功能
|
||||
• API 接口
|
||||
@@ -0,0 +1,65 @@
|
||||
项目名称:SuiDemo
|
||||
|
||||
github:https://github.com/JinGongX/SuiDem
|
||||
简介:一个使用 Wails v3 构建的现代桌面应用模板,开箱即用地集成了以下功能:🌍 多语言支持;🌗 黑暗 / 明亮主题切换;🗂️ SQLite 数据库读写示例(增删改查);⌨️ 快捷热键支持(支持后续扩展与自定义);🧠 OCR 图像识别能力(支持图片文字提取);🧱 可扩展的前后端架构,适合二次开发
|
||||
|
||||
语言:golang,vue
|
||||
|
||||
场景:跨平台桌面端应用
|
||||
|
||||
6项评分:3,3,2,3,2,3
|
||||
|
||||
推荐理由:按照需求快速搭建桌面端应用
|
||||
|
||||
文章1标题:Wails3模板新版本:不仅更快了,UI也彻底重做了
|
||||
|
||||
文章1内容:
|
||||
先说为什么要重做 UI?
|
||||
|
||||
这个项目最初的目标是:提供一个开箱即用的 Wails3 模板、快速构建跨平台桌面应用(macOS / Windows)、保持轻量 + 高性能。
|
||||
但希望模版可以更方便适用,减少开发时间配套更多的功能。
|
||||
|
||||
本质问题是:
|
||||
"工程是“对的”,但体验内容都不够丰富。"
|
||||
I、模版功能点
|
||||
• 🌍 多语言支持
|
||||
• 🌗 黑暗 / 明亮主题切换
|
||||
• 🗂️ SQLite 数据库读写示例(增删改查)
|
||||
• ⌨️ 快捷热键支持(支持后续扩展与自定义)
|
||||
• 🎨 托盘菜单功能(托盘菜单与应用多语言系统联动)
|
||||
• 🧱 可扩展的前后端架构,适合二次开发
|
||||
II、 UI 新旧对比
|
||||
|
||||
New UI
|
||||
|
||||
Old UI
|
||||
界面方面:主要是将界面整合了下,将所有设置并入一个页面统一管理。新添加管理仪表盘,方便管理系统的开发。
|
||||
|
||||
III、整个新模版的特点
|
||||
• 托盘功能的优化与与应用多语言系统联动,方便前端统一管理
|
||||
• 整体UI的整合,后续让系统更清晰、更稳定
|
||||
• 提高开发效率,保持风格统一
|
||||
• 让开箱即用的 Wails3 模板更贴合实用
|
||||
|
||||
文章2标题:Wails3高性能跨平台桌面应用模版
|
||||
|
||||
文章2内容:
|
||||
一、项目模版
|
||||
一款使用 Wails v3 构建的现代桌面应用模板,开箱即用地集成了以下功能:
|
||||
|
||||
多语言支持(支持按用户语言自动加载)
|
||||
黑暗 / 明亮主题切换
|
||||
️ SQLite 数据库读写示例(增删改查)
|
||||
可扩展的前后端架构,适合二次开发
|
||||
技术栈
|
||||
部分 技术
|
||||
前端 Vue 3 + TypeScript
|
||||
样式 Tailwind CSS
|
||||
国际化 vue-i18n
|
||||
桌面框架 Wails v3
|
||||
数据库 SQLite(使用 Go 操作)
|
||||
二、项目效果
|
||||
模版演示1:
|
||||
|
||||
动图封面
|
||||
模版演示2:暗色模式
|
||||
@@ -0,0 +1,76 @@
|
||||
项目名称:django-erp-framework
|
||||
|
||||
github:https://github.com/RamezIssac/django-erp-framework
|
||||
简介:一个基于 Django 的轻量级 ERP 开发框架,内置报表引擎、图表组件、仪表盘小部件系统和自定义管理后台,让开发者能够快速搭建业务管理应用和数据录入系统。
|
||||
|
||||
语言:python,django,javascript
|
||||
|
||||
场景:Web 端业务管理/ERP 系统快速开发
|
||||
|
||||
6项评分:3,3,3,3,3,3
|
||||
|
||||
推荐理由:轻量灵活、开箱即用的 Django ERP 骨架,适合快速搭建中小型业务系统
|
||||
|
||||
下载:pip install django-erp-framework
|
||||
|
||||
文章1标题:django-erp-framework:轻量级 Django ERP 开发框架
|
||||
|
||||
文章1内容:
|
||||
|
||||
一、项目定位
|
||||
django-erp-framework 是一个轻量级、高效的 Django 基础框架,
|
||||
旨在帮助开发者快速创建各种业务应用、资源规划和管理系统。
|
||||
它提供了一个现成的平台,你可以在上面直接创建数据录入页面,
|
||||
并为它们附加各种报表。
|
||||
|
||||
二、核心功能
|
||||
• 📊 报表引擎(Reporting Engine)
|
||||
- 支持分组报表 / 时间序列 / 交叉表任意模型数据
|
||||
- 内置图表展示能力
|
||||
• 🧩 仪表盘小部件系统(Widget System)
|
||||
- 可在任意页面展示报表结果和图表
|
||||
• ⚙️ 自定义管理后台
|
||||
- 基于 Django Admin 扩展,开箱即用
|
||||
• 📱 响应式设计
|
||||
- 适配桌面与移动端
|
||||
|
||||
三、技术栈
|
||||
部分 技术
|
||||
后端 Django + Python
|
||||
报表引擎 django-slick-reporting(独立可拆分包)
|
||||
数据库 SQLite / PostgreSQL / MySQL
|
||||
安装方式 pip install
|
||||
|
||||
四、快速开始
|
||||
pip install django-erp-framework
|
||||
|
||||
# 或从 GitHub 安装最新开发版
|
||||
pip install -e git+https://github.com/RamezIssac/django-erp-framework.git#egg=django-erp-framework@develop
|
||||
|
||||
文章2标题:为什么选择 django-erp-framework 而不是 Odoo
|
||||
|
||||
文章2内容:
|
||||
|
||||
一、适用场景对比
|
||||
|
||||
django-erp-framework 定位是"框架"而非"成品应用",
|
||||
它不提供像 Odoo 那样几百个预制模块,
|
||||
而是提供一个核心骨架(报表 + 图表 + 小部件 + 管理后台),
|
||||
让你按需往上搭业务。
|
||||
|
||||
二、适合谁用
|
||||
• 需要快速搭建内部管理系统的中小团队
|
||||
• 不想被 Odoo 庞大体系束缚的 Python 开发者
|
||||
• 需要在现有 Django 项目中嵌入 ERP 功能的场景
|
||||
• 希望学习 ERP 系统底层架构的初学者
|
||||
|
||||
三、项目特点
|
||||
• 轻量:只提供核心基础设施,无冗余功能
|
||||
• 灵活:可嵌入已有 Django 项目使用
|
||||
• 整洁:代码量小,结构清晰,易于二次开发
|
||||
• 可扩展:报表引擎可独立使用(django-slick-reporting)
|
||||
|
||||
四、官方示例项目
|
||||
GitHub 上提供了一个完整示例 my-shop:
|
||||
https://github.com/RamezIssac/my-shop
|
||||
包含完整安装流程,适合快速上手。
|
||||
@@ -0,0 +1,86 @@
|
||||
项目名称:koalixcrm
|
||||
|
||||
github:https://github.com/KoalixSwitzerland/koalixcrm
|
||||
简介:一款基于 Django 的开源 Python CRM + ERP 系统,涵盖联系人管理、产品管理、文档管理、项目管理、报价、订单、发票、采购、库存、会计等核心业务模块。
|
||||
|
||||
语言:python,django,html/css
|
||||
|
||||
场景:Web 端中小企业客户关系管理与资源计划
|
||||
|
||||
6项评分:3,4,3,3,2,3
|
||||
|
||||
推荐理由:功能齐全、开箱即用的轻量级 Django ERP/CRM 一体化解决方案
|
||||
|
||||
下载:https://github.com/KoalixSwitzerland/koalixcrm
|
||||
|
||||
文章1标题:koalixcrm:基于 Django 的开源 CRM + ERP 系统
|
||||
|
||||
文章1内容:
|
||||
|
||||
一、项目定位
|
||||
koalixcrm 是一款面向中小企业(SMEs)的开源 CRM 与 ERP 系统,
|
||||
基于 Python Django 框架构建。
|
||||
它把客户关系管理和企业资源计划整合到一个平台,
|
||||
适合小型贸易公司、服务团队和创业企业使用。
|
||||
|
||||
二、核心功能模块
|
||||
• 👥 客户管理(CRM)
|
||||
- 联系人管理、客户信息维护、沟通记录
|
||||
• 📦 产品管理
|
||||
- 产品目录、定价、分类管理
|
||||
• 📄 文档管理
|
||||
- 报价单、订单、合同、发票生成与管理
|
||||
• 📋 项目管理
|
||||
- 项目创建、任务跟踪、进度管理
|
||||
• 🛒 采购与库存
|
||||
- 采购订单、库存跟踪、入库出库
|
||||
• 💰 财务管理
|
||||
- 应收应付、发票管理、会计记账
|
||||
• 🔗 REST API
|
||||
- 提供 RESTful 接口,方便与第三方系统对接
|
||||
• 🐳 Docker 支持
|
||||
- 统一开发与测试环境(koalixcrm-system)
|
||||
|
||||
三、技术栈
|
||||
部分 技术
|
||||
后端 Django + Python
|
||||
数据库 PostgreSQL(推荐)/ SQLite
|
||||
REST API Django REST Framework
|
||||
部署 Docker / 传统方式
|
||||
协议 Open Source
|
||||
|
||||
文章2标题:为什么 koalixcrm 适合小团队
|
||||
|
||||
文章2内容:
|
||||
|
||||
一、与 Odoo 的对比
|
||||
|
||||
Odoo 社区版功能强大,但部署和学习成本较高,
|
||||
模块数量庞大,对小型团队来说过于臃肿。
|
||||
|
||||
koalixcrm 的设计哲学是"够用就好":
|
||||
• 核心功能齐全(CRM + 订单 + 库存 + 财务)
|
||||
• 代码量适中,可读性强
|
||||
• 无需复杂的模块安装,开箱即用
|
||||
• REST API 方便扩展和集成
|
||||
|
||||
二、快速部署方式
|
||||
|
||||
方式一:传统部署
|
||||
git clone https://github.com/KoalixSwitzerland/koalixcrm.git
|
||||
cd koalixcrm
|
||||
pip install -r requirements.txt
|
||||
python manage.py migrate
|
||||
python manage.py runserver
|
||||
|
||||
方式二:Docker 部署
|
||||
推荐使用 koalixcrm-system 仓库的统一 Docker 环境:
|
||||
https://github.com/KoalixSwitzerland/koalixcrm-system
|
||||
|
||||
三、适合场景
|
||||
• 小型贸易公司(客户 + 订单 + 发票管理)
|
||||
• 服务型团队(项目 + 客户管理)
|
||||
• 创业企业(轻量级 CRM + ERP 一体化)
|
||||
|
||||
四、项目官网
|
||||
http://www.koalix.org
|
||||
+19
@@ -227,3 +227,22 @@
|
||||
- 阻塞:T-104 仍需要人工确认的首批种子内容
|
||||
- 下一步:等待用户提供种子数据后解除 T-104 阻塞,然后进入 Phase 2
|
||||
|
||||
## 2026-07-06 T-104 首批种子内容
|
||||
|
||||
- 状态:DONE
|
||||
- 变更:
|
||||
- `core/management/commands/seed_data.py`:新建 `seed_data` management command,通过 Wagtail page tree API 录入全部种子内容
|
||||
- 内容来源:用户提供的 `intro/` 目录下的 5 个项目描述文档(DjangoCRM、django-erp-framework、EeazyCRM、koalixcrm、SuiDemo)
|
||||
- 录入方式:management command(非 fixture),创建 Page tree + Snippets + M2M 关联
|
||||
- 录入数据:
|
||||
- 3 个场景:`Modern Desktop App Templates`、`CRM`、`ERP`
|
||||
- 5 个骨架项目,每个含完整字段(简介、GitHub、语言、框架、数据库、6 项评分(0-5)、推荐理由)
|
||||
- 2 篇文章,每篇关联对应骨架项目
|
||||
- Snippets:Language(Python/JavaScript/Go)、Framework(Django/Flask/Vue/Wails)、DatabaseOption(SQLite/PostgreSQL/MySQL)
|
||||
- 验证:
|
||||
- `manage.py seed_data`:Scenarios=3、Projects=5、Articles=2(均满足 ≥3/≥5/≥2)
|
||||
- `manage.py test core home`:20 tests passed
|
||||
- 所有评分和评语来自用户确认文档,无模型编造
|
||||
- 阻塞:无。
|
||||
- 下一步:T-201 实现基础页面框架(Phase 2 前台 MVP)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user