T-104: 首批种子内容(3 scenarios + 5 projects + 2 articles),management command 录入

This commit is contained in:
ila
2026-07-06 22:25:59 +08:00
parent 6ec28c8374
commit db7dcb8f51
12 changed files with 767 additions and 7 deletions
+2 -2
View File
@@ -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`:实现基础页面框架。
## 开发环境
View File
+335
View File
@@ -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
View File
@@ -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
+4 -4
View File
@@ -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 实现基础页面框架`。
## 当前可运行内容
+87
View File
@@ -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 项目,可任意添加自定义模块
+92
View File
@@ -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 接口
+65
View File
@@ -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:暗色模式
+76
View File
@@ -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
包含完整安装流程,适合快速上手。
+86
View File
@@ -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
View File
@@ -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)。